`
ze_nana
  • 浏览: 52261 次
社区版块
存档分类
最新评论

定位(2):选择最好的provider

 
阅读更多

1.获取最佳的Location Provider

GPS    NETWORK    PASSIVE

 

 

在AndroidManifest.xml中声明权限:

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_ACOARSE_LOCATION"/>

 

 activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
    <Button 
    	android:id="@+id/ScanProvidersButton"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:text="测试当前设备的Providers"/>
    <Button 
    	android:id="@+id/bestProviderButton"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:text="最好的Provider"/>
</LinearLayout>

 

 Criteria:可以设置一系列的查询条件,用于查询当前设备中符合条件的Location Provider

具体参看android 帮助文档http://developer.android.com/reference/android/location/Criteria.html

 

import java.util.Iterator;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
	private Button scanProvider = null;
	private Button bestProvider = null;
	private LocationManager locationManager = null;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        locationManager = (LocationManager)MainActivity.this.getSystemService(Context.LOCATION_SERVICE);
        scanProvider = (Button)findViewById(R.id.ScanProvidersButton);
        bestProvider = (Button)findViewById(R.id.bestProviderButton);
        
        scanProvider.setOnClickListener(new providerOnClickListener());  
        bestProvider.setOnClickListener(new bestproviderOnClickListener());
    }
    
    private class providerOnClickListener implements OnClickListener{
    	@Override
		public void onClick(View arg0) {
			//得到所有的provider,返回的是一个存放String的List
			List<String> providers = locationManager.getAllProviders();
			System.out.println("providers:");
			for(Iterator<String> it = providers.iterator();it.hasNext();){
				String provider = (String)it.next();
				System.out.println("============="+provider);
			}
			
		}
    	
    }
    
    private class bestproviderOnClickListener implements OnClickListener{
    	@Override
		public void onClick(View arg0) {
			Criteria criteria = new Criteria();
			//设置查找最好的provider的过滤条件
			criteria.setAccuracy(Criteria.ACCURACY_FINE);
			criteria.setSpeedRequired(false);
			criteria.setCostAllowed(false);
			//获得最好的provider,第二个参数表示是否考虑provider可用
			String provider = locationManager.getBestProvider(criteria, false);
			System.out.println("best provider ---> "+provider);
			
			
		}
    	
    }
}

  

点击第一个按钮,打印出内容:

 


 
 

点击第二个按钮,打印出内容:

 

 

 

  • 大小: 2.5 KB
分享到:
评论

相关推荐

    android network_provider

    在Android系统中,网络提供者(Network Provider)是Android定位服务的一种方式,它主要依赖于移动数据网络(如GSM、CDMA、LTE等)来获取设备的位置信息。本项目"android network_provider"是一个在Eclipse环境下...

    android中Content Provider

    2. **实现ContentProvider类**:自定义的Content Provider需要继承自`ContentProvider`,并实现其关键方法: - `onCreate()`: 初始化工作,通常用于创建数据库或设置初始状态。 - `query(Uri uri, String[] ...

    content_provider_demo

    - Uri是Content Provider中的关键标识,用于定位特定的数据。`UriMatcher`是一个工具类,帮助解析Uri并返回对应的操作代码,简化了Uri的处理。 3. **CursorLoader** - CursorLoader是AsyncTaskLoader的一个子类,...

    Xcode8运行时报错,缺少FileProvider.framework文件

    2. **定位报错路径**:根据Xcode报错信息,找到具体缺失FileProvider.framework的路径。这通常会在项目的"Linked Frameworks and Libraries"部分显示。 3. **复制框架**:将解压后的FileProvider.framework文件复制...

    junit-dataprovider-1.11.0.zip

    2. **易于使用**:即使对TestNG不熟悉的开发者,也能快速上手Junit Dataprovider,因为它与原生的JUnit API保持了高度的兼容性。 3. **丰富的配置选项**:Junit Dataprovider支持多种配置,如设置执行顺序、跳过失败...

    LocationTracker:使用 Fused provider 和 GoogleMap 跟踪位置

    使用 Fused provider 和 GoogleMap 跟踪位置 目标 本 Android 教程将引导您使用 Android 位置 API 和 Google 地图服务创建位置跟踪器。 这主要处理两个方面,使用位置 API 不断获取用户位置并在 GoogleMap 中显示...

    android基于Gps 定位和基站定位获取经纬度

    在Android平台上,获取设备位置信息是一项关键功能,通常可以通过GPS(全球定位系统)和基站定位两种方式实现。本文将深入探讨这两种方法...结合实际的项目需求,开发者可以灵活选择定位策略,为用户提供更优质的服务。

    百度地图+当前定位

    2. 设置定位参数:可以设置定位的最小更新距离和时间,以及选择定位提供者(如GPS)。 3. 请求定位更新:调用LocationManager的requestLocationUpdates方法,传入LocationListener,当位置发生变化时,该监听器会被...

    Android版百度定位、腾讯定位、高德定位三者混合

    在Android中,通常使用`LocationManager`与`LocationProvider`接口进行定位操作。 ### 2. 混合定位的优势 - **提高定位成功率**:单一的定位服务可能在某些环境下表现不佳,例如室内、高楼密集区。混合定位可以利用...

    Android的三种定位方式

    此外,Android系统提供了 fused location provider(融合定位服务),这是一个更高级的定位API,它能智能地管理不同的定位源,自动选择最优的定位方式。开发者可以使用`FusedLocationProviderClient`来获取更加省电...

    通过Criteria获得LocationProvider.zip

    这个压缩包“通过Criteria获得LocationProvider.zip”包含的代码示例,旨在教你如何有效地利用Android的Criteria类来选择最适合的LocationProvider。Criteria类是Android API提供的一种工具,用于根据特定的需求筛选...

    android 仿美团城市定位选择

    在Android开发中,实现“仿美团城市定位选择”的功能是一项常见的需求,这涉及到地理定位、UI设计以及数据管理等多个方面。下面将详细讲解这个过程中的关键知识点。 首先,我们需要了解地理定位的基础。在Android中...

    Easy APNs Provider -iOS:Mac 推送测试工具.zip

    3. **故障排查**:如果用户反馈推送通知出现问题,开发者可以使用此工具模拟问题环境进行测试和定位问题。 4. **性能优化**:通过大规模的推送测试,可以评估应用在大量推送消息下的性能,优化通知的发送效率。 ##...

    android 简单定位实现

    3. **选择定位Provider** `LocationManager`提供了多种定位提供者,如`GPS_PROVIDER`和`NETWORK_PROVIDER`。根据需求,你可以选择一个或多个提供者: ```java String provider = locationManager....

    android\手机定位

    Google Play服务中的Fused Location Provider是推荐的定位API,它优化了电源效率,能根据设备状态选择最佳定位源。使用`FusedLocationProviderClient`可以更方便地获取位置。 5. 许可证: 自Android 6.0(API级别...

    查看android.provider包中的uri内容

    在Android开发中,`android.provider`包是系统提供的一个核心包,主要用于与系统的各种内容提供者(Content Provider)进行交互。这些内容提供者是Android系统数据共享的关键组件,它们允许应用访问并操作如联系人、...

    android 基站、WIFI、GPS定位集合【源码】

    - **集成**:在Android应用中,可以创建一个`LocationManager`实例,通过`requestLocationUpdates()`方法订阅定位更新,选择合适的定位提供者(如`LocationManager.GPS_PROVIDER`或`LocationManager.NETWORK_...

    android gps定位

    在Android系统中,GPS(全球...总结起来,Android的GPS定位涉及到了`LocationManager`、不同定位提供者的选择以及权限管理等多个方面。理解并熟练运用这些知识点,可以帮助开发者创建出高效、用户体验优秀的定位应用。

    android后台服务定位

    除了原生的LocationManager,还可以使用Google Play服务中的Fused Location Provider API,它能更智能地管理定位服务,提高定位效率和准确性。 综上所述,Android后台服务定位涉及多个层次的知识,包括服务的创建与...

Global site tag (gtag.js) - Google Analytics