android 模拟器虽然没有真正的GPS功能,但是DDMS可以模拟GPS,通过telnet连接到adb,然后发送GPS数据,再转化成NMEA格式的信号给android系统,就可以模拟出location功能了。基于这点,我们可以移植这个应用。
我们需要移植的GPS内容是位于JNI层下面的,也就是HAL硬件抽象层。对于GPS硬件抽象层来说,里面包括对对串口(或USB 转串口)设备的初始化,GPS线程创建及NMEA数据读取、解析、信息回调等等工作
现在我们要做的工作就是修改源码/sdk/emulator/gps/ 这个目录下的gps_qemu.c文件。几个重要的修改位置:
1. 初始化串口
这个函数主要是对串口设备的初始化 open(‘’/dev/对应的串口/”);
2. 对NMEA数据的解析
这个函数里面的一些函数就是对数据解析的函数
其他具体细节看完整的修改文件
hardware/libhardware/modules
在源码hardware/libhardware/module发现没有gps文件,于是自己创建一个gps文件,里面存放刚刚弄好的gps_qemu.c文件和新建一个make文件(make文件具体也见文件),
在out/target/product/smdkv210/system/lib/hw中删除原有的gps.goldfish.so文件,然后转到gps文件下,执行mm命令,然后重新把系统烧成img文件,重新烧系统即可。