关于Android中的位置服务解读

一提到位置或者定位,一般的开发者会第一时间百度地图和高德。这么做其实把自己仅仅当成了一个Api caller。还是细细了解一下系统的关于位置的架构比较好。下面开始细细品味。

不说第三方定位,系统原生带有位置提供者相关的API有三种:

提供者 描述
NETWORK_PROVIDER GMS或者手机制造商,原生手机不装GMS是为空的。装了GMS会出现“Google 位置信息服务”;
GPS_PROVIDER 手机GPS硬件,硬件有这个模块一般都支持,注意室内是获取不了的
PASSIVE_PROVIDER 暂未了解
FUSED_PROVIDER 隐藏了,被GMS私用

关于设置中位置三种选项分别为:
准确度高:使用 GPS、WLAN、移动网络和传感器来获取最准确的位置信息。使用 Google 位置信息服务更快速、更准确地确定您手机的大致位置。
耗电量低:使用耗电量较低的数据来源(如 WLAN 和移动网络)。使用 Google 位置信息服务更快速、更准确地确定您手机的大致位置。
仅限设备:仅使用 GPS(不使用 Google 位置信息服务)来提供位置信息。这种模式判断手机大致位置的速度可能比较慢,而且耗电量也可能较大。

再说一个GNSS,这个是一个新技术(像是支付行业中的聚合支付,将多种支付方式进行汇总,这里是将多国定位卫星,以前只是使用GPS,现在同时使用了,GPS北斗等等),但是应用开发者不需要关注,它已经被封装到了GPS_PROVIDER,应用程序开发不需要为"GNSS"进行特别的考虑。

Google 位置信息服务

为什么原生手机装了GMS,开发者就可以获取到NETWORK_PROVIDER的呢?就是这个「Google 位置信息服务」起得作用,具体是哪个包呢?

com.android.location.service.FusedLocationProvider com.android.location.service.v3.NetworkLocationProvider

模拟定位ACCESS_MOCK_LOCATION

这个是Android提供了一个为了模拟位置的接口,只在开发者选项中提供,这个接口可以模拟所有的PROVIDER,直接向系统接口写入经纬度信息,系统就会将此信息返回给需要的App。

NETWORK_PROVIDER

网络定位都是谁提供的呢?国际上一个是Google提供,国内一般都是使用百度或者高德,OEM厂家需要将其内置到ROM中。
对于MIUI华为等

com.baidu.map.locationcom.amap.android.locationcom.xiaomi.metoknlpcom.qualcomm.location.nlp.NlpProxyServicecom.amap.android.ams

这方面资料很少,因为有这个需求的人很少。大厂ROM已经做了,小厂的CPU厂家也找了两大地图定位厂家合作了,如果你是一个个人玩家,就需要自己去找到这些网络定位提供者。

应用层定位SDK

最后再说一下应用层定位SDK,上面都是framwork层的标准Api的位置系统,无论提供者是谁,App只要按照标准Api就可以取到位置。而国内App大多数会使用应用层的百度或者高德位置SDK,这个也在应用层级别提供了"NETWORK_PROVIDER",换句话说系统在不断的搜索周边的WiFi来定位,这些SDK也会不断的搜索。这也开启定位时非常耗电的一个原因。

更多相关文章

  1. 开发者指南-Android如何绘制View
  2. 开发应用程序的Android(安卓)- 入门
  3. Android(安卓)Studio 完美修改应用包名
  4. Unity游戏引擎向独立Android和iOS开发者免费
  5. 索尼发布PlayStation Suite SDK
  6. Android(安卓)11:新特性前瞻
  7. android 网络下载PDF文件并打开PDF文件内容
  8. ShareSDK 第三方分享
  9. Android(安卓)GPS定位步骤

随机推荐

  1. Android的HTTP Client
  2. Error parsing XML: junk after document
  3. Android动画特效实例
  4. Android(安卓)Studio实现格式化XML代码顺
  5. android EditText监听事件处理方法
  6. 动态的修改自定义custom title
  7. Android(安卓)数据库SQLiteDatabase的使
  8. 深入浅出RxJava1(四:在Android中使用响应式
  9. 语言转换的一些问题以及让dialog没有标题
  10. android 双击事件监听