内容简介
1、Android经典架构
2、Android高精度SDK架构设计说明
3、Android高精度SDK系统层技术设计详解
课程实录
一、Android经典架构
Android系统的架构分为四层,分别是应用层、应用框架层、系统运行库层和Linux内核层。其中,跟定位有关的是应用层,以及应用框架层中的“Location Manager”,千寻位置提供的高精度SDK方案,主要也是应用在这两个地方。
二、Android高精度SDK架构设计说明
千寻位置提供的高精度SDK,在架构设计上与Android系统一脉相承:最顶端是用户接口层,承担着跟用户对接的功能;随后是核心业务层,实际应用场景比较复杂;下一层是算法适配层;再下一层是JNI(Java Native Interface),它主要负责上层的JAVA语言和算法层C语言之间的“翻译工作”;最底层则是算法层。
开发者可以从应用层或应用框架层,调用千寻位置提供的高精度SDK。
△千寻位置Android高精度SDK架构设计图(简版)
为了方便开发者进行集成,这里将重点介绍用户接口层、硬件交互层以及算法层的设计边界。
1)用户接口层
千寻位置的Android高精度SDK,在用户接口层的设计具备以下特点:
遵循LMS系统API设计规则,开发者无需额外学习便可集成;
采用Builder设计模式,可高效实现参数配置;
内部实现异步调用,不对主线程造成负担;
最多可以支持20个并发定位请求。
2)硬件交互层
在使用千寻位置的Android高精度SDK时,有时会涉及到与硬件交互的部分。这部分内容具体体现为:SDK从芯片获取一些跟定位相关的原始数据,包括Nmea数据、原始观测量、IMU传感器数据以及芯片发出的控制指令等,而这些数据的传输可通过USB、串口、蓝牙或wifi等方式进行。
△千寻位置Android高精度SDK-硬件交互层(设计图示)
3)算法层
终端原始观测数据和千寻位置差分服务数据的解算,在算法层进行,涉及到的核心算法有PVT(定位、定速、授时)、RTK(实时载波相位动态差分)、RTD(实时伪距差分)、DR(惯导)、PPP(精密单点定位)、AGNSS(辅助全球导航卫星系统)等。
△千寻位置Android高精度SDK-算法层(设计图示)
三、Android高精度SDK系统层技术设计详解
如果Android设备的APP应用集成高精度定位服务,那么,直接用Android标准API调用千寻位置提供的SDK即可。但如果是系统或终端设备厂商,希望系统级提升定位精度的话,就要在应用框架层调用SDK了。
在Android的应用框架层里,跟定位相关的有三部分,分别是GLP(Gnss Location Provider)、NLP(Network Location Provider)、FLP(Fused Location Provider)。而千寻位置的SDK方案则是基于GLP来实现系统级高精度定位的。
△Android的应用框架层跟定位相关的是:GLP、NLP和FLP
Android系统集成千寻位置的SDK方案后,该SDK下的技术框架QXGLP将代替GLP向系统注册定位服务,等同于接管了系统的GLP能力。QXGLP承担着任务调度、数据注入、位置结果融合,Nmea结果融合等职责。对于QXGLP的绝大部分修改由千寻位置内部代码完成,并封装成独立模块,通过独立脚本编译,无需开发者参与。
下面为大家介绍具体的技术组合方式:
1)技术组合:GNSS+SDK+算法
首先,Android系统的GNSS模块会生成原始的定位数据,包括Nmea、原始观测量等;接着,系统将这些数据注入到千寻位置的Android高精度SDK, 再到算法解算,最终通过SDK输出高精度定位结果到应用层。开发者想要验证这条通路也非常方便,但要注意,安卓系统必须是7.0以上的,这样才能从应用框架层拿到符合算法要求的GNSS数据。
△技术组合方式1:GNSS+SDK+算法
2)技术组合:芯片+SDK+算法
与第一种技术组合方式不同,采用“芯片+SDK+算法”的技术组合方式,数据源不是从原生系统中获取,而是通过增加一个定位芯片, 让SDK通过驱动层从这个定位芯片中获得数据,进而进行解算输出。二者之间的通讯通过串口来实现。
3)技术组合:外接设备+SDK+算法
第三种技术组合方式,最大特点是定位数据源既不来自系统原始数据,也不来自芯片,而是来自于外接的定位设备。数据可通过USB、蓝牙或wifi等方式传输给SDK,算法进行解算后输出高精度定位结果,最终给到应用层。
△技术组合方式3:外接设备+SDK+算法
互动问答
LeslieXong:为什么Android上要有那么多并发定位请求?是指不同的APP同时请求吗?
黄成钟:是指同一个APP的定位请求。正常情况一个APP调用应该不会同时有20个这么多,只是有一些开发者在集成SDK时,存在技术上的不规范,导致APP的调用请求堆积,出现位置数据输出异常的情况,这里只是强调一下,我们的上限是20,否则就会调用失败。
坤:千寻位置现在开放 Android SDK了吗?需要外接硬件吗?
黄成钟:由于这款SDK的集成效果,跟硬件兼容性有很大关系,所以千寻位置暂时没有形成标准化的SDK对外公开。目前,这款SDK主要通过商务人员对外提供,如果你有需要,可以先联系千寻位置的客服。刚刚介绍了3种技术组合方式,第三种就涉及外接硬件,前两种不需要。
Enlighting:对卫星信号质量要求高吗?
黄成钟:如果需要得到高精度的定位结果,卫星信号的平均CN0要达到30以上。
赵存瑜:除了Android的SDK,咱们有没有针对物联网操作系统的SDK?
黄成钟:目前千寻位置提供的SDK包括算法支持嵌入式、Linux以及Android系统。如果你所说的物联网操作系统是基于安卓系统5.0以上的版本,就可以进行适配。