Framework中网络定位服务简介
来源:互联网 发布:软件产品包装方案 编辑:程序博客网 时间:2024/05/22 17:01
前人已经将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://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的架构是一致的。
0 0
- Framework中网络定位服务简介
- Framework中网络定位服务简介
- 网络定位服务NetworkLocationProvider
- Android LBS中网络定位服务的实现方法
- 【android】网络定位服务NetworkLocationProvider
- Android framework中新增服务
- Robot framework中元素的定位
- Andrioid Framework中添加系统服务
- 无线adhoc和混合网络中的定位服务(翻译)
- 定位服务
- 网络中硬件设备简介
- Linux中网络接口简介
- Robot Framework-元素定位
- Android开发中定位解析(GPS定位、网络定位、位置地址解析)
- Android-Service(系统服务实例:定位,网络判断,电话服务 ,通知栏通知等)
- Android-Service(系统服务实例:定位,网络判断,电话服务 ,通知栏通知等)
- Android5.1.1源码 - 在Framework中添加自定义系统服务
- 在android framework中添加自定义系统服务
- linux开发笔记:Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
- 简单抓包代码(链路层)
- HTML5边玩边学(4):变幻的色彩
- log4j配置详解
- 使用 lipo -create 合并.a文件
- Framework中网络定位服务简介
- 黑马视频学习笔记-预处理指令(三)
- NSURLCache内存缓存
- spring hibernate BaseDAO
- 中国国家气象局天气预报信息接口
- 通过TabActivity创建底部菜单栏
- HTML5边玩边学(5):图像、图案和字体 一、创建图像对象
- Spring <aop:config> 疑问 -- 完全由spring代理对象才能被事务管理
- Android系统自带样式(android:theme)(转)