首页
论坛
课程
招聘
[分享]安卓10源码开发定制(21)测试gps定位
2021-2-6 14:35 4557

[分享]安卓10源码开发定制(21)测试gps定位

2021-2-6 14:35
4557

一、测试gps定位功能的方法探讨

在安卓App gps定位开发过程中,往往需要进行GPS定位的测试。由于室内gps信号被挡住了,所以如果需要测试gps定位的代码,要么跑到室外去等待gps定位更新或者使用安卓sdk中提供的"MOCK_LOCATION"功能编写额外的测试代码来模拟gps位置更新。如果从系统定制的角度出发,也可以根据gps上报的流程来模拟gps上报的逻辑实现模拟gps 的定位数据。

二、修改系统实现模拟gps数据上报

2.1 安卓系统上报gps数据流程总结

在之前的文章安卓10源码开发定制(21)GPS定位研究(2)gps位置改变监听源码分析中已经分析安卓系统中gps数据上报的大概流程:

 

1. 当gps位置改变更新,com_android_server_location_GnssLocationProvider.cpp中通过反射调用GnssLocationProvider.java中的reportLocation方法将gps数据上报到安卓系统java层。

 

2. GnssLocationProvider.java中使用LocationProvider.java提供的onReportLocation方法将gps数据上报到GPS 位置管理器。

 

3. GPS位置管理器LocationProvider.java调用LocationManagerService.java提供的方法handleLocationChangedLocked将gps数据传到LocationManagerService.java中。

 

4. LocationManagerService.java中通过GPS_PROVIDER关键字获取缓存的注册监听器Receiver列表,然后遍历每一个监听器并调用监听的callLocationChangedLocked方法来通知客户端位置更新。

2.2 修改GPS数据的方案构想

参考以上gps上报的流程,可以在LocationManagerService中使用定时器。定时获取设置的gps坐标,然后通过名称GPS_PROVIDER获取缓存的GPS位置提供管理器对象,然后调用onReportLocation方法达到模拟上报的目的。


恭喜ID[飞翔的猫咪]获看雪安卓应用安全能力认证高级安全工程师!!

最后于 2021-12-28 16:55 被蟑螂一号编辑 ,原因:
收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回