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

时间: 2024-08-05 04:23:42

Android网络定位服务定制简述的相关文章

Android 定位服务(转载)

今天因为工作需要,把以前编写的一个GPS测试程序拿出来重新修改了一下.这个程序说起来有些历史了,是我11年编写的,那时候学了Android开发没多久,算是一个实验性的作品.现在工作需要,重新拿出来修整.同时发现我对android的GPS服务了解并不深,所以今天特意阅读了有关GPS服务的一些资料,把相关知识点记录下来. 本人做了GPS相关的嵌入式软件已经几年了,所以说起要做个测试GPS定位模块的程序,第一反应就是串口读取GPS模块的数据,然后解析GPS的NMEA格式数据.NMEA是一种标准化数据格

Android的定位策略

原文作者:Google 原文地址:https://developer.android.com/guide/topics/location/strategies.html 原文版权:Creative Commons 2.5 Attribution License 译文作者:Jianan - [email protected] 版本信息:本文基于2016-06-17版本翻译 译文版权:CC BY-NC-ND 4.0,允许复制转载,但必须保留译文作者署名及译文链接,不得演绎和用于商业用途 前言 Not

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

---恢复内容开始--- extends:http://blog.csdn.net/h7870181/article/details/12505883 Google Maps API 网络服务 官网地址 : https://developers.google.com/maps/documentation/webservices/?hl=zh-cn 其实就是一些接口,供我们调用,如: 1.根据地址获取经纬度 http://maps.google.com/maps/api/geocode/json?

Android 定位服务(Location-Based Services)

Android定位服务融合了GPS定位.移动通信.导航等多种技术,提供与空间位置相关的综合应用服务.近些年来,基于位置的服务发展更为迅速,涉及商务.医疗.工作和生活的各个方面,为用户提供定位.追踪和敏感区域警告等一系列服务. Android平台支持提供位置服务的API,在开发过程中主要使用LocationManager和LocationProviders对象. - LocationManager: 用来获取当前位置,追踪设备的移动路线,或设定敏感区域,在进入或离开敏感区域时设备会发出特定警报.

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

位置定位(Location)服务(Service)类的基本操作 本文地址: http://blog.csdn.net/caroline_wendy 定位服务,可以确定移动设备的地址,在地图相关服务中,经常会使用GPS和移动相关的定位服务,GPS较为精准. 根据常用的定位服务功能,又添加网络检测和Wifi检测,和启动相关界面进行测试的功能. 代码: import android.content.Context; import android.content.Intent; import andro

手机定位服务将构建新一代网络(转来的)

导 语:试想一下,假如你的企业能够完全掌握客户的行踪——无论客户是逛杂货铺,还是在上班途中,甚至是出门遛狗,都尽在掌握,那么你能从中获得什么信息?假 如真的能够获取这些信息,你又希望借此向用户出售何种商品和服务呢?如果真的能够做到这一点,而且你的数据具备很高的相关性和实效性,那么用户又是否会出 于隐私的考虑而拒绝你的服务呢?这可不是科幻小说,而是一个新兴行业,它一由大批创业公司组成,而且借鉴了谷歌和诺基亚等科技巨头的经验,它们或许就能解 决上述问题. “点” 那 是一个多雪的冬季,在纽约SoHo

Android Studio下加入百度地图的使用(二)——定位服务

上一章(http://www.cnblogs.com/jerehedu/p/4891216.html)中我们已经完成了环境的搭建,这一章我们来研究一下如何使用. 第一步:在xml文件中加入以下权限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.android.launcher.permission.READ_S

发现最新版百度Android 定位SDK v6.1.3 网络定位bug

对于百度地图已经实在忍无可忍了,实验室两年以前的一个项目用到了百度地图,以前师兄毕业了,我来维护这个破项目,百度地图推出新版本出来后,老版本的api不能用了,你就不能做到向下兼容吗?换掉少量的api也就算了,居然整体风格都换了,大爷的,我得先学老版本的api看懂师兄留下的代码,再学新版本的api修改这个项目,这也没啥,然而你新版本官方demo怎么还留bug!!折腾一天后发现,这是百度Android 定位SDK的bug,不是我自己的代码的问题的感觉很奇妙有木有!!! 使用百度官网提供的demo学习

Android GMS无法通过网络定位

前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 预置KK GMS后,打开系统定位功能,Google Maps等应用无法通过网络定位 有两个部分需要确认: 1.系统对提供LocationProvider的应用需要进行申明,而KK GMS将NetworkLocation应用的功能集成到了GmsCore(