热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析AndroidGPS机制:第五部分

1. 概述     上面的几篇文章论述了gps的打开启动初始化等动作,万事俱备只欠东风了。这一系列文章主要讲的是Position信息如何从modem层传递到loc eng层最后一直到Java上层的。由
1. 概述

    上面的几篇文章论述了gps的打开启动初始化等动作,万事俱备只欠东风了。

这一系列文章主要讲的是Position信息如何从modem层传递到loc eng层最后一直到Java上层的。

由于loc eng层到modem层是属于消息触发的,也就是说正常的流程是:modem层传上来一个消息,经过一系列处理传递到loc eng层,loc eng层传递给gps库,

android framework层,然后上层应用就可以获取到数据。

高通平台的GPS核心部分都在modem里面,这里面实现了GPS相关的协议,可以把这个部分看做是GPS service,另外一部分在ap侧,

我们把这部分看做是GPS client。Client主要是通过QMI的通信方式接收service发过来的信息,client也可以通过QMI发送信息给service,

QMI之上有一个loc_api层,具体作用是通过qmi读取service发送过来的信息,当然也可以通过qmi发送信息给service。

2. AP数据结构

这里我们主要涉及三个重要的数据结构,分别是qmiLocEventPositionReportIndMsgT_v02、UlpLocation、GpsLocation:

    qmiLocEventPositionReportIndMsgT_v02是一个很重要的数据结构,它是AP侧和Modem侧之间传递的Position数据结构,

是一个连接两者的桥梁,由于结构比较庞大,截取一部分如下,完整结构具体请看:

vendor/qcom/opensource/location/loc_api/loc_api_v02/location_service_v02.h




UlpLocation*是loc eng层使用的格式, UlpLocation里包含了GpsLocation:

hardware/qcom/gps/core/gps_extended_c.h




GpsLocation*是hal层能够识别的格式:

hardware/libhardware/include/hardware/gps.h;



三个数据结构的大致关系是:解析qmiLocEventPositionReportIndMsgT_v02类型的event,

提取其中需要的数据,填充到UlpLocation结构中,由于包含了GpsLocation,因此GpsLocation也同时被填充;


小结:数据库都准备好了,下面就开始分析数据是如何从modem到AP侧,最后到Java上层的。


推荐阅读
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • Android与JUnit集成测试实践
    本文探讨了如何在Android项目中集成JUnit进行单元测试,并详细介绍了修改AndroidManifest.xml文件以支持测试的方法。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 一、Advice执行顺序二、Advice在同一个Aspect中三、Advice在不同的Aspect中一、Advice执行顺序如果多个Advice和同一个JointPoint连接& ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • Irish budget airline Ryanair announced plans to significantly increase its route network from Frankfurt Airport, marking a direct challenge to Lufthansa, Germany's leading carrier. ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文深入探讨了Go语言中的接口型函数,通过实例分析其灵活性和强大功能,帮助开发者更好地理解和运用这一特性。 ... [详细]
  • 问题场景用Java进行web开发过程当中,当遇到很多很多个字段的实体时,最苦恼的莫过于编辑字段的查看和修改界面,发现2个页面存在很多重复信息,能不能写一遍?有没有轮子用都不如自己造。解决方式笔者根据自 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • 如何在PHP中安装Xdebug扩展
    本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ... [详细]
  • 本文探讨了在一个物理隔离的环境中构建数据交换平台所面临的挑战,包括但不限于数据加密、传输监控及确保文件交换的安全性和可靠性。同时,作者结合自身项目经验,分享了项目规划、实施过程中的关键决策及其背后的思考。 ... [详细]
  • importjava.io.*;importjava.util.*;publicclass五子棋游戏{staticintm1;staticintn1;staticfinalintS ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
author-avatar
傲慢的小草7_170
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有