使用Criteria确定android location provider

android location provider有两个:

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

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

 

这里使用到了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));


更多相关文章

  1. webrtc的音频处理模块apm( audio processing)下载与编译出libweb
  2. Android(安卓)源码环境搭建及编译
  3. Android开发--WIFI实现
  4. Android(安卓)开发规范
  5. Android(安卓)Dialog 对话框
  6. android编译时如何决定一个APK等Module是否被自动编译到system.i
  7. [Android(安卓)Pro] Android(安卓)studio jni中调用Log输出调试
  8. Android登录Web以及登录保持和cookie的使用方法
  9. Android(安卓)SELinux 一个编译错误

随机推荐

  1. 解决Viewpager满屏不能自适应填充内容的
  2. Android(安卓)SQLite数据库版本升级原理
  3. android 监听EditText输入字符长度
  4. Android镜像文件ramdisk.img,system.img,us
  5. Ubuntu 16.04 LTS 编译 Android(安卓)7.1
  6. 一步一坑学android之禁用Appt2(andriod st
  7. Android开发笔记(一百一十七)app省电方略
  8. 【实践】客户端JSBridge实现文档
  9. Android开发之非Activity类型的Context启
  10. android 4.4以上实现沉浸式状态栏