1、Hans Journal of Wireless Communications 无线通信无线通信,2023,13(4),49-55 Published Online August 2023 in Hans.https:/www.hanspub.org/journal/hjwc https:/doi.org/10.12677/hjwc.2023.134005 文章引用文章引用:杨凯,熊先才,黄凯.基于便携式 GNSS 接收机的安卓移动应用定位增强方法研究J.无线通信,2023,13(4):49-55.DOI:10.12677/hjwc.2023.134005 基于便携式基于便携式GNSS接收机的
2、安卓移动应用接收机的安卓移动应用 定位增强方法研究定位增强方法研究 杨杨 凯凯,熊先才熊先才,黄,黄 凯凯 重庆市规划和自然资源调查监测院,重庆 收稿日期:2023年4月30日;录用日期:2023年8月10日;发布日期:2023年8月16日 摘摘 要要 本文探讨了采用便携式本文探讨了采用便携式GNSS接收机,增强安卓移动应用程序定位能力的多种方法。基于安卓系统的接收机,增强安卓移动应用程序定位能力的多种方法。基于安卓系统的GNSS定位服务架构和便携式定位服务架构和便携式GNSS接收机接收机CORS差分定位流程,本文介绍了便携式差分定位流程,本文介绍了便携式GNSS接收机增强安卓移动应接收机增强
3、安卓移动应用程序包括用程序包括SDK接入、广播消息、模拟位置、接入、广播消息、模拟位置、GNSS模组移植在内的四种常用方法的具体实现流程。通过模组移植在内的四种常用方法的具体实现流程。通过对比分析评估,分析了各个方法的适用场景,评估了各方法的稳定性、兼容性,以及各方法定位信息的对比分析评估,分析了各个方法的适用场景,评估了各方法的稳定性、兼容性,以及各方法定位信息的可靠性、完备性。研究表明,高精度可靠性、完备性。研究表明,高精度GNSS定位平板等定制化一体机建议采用定位平板等定制化一体机建议采用GNSS模组移植法,便携式模组移植法,便携式GNSS接收机建议采用接收机建议采用SDK接入法。针对这
4、两个方法的缺陷,本文随后给出了优化建议。本研究成果已应接入法。针对这两个方法的缺陷,本文随后给出了优化建议。本研究成果已应用在重庆“国土调查云”测试版中,支撑调查监测业务多样化、个性化的泛在用在重庆“国土调查云”测试版中,支撑调查监测业务多样化、个性化的泛在位置服务需求。位置服务需求。关键词关键词 GNSS,移动终端,移动终端,CORS Research on Positioning Enhancement Method of Android Mobile Application Based on Portable GNSS Receiver Kai Yang,Xiancai Xiong,Ka
5、i Huang Chongqing Planning and Natural Resources Survey and Monitoring Institute,Chongqing Received:Apr.30th,2023;accepted:Aug.10th,2023;published:Aug.16th,2023 Abstract This article explores various methods to enhance the positioning capabilities of Android mobile 杨凯 等 DOI:10.12677/hjwc.2023.134005
6、 50 无线通信 applications using portable GNSS receivers.Based on the Android systems GNSS positioning ser-vice architecture and the portable GNSS receiver CORS differential positioning process,this article introduces four commonly used methodsSDK access,broadcast messages,simulated positioning,and GNSS
7、module transplantationto enhance Android mobile application using portable GNSS receivers.Through comparative analysis and evaluation,the article analyzes the applicable sce-narios of each method,evaluates their stability and compatibility,as well as the reliability and completeness of the positioni
8、ng information provided by each method.The research shows that the GNSS module transplantation method is recommended for customized devices such as high-pre-cision GNSS positioning tablets,while the SDK access method is recommended for portable GNSS receivers.The article also provides recommendation
9、s to optimize these methods.This research has been applied in the Chongqing“National Land Survey Cloud”test version to support the ubi-quitous location service needs of surveying and monitoring businesses with diverse and persona-lized requirements.Keywords GNSS,Mobile Terminals,CORS Copyright 2023
10、by author(s)and Hans Publishers Inc.This work is licensed under the Creative Commons Attribution International License(CC BY 4.0).http:/creativecommons.org/licenses/by/4.0/1.引言引言 在移动互联网与 3S 技术的推动下,自然资源管理领域正飞速迈向数据云服务化、业务流程信息化、作业系统移动化的新服务模式。目前,众多调查监测业务平台采用移动 App 服务架构,实现了外业数据的数字化采集,极大提升了外业工作者的工作效率。然而,消
11、费级移动终端较低的定位精度制约了移动业务平台外业数据采集质量,让高精度的调查监测业务场景、作业模式出现“落地难题”。为解决上述问题,众多学者研究使用手机、平板电脑等移动终端自身 GNSS 导航芯片实现高精度定位的技术1 2,但受限于消费级移动终端的 GNSS 天线性能,采用便携式 GNSS 接收机的定位结果要明显优于移动终端 GNSS 原始观测量的定位结果3 4。目前,国内企业如芯星通、梦芯科技等相继研发出适合于低功耗、小型化接收机的 GNSS 定位模组,基于高精度 GNSS 定位模组开发的便携式 GNSS 接收机提升消费级移动终端定位能力,能够为移动业务平台型应用程序提供更精准的位置服务。该
12、方案成本低廉、使用简便,已具备了有利的应用条件。本文基于安卓系统的 GNSS 定位服务架构和便携式 GNSS 接收机 CORS 差分定位流程,介绍四种移动应用定位增强方法,通过对各种方法开展分析评估,指出最佳的定位增强方法,并给出优化建议。本文的研究,将有助于促进移动应用程序高精度定位服务场景的推广。2.安卓系统的安卓系统的 GNSS 定位服务架构定位服务架构 安卓系统的架构分为四层,分别是应用层、框架层、系统运行库层和 Linux 内核层。安卓系统的 GNSS定位服务同样采用分层架构,如图 1 所示。在应用层和框架层,安卓框架的 Android Location 类库为位置服务应用获取当前设
13、备的地理位置提供支持,它包括两个主要的类:Location 和 LocationManager。其中,Location 用于表示设备的位置信息,LocationManager 则是整个定位服务的入口类。LocationManager 通过 Binder 机制开启LocationManagerService给应用程序提供位置信息,LocationProvider 则是位置数据的提供者。LocationManagerService 通过调用Open AccessOpen Access杨凯 等 DOI:10.12677/hjwc.2023.134005 51 无线通信 LocationProvide
14、rInterface 实现定位服务,具体实现 LocationProviderInterface 接口的位置数据提供者包括GpsLocationProvider、MockProvider、LocationProviderProxy、PassiveProvider 等。其中,GpsLocationProvider提供 GNSS 卫星定位信息,是精度最高的定位方式。Figure 1.The architecture diagram of GNSS positioning service in the Android system 图图 1.安卓系统的 GNSS 定位服务架构图 在运行库层,JNI
15、衔接 Java 编写的框架层与 C、C+编写的 HAL 层,起到承上启下的过渡作用5。HAL 层提供了设备抽象化接口,当 Android 添加或更改 GNSS 硬件设备,需要移植和实现 GNSS 硬件设备驱动模块,对接 HAL 层接口,通过解析 GNSS 硬件设备的 GNSS 数据,将其转换成安卓系统支持的Location 对象,供上层服务调用。在 Linux 内核层和 GNSS 硬件层,GNSS 硬件设备通过 UART、USB、SPI 等硬件总线与处理器通信,高精度GNSS模块输出的原始定位数据格式通常采用NMEA(National Marine Electronics Associatio
16、n)协议标准,Linux 内核层使用 UART 等驱动模块实现 GNSS 数据的读写操作,确保数据的稳定传输。采用上述分层管理机制,保证了安卓系统 GNSS 定位服务的模块化、抽象化和可扩展性,实现了整个 GNSS 定位流程的顺畅、稳定运行。3.便携式便携式 GNSS 接收机接收机 CORS 差分定位流程差分定位流程 目前,卫星导航实时高精度定位主要采取 RTK(Real-Time Kinematic,实时动态差分)、网络 RTK(Network RTK)等差分定位技术。RTK 定位技术要设置参考站,便携式 GNSS 接收机与参考站的距离受限,随着我国北斗地基增强系统和连续运行参考站系统(CO
17、RS)的建设,便携式 GNSS 接收机高精度定位首选网络 RTK 定位技术。网络 RTK 技术利用广泛均匀分布的连续运行参考站,对便携式 GNSS 接收机所在作业区域形成区域组网覆盖,将多个参考站的 GNSS 观测数据通过数据链路发送到数据处理中心。数据处理中心结合参考站的已知坐标、基线处理与观测值内插技术,根据便携式 GNSS 接收机上传的粗略位置,通过移动网络杨凯 等 DOI:10.12677/hjwc.2023.134005 52 无线通信 向便携式 GNSS 接收机播发差分改正数据。便携式 GNSS 接收机通过天线接收卫星信号,结合移动网络获取的差分改正数据,利用 GNSS 定位模组解
18、算高精度位置6。整个流程如图 2 所示。Figure 2.The CORS differential positioning workflow for portable GNSS receivers 图图 2.便携式 GNSS 接收机 CORS 差分定位流程 便携式 GNSS 接收机与移动终端的结合类型分为内置型与外置型两种。内置型 GNSS 接收机通过UART 或 USB 等接口与移动终端处理器通信,与移动终端组成一个较为完整的电子设备或系统,具有一定的封装度和集成度。外置型 GNSS 接收机通过蓝牙或 USB 等接口与移动终端通信,绝大多数低成本外置型GNSS接收机不配备蜂窝网络模块,采用
19、移动终端网络连接CORS服务器,整个网络RTK定位流程、蓝牙或 USB 通信传输、NMEA 解析和设备状态监测等代码由便携式 GNSS 接收机厂家或专业开发者封装成 SDK,以便降低应用程序高精度位置服务的开发成本和难度。值得注意的是,便携式 GNSS 接收机连接 CORS 服务器可采用 SDK 机器码登录或 Ntrip 登录两种方式。SDK 机器码登录方式与设备绑定,一机一码,直接获取 CORS 差分服务。Ntrip 登录方式遵循 Ntrip协议,登录 CORS 服务器要配置 IP、端口、账户等信息,多个设备能够使用一个账号。因此,采用 Ntrip登录方式,移动应用程序应提供交互界面让用户输
20、入 CORS 登录配置信息。4.移动应用定位增强方法移动应用定位增强方法 便携式 GNSS 接收机获取高精度位置信息后,如何将该位置信息传递给移动应用成为关键。根据安卓系统 GNSS 定位服务架构,常用的定位增强方法有四种。接下来,本文将详细介绍各种方法的具体实现过程。4.1.SDK 接入接入法法 本方法将便携式 GNSS 接收机的 SDK 直接接入移动应用程序。移动应用程序开发者应根据 SDK 提杨凯 等 DOI:10.12677/hjwc.2023.134005 53 无线通信 供的开发文档,将 SDK 文件添加到工程中,并在 build.gradle 中添加依赖,同时在 Manifest
21、 文件中添加必要的权限,随后程序调用 SDK 的实时定位接口实现 SDK 代码集成。随着便携式 GNSS 接收机新设备和新版本的更新,要求应用程序及时更新 SDK。4.2.广播消息广播消息法法 本方法利用安卓广播消息机制接收便携式 GNSS 接收机的高精度位置信息。首先,设计一个定位辅助软件,该软件集成了便携式 GNSS 接收机的 SDK,并提供交互界面,让用户输入 CORS 配置信息,以便支持 Ntrip 登录。定位辅助软件启用 foreground service 常驻后台,在服务中利用 Broadcast 发送高精度位置信息,移动应用程序根据对应的 Intent 和提前定义的消息结构,接
22、收实时定位信息。4.3.模拟位置模拟位置法法 本方法采用 MockProvider 替代 GpsLocationProvider 提供高精度位置信息。为实现该方法,要求系统开启“开发者选项”,并设计一个定位辅助软件作为模拟位置应用程序。该定位辅助软件集成了便携式GNSS 接收机的 SDK,并提供交互界面配置 CORS 信息。定位辅助软件使用 LocationManager 类获取一个 Location 实例,并将便携式 GNSS 接收机输出的位置、精度等信息注入该 Location 对象,通过调用setTestProviderEnabled()和 setTestProviderStatus()
23、方法来设置模拟位置来源的状态和可用性,使用setTestProviderLocation()方法向系统发送模拟位置信息。在系统运行时,系统中所有应用都能够获取便携式 GNSS 接收机的高精度位置信息。4.4.GNSS 模组移植模组移植法法 本方法要求修改系统底层源码,整个开发步骤主要包括两部分:GNSS 模组接口的驱动开发和 HAL层的 GNSS 模组驱动开发。首先,确认 GNSS 模组的接口类型、通信协议和硬件平台信息。以采用 UART接口的 GNSS 模组为例,由于安卓底层的 Linux 系统一般包含 UART 接口驱动,GNSS 模组接口的驱动开发主要工作是测试和验证 UART 接口是否
24、正常工作。随后,在 HAL 层将厂家提供的 GNSS 模组驱动代码放入安卓源码的 hardware 目录下,修改对应的配置信息,重新编译后将生成的 gps.default.so 拷贝到system/lib/hw/gps.default.so,重新编译安卓系统完成 GNSS 模组移植7。系统运行时,直接调用 JNI 层的native 方法,为上层 GpsLocationProvider 提供高精度 GNSS 模组的位置信息。5.定位增强方法分析评估定位增强方法分析评估 5.1.应用场景分析应用场景分析 上述四种定位增强方法与系统软、硬件平台紧密相关,有各自合适的应用场景。GNSS 模组移植法要求
25、硬件和系统均为定制版本,将 GNSS 模组集成到终端设备的硬件或系统中。因此,高精度 GNSS 定位平板电脑、高精度手持移动终端等定制化一体机一般采用该方法,为系统内所有应用提供稳定的高精度位置服务。模拟位置法不修改安卓系统底层代码,能为系统内所有应用提供高精度位置服务,且应用程序不需要修改代码,适合外置便携式 GNSS 接收机硬件主导的服务模式。广播消息法可适配多款外置便携式 GNSS 接收机的 SDK,支持采用统一的 Ntrip 账户登录。而移动应用只要定义统一的消息结构就能支持多款外置便携式 GNSS 接收机,适合移动应用主导的服务模式。SDK 接入法每次只能为移动应用接入一款便携式 G
26、NSS 接收机设备。当 SDK 接入过多,会给移动应用性能和代码管理带来很多麻烦,比如 SDK 升级和冲突问题、代码可读性和可维护性下降、应用性能杨凯 等 DOI:10.12677/hjwc.2023.134005 54 无线通信 下降等。因此,SDK 接入法只适合精选少数几款设备接入应用程序。总体来看,GNSS 模组移植法适合高精度 GNSS 定位平板电脑等一体机,而模拟位置法、广播消息法、SDK 接入法适合外置便携式 GNSS 接收机,应用场景各有侧重。5.2.稳定性、兼容性评估稳定性、兼容性评估 GNSS 模组移植法应用场景比较稳定,而模拟位置法、广播消息法、SDK 接入法由于要适配不同
27、系统版本和硬件厂家的移动终端,结合外置便携式 GNSS 接收机“随插随用”的工作特性,给各方法的稳定性和兼容性带来了极大的挑战。使用模拟位置法,当外置便携式 GNSS 接收机接触不良或非正常退出,系统位置服务将无法正常工作。与此同时,模拟位置法还会带来业务安全性和位置欺诈风险,甚至部分应用程序会检测和禁用系统模拟位置权限或不采纳模拟位置坐标。此外,模拟位置法和广播消息法要求定位辅助软件能够常驻后台,但系统出于资源分配紧张、电量优化策略、用户使用模式、安全限制等原因,会限制后台程序的运行,两种方法长时间使用稳定性不足。SDK 接入法所有定位流程在一个移动应用中实现,稳定性高。但由于外置便携式 G
28、NSS 接收机易接触不良或非正常退出,定位服务具体实现时仍然要注意外置便携式 GNSS 接收机 SDK 和本地定位接口间的无缝切换。由此可见,GNSS 模组移植法和 SDK 接入法在各自的应用场景中比较稳定,而模拟位置法和广播消息法均不能保障长时间的稳定运行。在兼容性方面,模拟位置法要求系统为安卓 6.0 以上版本,且开启“开发者选项”。模拟位置法和广播消息法由于各品牌设备、不同安卓系统版本后台管理策略不同,定位服务能力不一。5.3.定位信息的可靠性、完备性评估定位信息的可靠性、完备性评估 GNSS 模组移植法和模拟位置法虽然为系统内所有应用提供高精度定位服务,第三方应用不用修改代码,但移动应
29、用调用定位服务时一般不会读取模糊度固定状态等信息。即使利用系统下拉菜单显示模糊度固定状态使用,由于 RTK 定位的时延等因素,厘米级高精度定位服务场景数据采集并不可靠。SDK 接入法和广播消息法通过解析 NMEA 数据,利用自定义的接口输出,移动应用需要针对高精度定位服务场景修改代码,保障了高精度定位信息完备可靠的获取。根据上述分析评估,对于高精度 GNSS 定位平板等定制化一体机,建议采用 GNSS 模组移植法,对于外置便携式 GNSS 接收机,则建议采用 SDK 接入法。不过,这两种方法均存在缺陷,采用 GNSS 模组移植法能够为系统中所有应用提供高精度位置服务,但普通移动应用程序未考虑高
30、精度定位应用场景,读取的位置信息缺失模糊度固定状态,无法保障厘米级高精度定位数据的可靠获取。采用 SDK 接入法,移动应用同时接入的外置 GNSS 设备数量不宜过多,SDK 依赖的第三方库容易造成项目库冲突,SDK 升级更新麻烦造成代码维护困难。6.定位增强方法优化建议定位增强方法优化建议 针对 GNSS 模组移植法和 SDK 接入法存在的问题,本文给出如下优化建议:1)对采用GNSS 模组移植法的高精度GNSS 定位平板电脑等一体机,第三方移动应用为了可靠地获取高精度位置信息,仍然要针对“高精度定位模式”修改代码。建议采用 mLocationManager.addNmeaListener添加
31、 Nmea 数据监听,在对应的回调函数中解析 NMEA 的 GPGGA 语句,获得完整的实时高精度定位信息。同时,建议应用程序界面提供数据面板实时显示当前可观测卫星数量、定位精度、模糊度固定状态杨凯 等 DOI:10.12677/hjwc.2023.134005 55 无线通信 等信息,辅助高精度定位服务场景的数据采集工作。2)对采用 SDK 接入法的外置便携式 GNSS 接收机,建议移动应用优选少数几款外置便携式 GNSS接收机覆盖多个典型高精度定位服务场景,构建外置增强设备产品族。多款设备建议采用统一的 SDK 接入移动应用,每次版本更新后,SDK 的 API 接口尽可能保持不变。由于外置
32、便携式 GNSS 接收机频繁连接断开,为了优先保证移动应用业务的可用性,建议制定底层定位服务轮询机制,做到便携式 GNSS 接收机接触不良或意外退出时,外置便携式 GNSS 接收机 SDK 和本地定位接口间的无缝切换。7.结束语结束语 为探索新型 GNSS 定位增强技术路径和服务体系,本文探讨了利用便携式 GNSS 接收机增强安卓移动应用定位能力的诸多方法。研究表明,高精度 GNSS 定位平板电脑等一体机建议选用 GNSS 模组移植法,移动应用使用 addNmeaListener()方法获取 NMEA 数据,保证高精度定位场景中数据采集的可靠性;外置便携式 GNSS 接收机建议采用 SDK 接
33、入法,优选少数几款外置便携式 GNSS 接收机,采用统一的SDK 接入移动应用,并做好底层位置服务的轮询,保障移动应用业务的稳定运行。目前,相关研究成果已应用在重庆“国土调查云”测试版中,支撑调查监测业务多样化、个性化的泛在位置服务需求。基金项目基金项目 重庆市自然科学基金面上项目:BDS和GPS三频信号联合精密定位方法研究(cstc2020jcyj-msxmX1034)。参考文献参考文献 1 张楷时.安卓智能终端精密定位关键技术研究D:硕士学位论文.郑州:战略支援部队信息工程大学,2019.2 刘永胜,高成发,陈波,孙璞玉,王斌.安卓智能手机的精密单点定位模型研究J.测绘科学,2021,46
34、(2):15-19+33.3 陈波,高成发,刘永胜,陆轶材.安卓手机终端原始 GNSS 观测数据质量分析J.导航定位学报,2019,7(3):87-95.4 冷宏宇,秘金钟,徐彦田,赵硕.智能手机终端 RTK 定位性能分析J.测绘科学,2020,45(12):15-21.5 李鑫泽.基于 Android 的 GPS 模块设计与实现D:硕士学位论文.郑州:郑州大学,2013.6 张云,马天翊,阙扬州,苏天祥,夏炜,黄勤豪.移动终端中的GNSS高精度定位技术评估C/中科北斗汇(北京)科技有限公司.第九届中国卫星导航学术年会论文集S09 用户终端技术:2018 年卷.2018:118-123.7 李欣伟,邬泳.基于 Android 的 UART&USB 接口 GNSS 模块的驱动开发C/中国卫星导航学术年会.第七届中国卫星导航学术年会论文集S01 北斗/GNSS 应用技术:2016 年卷.2016:68-72.