您的位置:首页 > 理论基础 > 计算机网络

Android网络定位服务定制简述

2016-06-06 11:26 786 查看
Android添加高德或百度网络定位服务

Android的网络定位服务以第三方的APK方式提供服务,由于在国内Android原生自带的com.google.android.gms服务几乎处于不可用状态,因此对于第三方OEM厂商经常需要与高德或百度合作,使用这两个服务提供商提供的网络位置定位服务。现将在Android平台集成第三方网络定位服务的步骤简述如下:

1、向高德或百度获取网络定位服务apk,并集成至system/app目录下,有时需要同步获取其运行时需要的库,并集成与指定目录,一般是system/lib目录下,目前其包名为:

高德:com.amap.android.location

百度:com.baidu.map.location

2、配置Config.xml文件(frameworks/base/core/res/res/values)

<boolname="config_enableNetworkLocationOverlay"translatable="false">true</bool>
<stringname="config_networkLocationProviderPackageName"translatable="false">@null</string>

<boolname="config_enableFusedLocationOverlay"translatable="false">true</bool>
<stringname="config_fusedLocationProviderPackageName"translatable="false">com.android.location.fused</string>

<boolname="config_enableHardwareFlpOverlay"translatable="false">true</bool>
<stringname="config_hardwareFlpPackageName"translatable="false">com.android.location.fused</string>

<boolname="config_enableGeocoderOverlay"translatable="false">true</bool>

<stringname="config_geocoderProviderPackageName"translatable="false">@null</string>



从配置文件中可以看到这里有4个开关,分别对应于NLP、Fused、Flp、Geocoder服务,这里以NLP和Gecoder服务为例。

若config_enableNetworkLocationOverlay的值设为false,则使用config_networkLocationProviderPackageName

若config_enableNetworkLocationOverlay的值为true,则使用

<string-arrayname="config_locationProviderPackageNames"translatable="false">
<!--ThestandardAOSPfusedlocationprovider-->
<item>com.android.location.fused</item>
</string-array>


例如定制百度定位,则需要配置如下:

<string-arrayname="config_locationProviderPackageNames_baidu"translatable="false">
<!--TheBaiduNetworkLocationProvider-->
<item>com.baidu.map.location</item>
<!--ThestandardAOSPfusedlocationprovider-->
<item>com.android.location.fused</item>
</string-array>


3、网络服务binder的逻辑在LocationManagerService.java中loadProviderLocked方法中

注意事项1:一般厂商都会添加兼容设置,(1)比如会同时添加高德、百度、Google定位服务,能找到那个服务则binder对应服务,这时候可能需要做包名验证,因为Android原生只做签名验证,若此时OEM对高德、百度服务重新签名则无法做到识别binder,会造成重复binder同一个服务现象。(2)添加国内、国外自动切换的功能,此时需要结合通信提供的接口,实现国内外的判断。

注意事项2:成功binder到服务后,则会添加对该服务的监控,包的卸载,加载、安装都会引起rebinder动作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: