上一篇我们记录了 GPS 的定位流程,这一篇记录下 NLP(Network Location Provider)的定位流程,因为在国内,无法使用谷歌提供的NLP,所以国内我们一般会使用三方提供的NLP,比如:百度、高德、腾讯等。
这里我们假设一个app发起 NLP 定位,首先调用 LocationManager 接口,通过AIDL最终调用到 LocationManagerService 里面的 requestLocationUpdates 方法:
554 public void requestLocationUpdates(String provider, long minTime, float minDistance, 555 LocationListener listener) { 556 checkProvider(provider); 557 checkListener(listener); 558 559 LocationRequest request = LocationRequest.createFromDeprecatedProvider( 560 provider, minTime, minDistance, false); 561 requestLocationUpdates(request, listener, null, null); 562 }
到这里我们就知道了,不管是GPS还是NLP,调用的都是这个接口,区别就是传进去的参数不一样,例如:provider,在Android 里面我们有以下几种provider:
Gps_provider、Network_provider、Passive_provider、Fused_provider、Mock_provider,其中前三种比较常用,Fused_provider依赖三方,比如谷歌GMS包。Mock_provider就是我们常说的伪造位置,一些虚拟定位软件就是基于这个开发的,这里我们暂时不记录,需要的后续单独详细讲。
继续看流程调用:
2061 public void requestLocationUpdates(LocationRequest request, ILocationListener listener

最低0.47元/天 解锁文章
4146






