一个手机定位一般有三种方式:
1.通过纯gps。
2.通过agps辅助gps定位
3.纯粹网络,比如wifi或者基站定位
三者的优缺点这里不说了,这里主要看下gps在安卓里是如何工作的。老规矩直接上以前画的图。。可以下载下来看比较清楚。
- 在systemServer启动的时候初始化了LocationMangerService。
当用户启动定位功能时。进入GpsLocationProvider:handleEnable(),接下来init->start(参见绿色模块)。初始化完毕后发广播通知(黄色模块)
用户同时注册了Listener,当有数据更新时会通知listener(灰色模块)
开启gps之后,会要求更新数据(蓝色模块),硬件接收到数据后按照如图列的规则解析报文后,通过回调上报给已经注册的listener(绿色->灰色)。
由此一个链路完成。