android Qemu GPS 模块简明分析
来源:互联网 发布:北京软件外包 编辑:程序博客网 时间:2024/06/05 18:51
Android 的 gps module 是 gps.default.so 在system/lib/hw/ 目录上, 一般提供gps功能的手机应该实现这个module和真实gps硬件交互
Qemu中gps就是要构造一个gps.default.so, 但这个so并不和真的硬件打交道,只是个模拟接口,其代码在sdk/emulator/gps/gps_qemu.c中
Qemu 容器外部实现了一个gps设备,但这个设备和 Android 交互只能通过管道,所以gps_qemu.c的功能就是同管道打交道,并提供Android需要的gps functions, 如下:
static const GpsInterface qemuGpsInterface = {
sizeof(GpsInterface), qemu_gps_init, qemu_gps_start, qemu_gps_stop, qemu_gps_cleanup, qemu_gps_inject_time, qemu_gps_inject_location, qemu_gps_delete_aiding_data, qemu_gps_set_position_mode, qemu_gps_get_extension,};
Qemu外部GPS通过 QEMU_CHANNEL_NAME 管道给 gps module 发送数据, 格式 NMEA, 所以 gps module 有几个函数负责 parse这些数据的
GPS模块有个要求,就是必须用它的 callback 来创建线程(gps_state_thread), 而将在的位置信息回调只能在此线程中(gps_state_thread),这是因为framework 需要一个vm可见的java thread, gps_state_thread 会被attach 到 vm 上了,从来回调 java 层函数
state->thread = callbacks->create_thread_cb( "gps_state_thread", gps_state_thread, state );
所以当QEMU_CHANNEL_NAME的位置信息过来不能直接调用callback, 而要在 gps_state_thread 发送到 android framework
因此 gps.default.so 调用 epoll 函数监听文件fd, 实现在 gps_state_thread 中把 location 信息送回
0 0
- android Qemu GPS 模块简明分析
- GPS模块数据分析 -- linux
- Android GPS架构分析
- android gps杂乱分析
- Android GPS架构分析
- Android GPS架构分析
- Android系统Gps分析
- Android系统Gps分析
- Android GPS架构分析
- Android系统GPS分析
- Android GPS架构分析
- android关于高精度GPS模块
- android关于高精度GPS模块
- android关于高精度GPS模块
- Android GPS架构分析-preview
- Android GPS架构分析-preview
- Android GPS架构分析之一
- Android GPS架构分析<一>
- git的Fork + Pull模式 Pull Request
- 怎样写linux下的USB设备驱动程序
- IOS常用开源项目收藏之二
- Extjs4.0+HSSFWorkbook+SpringMVC实现将数据库中的记录导出到本地Excel格式
- The method of type must override a superclass method解决方式
- android Qemu GPS 模块简明分析
- 使用QT创建系统托盘
- cgpdfpageref转uiimage
- Http请求封装基类HttpHelper.cs
- Android OpenGL ES 简明开发教程七:材质渲染
- 【cocos2dx 3.2】一个都不能死7 游戏结束场景
- 微动力WQ_V3.1020UTF商业版程序,10月最新版完全免费下载
- c++ 显式类型转换static_cast, dynamic_cast, const_cast
- JAVA 根据设置的概率生成随机数