码迷,mamicode.com
首页 > 移动开发 > 详细

Android网络定位服务定制简述

时间:2016-06-06 11:52:12      阅读:1143      评论:0      收藏:0      [点我收藏+]

标签:

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)

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

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

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

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

 

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

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

若config_enableNetworkLocationOverlay的值为true,则使用

<string-array name="config_locationProviderPackageNames" translatable="false">
        <!-- The standard AOSP fused location provider -->
        <item>com.android.location.fused</item>
    </string-array>

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

    <string-array name="config_locationProviderPackageNames_baidu" translatable="false">
        <!-- The Baidu Network Location Provider -->
        <item> com.baidu.map.location</item>
        <!-- The standard AOSP fused location provider -->
        <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动作

Android网络定位服务定制简述

标签:

原文地址:http://www.cnblogs.com/zml-forever/p/5563189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!