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网络定位服务定制简述的更多相关文章

  1. 【Android】18.1 利用安卓内置的定位服务实现位置跟踪

    分类:C#.Android.VS2015: 创建日期:2016-03-04 一.安卓内置的定位服务简介 通常将各种不同的定位技术称为位置服务或定位服务.这种服务是通过电信运营商的无线电通信网络(如GS ...

  2. Android GPS定位测试(附效果图)

    今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...

  3. Android GPS定位测试(附效果图)

    今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整 ...

  4. Android Google Maps API 网络服务用于网络定位、计算路线、获取经纬度、获取详细地址等

    extends:http://blog.csdn.net/h7870181/article/details/12505883 Google Maps API 网络服务 官网地址 : https://d ...

  5. Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)

    在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便.定位一般分为三种发方案:即GPS定位.Google网络定位以及基站定位 最简单的手机定位方式当然是通过GP ...

  6. Android - 位置定位(Location)服务(Service)类的基本操作

    位置定位(Location)服务(Service)类的基本操作 本文地址: http://blog.csdn.net/caroline_wendy 定位服务(Location Service),能够确 ...

  7. 【Android】18.2 利用百度定位服务API实现位置跟踪

    分类:C#.Android.VS2015: 创建日期:2016-03-04 一.简介 第3章已经介绍过百度定位SDK,这里再演示一遍其基本用法. 二.示例2-百度定位服务基本用法 运行截图 设计步骤 ...

  8. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  9. [android学习]android_gps定位服务简单实现

    前言 gps定位服务的学习是这段时间gps课程的学习内容,之前老师一直在将概念,今天终于是实践课(其实就是给了一个案例,让自己照着敲).不过在照着案列敲了两遍之后,发现老师的案例是在是太老了,并且直接 ...

随机推荐

  1. linux 卸载编译安装的软件

    有些软件会有 make uninstall 之类的功能,但大多都没有,所以只有手动删除,或者在configure的时候加个preifx参数,比如 --preifx=/opt/squid,这样当你不用的 ...

  2. WordPress酷炫CSS3读者墙代码

    前几日在大前端看到他站点中最新的CSS3读者墙代码,一看效果绚丽的不得鸟,立刻就开始研究了,多次研究未果,可终究是研究出来了,昨天刚成功,今天啊和童鞋来我站说读者墙头像显示不对,我一看,还真是,头像都 ...

  3. sublime 中 pyv8 binary 报错怎么处理?

    ,sublime text 在安装插件的时候,尤其是Emmet的时候,经常会报一个错误--please wait a bit whilePyV8 binary is being downloaded, ...

  4. 使用axis开发web service服务端

    一.axis环境搭建 1.安装环境 JDK.Tomcat或Resin.eclipse等. 2.到 http://www.apache.org/dyn/closer.cgi/ws/axis/1_4下载A ...

  5. Timequest GUI

    Tasks界面 使用Tasks界面可以访问常用命令,例如生成网表建立报告等. 两个常用命令位于Tasks界面中:打开工程和编写SDC文件.其他命令在下面的文件夹中: Netlist Setup Rep ...

  6. retrofit一点点理解

    retrofit是什么? retrofit可以认为是一款基于http协议的rpc框架.基于java的. 它可以连到支持restful的服务器,将服务器返回的json数据反序列化成java对象. 用途 ...

  7. Python 3.x 连接数据库(pymysql 方式)

    ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...

  8. DataScientist————汇总篇

    为了方便阅读查找.把写的其他关于机器学习的博客汇总在这里. ---------------------------------------------------------------------- ...

  9. html5——canva 绘图1简单图形

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 419. Battleships in a Board

    https://leetcode.com/problems/battleships-in-a-board/ 给定一个N×N的棋盘,有任意数量的1×N或N×1大小的"船",注意船船之 ...