使用Criteria确定android location provider

来源:互联网 发布:cad软件安装教程 编辑:程序博客网 时间:2024/05/21 18:38

转自:http://marshal.easymorse.com/archives/2528

android location provider有两个:

  • LocationManager.GPS_PROVIDER:GPS,精度比较高,但是慢而且消耗电力,而且可能因为天气原因或者障碍物而无法获取卫星信息,另外设备可能没有GPS模块;
  • LocationManager.NETWORK_PROVIDER:通过网络获取定位信息,精度低,耗电少,获取信息速度较快,不依赖GPS模块。

为了程序的通用性,希望动态选择location provider。对android通过Location API显示地址信息做了个别改动,可以看到使用了gps定位,精度较高:

image

这里使用到了Criteria,可根据当前设备情况自动选择哪种location provider。见:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

Criteria criteria = new Criteria(); 
criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置为最大精度 
criteria.setAltitudeRequired(false);//不要求海拔信息 
criteria.setBearingRequired(false);//不要求方位信息 
criteria.setCostAllowed(true);//是否允许付费 
criteria.setPowerRequirement(Criteria.POWER_LOW);//对电量的要求

location = locationManager 
        .getLastKnownLocation(locationManager.getBestProvider(criteria, true));

 

原来的写法很简单:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

location=locationManager.getLastKnownLocation(LocationManager.NETWOR

原创粉丝点击