前人已经将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中网络定位服务简介相关推荐

  1. 局域网流量控制_【第2例】:讨论苹果手机中“无线局域网与蜂窝网络”和定位服务等隐私服务!...

    隐私,一直是我们十分关注的一个问题,在苹果手机中隐私相比安卓手机来的"相对"高一些,其中我们认为能够控制的不多,主要是定位服务.上网这两个大项. 而这两个在苹果手机中又不以常规形式 ...

  2. ios 位置服务器,关于 iOS 和 iPadOS 中的隐私与定位服务

    隐私设置 借助 iOS 和 iPadOS 中的隐私设置,您可以控制哪些 App 可以访问储存在您设备上的信息.例如,您可以允许社交网络 App 使用您的摄像头,以便拍摄照片并上传到该 App.您还可以 ...

  3. Android获取GPS网络定位经纬度信息

    定位一般分为是:GPS定位,WIFI定位,基站定位 和 AGPS定位 GPS定位 GPS定位需要手机GPS模块硬件支持.GPS走的是卫星通信的通道,在没有网络连接的情况下也能使用,并且通过GPS方式准 ...

  4. android网络 gps定位失败,android 网络定位失败 location为null的真正原因

    最近开发一个android应用,需要用到定位功能,经过网上查资料发现gps定位速度太慢,遂决定用网络定位,结果在本人的三星手机上调试发现 locationManager = (LocationMana ...

  5. 地图与定位(一)定位服务

    前言: 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一 ...

  6. springboot网络招聘服务系统毕业设计源码121727

    目  录 摘要 1 绪论 1.1开发的意义及背景 1.2国内研究现状 1.3系统开发技术的特色 1.4论文结构与章节安排 2网络招聘服务系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2. ...

  7. iOS定位服务系列之一:获取当前位置信息

     最近的一个业务涉及地图相关的服务,由于时间比较紧,所以借鉴了网上一些大神的代码,总算是交了差.现在回想起来,当初的自己是多么的窘迫,上网查看,铺天盖地的博文,每篇都是华丽丽的几大页,功能也都能满 ...

  8. iOS定位服务 CoreLocation

    // 在iOS中,定位服务API主要使用CoreLocation框架, /*CLLocationManager 用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域 ...

  9. 计算机网络中rtd,网络RTK与网络RTD系统简介.ppt

    网络RTK与网络RTD系统简介 网络RTK和网络RTD系统 主讲:贲立超 指导教师:窦世卿 目录 常规RTK/RTD技术 RTD一常规实时动态差分GPS 实时动态测量中,最先在码相位测量上引入差分技术 ...

最新文章

  1. 仅靠合成数据就能实现真实人脸分析!微软这项新研究告别人工标注
  2. Even Parity UVA - 11464 (枚举)
  3. 《JAVA练习题目8》 编写一个类Person,包含的属性和方法如下: 属性:字符串类型的名字name,字符类型的性别gender,和整型的序号number
  4. WindowManager.LayoutParams各种flag含义
  5. JSP简单练习-用Servlet获取表单数据
  6. 图的遍历[摘录自严长生老师的网站]
  7. 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包
  8. 优秀的SharePoint 2013开发工具有哪些(二)
  9. 复习Java异常处理_异常分类_自定义异常_线程初步了解
  10. chap6_1 Sphere Environmental mapping in OGRE
  11. 2018年中国财富管理才真正迎来发展元年
  12. seekbar垂直放置_android GridLayout
  13. 苹果核 - iOS端Mock GPS定位 —— 测试、开发、玩游戏、发朋友圈等等,你都用得上...
  14. 计算机专业毕设论文题目大全(二)
  15. Springboot毕设项目列车调度信息系统的设计与实现4guf9(java+VUE+Mybatis+Maven+Mysql)
  16. Arcgis空间校正操作
  17. 受难周第五日-团契日
  18. 代季峰对话张祥雨 | 自动驾驶感知新时代!新一代环视感知算法BEVFormer有哪些优势...
  19. CorelDraw插件开发-VBA-常用功能-二维码创建-cdr插件
  20. OPPO R8107刷机教程 救砖解锁 刷机包下载

热门文章

  1. qt 解决中文乱码问题
  2. 统计日志中ip访问次数并排序的三种方法
  3. C编程,随机数,排序
  4. Softmax 函数及其作用(含推导)
  5. 编程方法学11:Gimage
  6. [译]在CUDA C/C++中如何衡量代码性能
  7. Linux系统\Centos没有网卡eth0配置文件怎么办?
  8. 深入理解Linux软件包的配置、编译与安装
  9. matlab中tic,toc的用法
  10. python编辑时怎样换行_python怎么换行输入