Android網絡定位服務定制簡述


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動作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM