-
-
[分享]安卓10源码开发定制(21)测试gps定位
-
发表于: 2021-2-6 14:35 7156
-
一、测试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方法达到模拟上报的目的。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)