Framework中网络定位服务简介
前人已经将LocationManangerService的框架介绍的很不错了,可以参见下面的帖子
http://www.ibm.com/developerworks/cn/opensource/os-cn-android-location/index.html#major2
其中介绍了整个GPS定位的代码框架。
下面针对其中的网络定位做一些补充: LocationManangerService在systemServer中被启动创建,同时执行其systemReady方法(所有其他级别的服务都是这样的执行流程),这个方法中开启了一个线程,创建了一个属于它的handler用于控制service的工作,并开始init初始化,在这里定位服务加载当前系统所支持的LocationProvider。
这里有关的三个类分别是:
LocationProviderProxy.java是框架中用来封装远程服务端操作的类,名为Proxy其实是服务端本地代理的装饰类。
ServiceWatcher.java充当了一个远程服务管理者,用于绑定服务以及管理服务的本地代理。
ILocationProvider.aidl定义了定位服务的接口,网络定位提供商按照这个接口约束来实现。
LocationProviderBase.java定义了网络定位提供商实现接口的虚类,内部实现了以上的桩类,并留了一组虚方法用于具体实现。
看这些类就知道对于网络定位来说LocationManangerService是一个客户端,网络定位模块是一个服务端,是通过ILocationProvider.aidl来实现的。
这样整个流程就是这样的:
LocationManangerService服务中通过binder远程服务(注意这里的Action是:com.android.location.service.v2.NetworkLocationProvider)并使用其LocationProviderProxy本地代理来进行的操作,Proxy实现LocationProviderInterface使得服务使用起来和其他LocationProvider一致实现运行时的动态绑定,远程端扩展LocationProviderBase实现其onEnable,onSetRequest等一系列虚方法来完成定位的操作。
一般手机中的网络位置服务都是基于第三方的比如百度,谷歌等,所以这部分代码没有在源码中看到,但是可以分析一下源码中的FusedLocationProvider.java,这个与NetworkLocationProvider的架构是一致的。
原文地址: http://blog.csdn.net/hehui1860/article/details/38560953
Framework中网络定位服务简介相关推荐
- 局域网流量控制_【第2例】:讨论苹果手机中“无线局域网与蜂窝网络”和定位服务等隐私服务!...
隐私,一直是我们十分关注的一个问题,在苹果手机中隐私相比安卓手机来的"相对"高一些,其中我们认为能够控制的不多,主要是定位服务.上网这两个大项. 而这两个在苹果手机中又不以常规形式 ...
- ios 位置服务器,关于 iOS 和 iPadOS 中的隐私与定位服务
隐私设置 借助 iOS 和 iPadOS 中的隐私设置,您可以控制哪些 App 可以访问储存在您设备上的信息.例如,您可以允许社交网络 App 使用您的摄像头,以便拍摄照片并上传到该 App.您还可以 ...
- Android获取GPS网络定位经纬度信息
定位一般分为是:GPS定位,WIFI定位,基站定位 和 AGPS定位 GPS定位 GPS定位需要手机GPS模块硬件支持.GPS走的是卫星通信的通道,在没有网络连接的情况下也能使用,并且通过GPS方式准 ...
- android网络 gps定位失败,android 网络定位失败 location为null的真正原因
最近开发一个android应用,需要用到定位功能,经过网上查资料发现gps定位速度太慢,遂决定用网络定位,结果在本人的三星手机上调试发现 locationManager = (LocationMana ...
- 地图与定位(一)定位服务
前言: 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一 ...
- springboot网络招聘服务系统毕业设计源码121727
目 录 摘要 1 绪论 1.1开发的意义及背景 1.2国内研究现状 1.3系统开发技术的特色 1.4论文结构与章节安排 2网络招聘服务系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2. ...
- iOS定位服务系列之一:获取当前位置信息
最近的一个业务涉及地图相关的服务,由于时间比较紧,所以借鉴了网上一些大神的代码,总算是交了差.现在回想起来,当初的自己是多么的窘迫,上网查看,铺天盖地的博文,每篇都是华丽丽的几大页,功能也都能满 ...
- iOS定位服务 CoreLocation
// 在iOS中,定位服务API主要使用CoreLocation框架, /*CLLocationManager 用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域 ...
- 计算机网络中rtd,网络RTK与网络RTD系统简介.ppt
网络RTK与网络RTD系统简介 网络RTK和网络RTD系统 主讲:贲立超 指导教师:窦世卿 目录 常规RTK/RTD技术 RTD一常规实时动态差分GPS 实时动态测量中,最先在码相位测量上引入差分技术 ...
最新文章
- 仅靠合成数据就能实现真实人脸分析!微软这项新研究告别人工标注
- Even Parity UVA - 11464 (枚举)
- 《JAVA练习题目8》 编写一个类Person,包含的属性和方法如下: 属性:字符串类型的名字name,字符类型的性别gender,和整型的序号number
- WindowManager.LayoutParams各种flag含义
- JSP简单练习-用Servlet获取表单数据
- 图的遍历[摘录自严长生老师的网站]
- 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包
- 优秀的SharePoint 2013开发工具有哪些(二)
- 复习Java异常处理_异常分类_自定义异常_线程初步了解
- chap6_1 Sphere Environmental mapping in OGRE
- 2018年中国财富管理才真正迎来发展元年
- seekbar垂直放置_android GridLayout
- 苹果核 - iOS端Mock GPS定位 —— 测试、开发、玩游戏、发朋友圈等等,你都用得上...
- 计算机专业毕设论文题目大全(二)
- Springboot毕设项目列车调度信息系统的设计与实现4guf9(java+VUE+Mybatis+Maven+Mysql)
- Arcgis空间校正操作
- 受难周第五日-团契日
- 代季峰对话张祥雨 | 自动驾驶感知新时代!新一代环视感知算法BEVFormer有哪些优势...
- CorelDraw插件开发-VBA-常用功能-二维码创建-cdr插件
- OPPO R8107刷机教程 救砖解锁 刷机包下载