【GNSS】 Android GNSS数据采集入门:GNSSLogger完整配置指南
2026/7/22 4:29:49 网站建设 项目流程

Android GNSS数据采集入门:GNSSLogger完整配置指南

本文内容基于以下SPIE会议论文:

Zixia Shang, “Off-line Data Processing Based on GNSSLOGGER, GNSS System Positioning Data Quality and Accuracy Analysis,” Fourth International Conference on Geology, Mapping, and Remote Sensing (ICGMRS 2023), Wuhan, China, 14-16 April 2023. Proceedings of SPIE, Vol. 12978. DOI: 10.1117/12.3019575

该论文收录于SPIE数字图书馆,分类号:TB96-53,馆藏号:019638/TB96-53/6:V.12978。论文实验数据已上传至GitHub:https://github.com/ZixiaShang/GNSSLOGGER-Data-8

一、为什么要用GNSSLogger?

全球导航卫星系统(GNSS)已经发展成为多系统同时运行的格局,包括美国的GPS、俄罗斯的GLONASS、中国的北斗卫星导航系统(BDS)以及欧洲的Galileo。目前,全球共有70-80颗可供GNSS使用的在轨卫星。对于导航和定位来说,数据质量至关重要,它直接决定了GNSS卫星导航定位的精度和可靠性。然而,数据质量会受到外部观测环境、接收器质量以及卫星健康状况等多重因素的影响。

自2016年Google I/O大会宣布Android系统支持获取原始GNSS观测数据以来,移动端高精度定位研究迎来了爆发式增长。GNSSLogger正是Google官方推出的数据采集工具,它可以帮助用户获取原始GNSS测量值GnssStatusNMEA数据导航消息以及RINEX日志

GNSSLogger的核心功能:

  • 记录原始GNSS测量数据(Raw GNSS Measurements)
  • 记录GnssStatus(卫星状态信息)
  • 记录NMEA语句(标准导航数据格式)
  • 记录导航消息(Navigation Messages)
  • 记录传感器数据(加速度计、陀螺仪等)
  • 生成RINEX格式日志

GNSSLogger可用于手机和手表,是GNSS研究者和开发者最基础、最权威的数据采集工具。

二、设备兼容性:你的手机能用吗?

2.1 Android版本要求

根据Android官方文档:

Android版本原始GNSS测量支持
Android 10(API 29)及以上必须支持
Android 9(API 28)及以下硬件年份2016年或更新的设备必须支持

目前,超过90%的现有Android手机都具有原始测量数据能力

2.2 支持的测量字段

不同设备的GNSS芯片组不同,支持的字段也有所差异:

  • 伪距和伪距率(Pseudorange and pseudorange rate)
  • 导航消息(Navigation messages)
  • 自动增益控制器(AGC)值
  • 累计变化量(ADR)/ 载波相位
  • 多频段支持:Pixel、Motorola、Samsung、Xiaomi、OnePlus等厂商的大多数旗舰手机已支持L1和L5频段

⚠️ 特别注意:如果您的设备始终报告可用ADR为0,即使在停车状态下且已停用占空比也是如此,则表明您的设备不支持可用于高精度GNSS的载波相位测量。

三、GNSSLogger的安装方式

方式一:从Google Play安装(推荐)

这是最简单快捷的方式。直接在Google Play搜索“GnssLogger”即可安装。

应用由Google官方开发,支持:

  • 控制各种数据记录,如原始GNSS测量、GnssStatus、NMEA、导航消息等
  • 将GNSS和传感器数据记录为CSV和RINEX文件
方式二:从源码构建(适用于开发者)

如果你需要修改源码或进行二次开发,可以从GitHub获取源码。

详细步骤

  1. 安装Android Studio(如果尚未安装)
  2. 克隆项目代码
    gitclone https://github.com/google/gps-measurement-tools.git
  3. 打开项目:在Android Studio中,选择File -> Open,定位到下载的仓库中的GNSSLogger目录
  4. 等待Gradle同步完成
  5. 构建项目:点击顶部面板的Build选项卡,选择Rebuild Project
  6. 连接手机:确保手机已开启开发者模式和USB调试,并显示在Android Studio的设备列表中
  7. 运行应用:点击Run选项卡 ->Run App

四、GNSSLogger的配置与使用

4.1 首页(Home Tab)配置

打开GNSSLogger应用后,在“Home”标签页中可以看到多种数据记录开关:

开关选项说明论文中的使用
Fix记录定位解算结果(含FLP/GPS/NLP)✅ 开启
Raw记录原始GNSS测量值(伪距、载波相位等)✅ 开启
NMEA记录NMEA语句按需开启
Rinex记录RINEX格式数据按需开启
GnssStatus记录卫星状态信息按需开启
Sensors记录加速度计、陀螺仪等传感器数据按需开启

论文中的配置:论文《Off-line Data Processing Based on GNSSLOGGER》使用GNSSLoggerv3.0.5.6进行数据采集。

4.2 Settings Tab 关键设置

在开始记录之前,建议进行以下设置:

  • 开启“Screen Always ON”:防止屏幕熄灭后应用被系统休眠,导致数据记录中断
  • 开启“Location”权限:这是获取GNSS数据的前提
  • 开启“Measurement”开关:启用GNSS测量功能
4.3 开始记录数据

Step 1:开启权限
在手机设置中为GNSSLogger授予位置权限

Step 2:等待卫星可用
在Settings Tab中开启“Location”和“Measurement”开关后,等待显示“GNSS Measurement are Available”。该提示在4颗以上卫星可用时才会显示。

Step 3:开始记录
点击“Start Log”按钮,应用开始记录数据。论文中的实验在晴朗天气的下午进行数据采集,以尽量减少“雨衰”对卫星信号的影响。

Step 4:停止并导出
完成数据采集后,点击“Stop Log”停止记录。

4.4 日志文件位置

日志文件保存在手机的内部存储中:

/Android/data/com.google.android.apps.location.gps.gnsslogger/files/gnss_log/

如果需要将文件导出到电脑进行分析,可以通过USB连接手机后复制该目录下的文件。

五、日志文件格式详解

5.1 行前缀(Row Prefixes)

GNSSLogger输出的每一行都以特定的字符串前缀标识数据类型:

前缀数据类型说明
Raw原始GNSS测量数据伪距、载波相位、多普勒、C/No等
Fix定位解算结果经纬度、高度、速度、精度等
Nav导航消息卫星导航电文
NMEANMEA语句标准导航数据格式
Accel/UncalAccel加速度计数据m/s²
Gyro/UncalGyro陀螺仪数据rad/s
5.2 Fix 行格式(重点)

Fix行是后续MATLAB数据分析中最常处理的数据类型,包含17个CSV字段:

Fix,Provider,Lat,Lon,Alt,Speed,Accuracy,Bearing,UnixTimeMs,...

各字段含义:

列号字段说明
1Fix固定标识符
2Provider定位提供者:FLP/GPS/NLP
3Lat纬度(度)
4Lon经度(度)
5Alt海拔高度(米)
6Speed速度(米/秒)
7Accuracy定位精度(米)

三种Provider的区别

Provider全称数据来源
GPSGNSS Location Provider纯GNSS卫星定位
NLPNetwork Location Provider基站和Wi-Fi接入点定位
FLPFused Location Provider多GNSS数据 + NLP融合定位

论文研究表明,融合系统(FLP)的稳定性、刚性和精度远优于单一GNSS系统(GPS)

5.3 Raw 行格式

Raw行记录的是最原始的GNSS观测数据:

  • 伪距(Pseudorange)
  • 载波相位(Carrier Phase / ADR)
  • 多普勒频移(Doppler)
  • 载波噪声密度(C/No)

这些数据是进行高精度定位分析的基础。

六、GNSSLogger v3.1 测量屏幕详解(进阶)

借助GNSSLogger v3.1,用户可以在测量屏幕上实时查看和分析原始GNSS数据。

6.1 顶部卡片:GNSS时钟与硬件状态

左上角:显示GNSS时钟数据(对应GnssClock类)

  • 当前GNSS时间
  • 时钟偏差等信息

右上角:显示GNSS硬件(HW)中断次数(来自GnssClock.getHardwareClockDiscontinuityCount()

  • 当此计数器递增时,表示GNSS信号的连续观测中断
  • 这有助于判断是否启用了占空比周期性调制(一种省电模式)
  • 占空比调制开启时,GNSS信号接收会周期性中断,影响高精度定位
6.2 中部卡片:测量结果汇总

“# 有效的测量”:测量结果被视为有效需要满足的条件:

  • 必须在GnssMeasurement.getState()中设置STATE_CODE_LOCK(码锁定)
  • 并且设置STATE_TOW_KNOWN(周内时已知)或STATE_TOW_DECODED(周内时已解码)

“# 可用的累积差值范围(ADR)”:ADR(载波相位)被视为可用于定位的条件:

  • 必须设置ADR_STATE_VALID标志
  • 不能设置ADR_STATE_RESET(重置)或ADR_STATE_CYCLE_SLIP(周跳)
6.3 底部卡片:单个卫星测量值

底部卡片中,每一行代表一个单独的GnssMeasurement(一颗卫星的一个信号):

代码类型列:使用RINEX 4.01中定义的代码类型显示GNSS信号的确切类型

  • 例如,GPS L1信号的代码类型为“C”,表示L1 C/A码
  • GPS L5信号将具有“Q”代码类型

Rx SV Time (ns)列:如果测量结果有效,文本显示为绿色

状态列:显示GnssMeasurement.getState()字段中设置的按位标志的人类可读版本,有效时也显示为绿色

七、数据采集实操建议

基于论文的实践经验,以下是数据采集的关键建议:

建议说明
选择晴朗天气减少“雨衰”对卫星信号的影响
选择开阔环境避免建筑物群遮挡卫星信号
保持屏幕常亮在Settings中开启“Screen Always ON”
保证设备电量长时间记录会消耗较多电量
固定设备位置如需高精度对比,建议使用三脚架固定手机
多设备对比不同厂商的GNSS芯片性能差异显著

论文中使用的实验设备:

  • Xiaomi 22041216C
  • Xiaomi M2007J17C
  • HUAWEI DBY-W09

八、常见问题与解决方案

问题可能原因解决方案
手机不支持原始GNSSAndroid版本过低或硬件太旧检查Android版本≥7.0,确认硬件年份≥2016
日志文件为空未开启Location或Measurement权限检查权限设置,等待“GNSS Measurement are Available”提示
ADR始终为0设备不支持载波相位测量检查设备是否在支持列表中
信号质量差处于建筑物密集区域选择开阔环境采集数据
不同设备结果差异大GNSS芯片组不同了解设备具体的GNSS能力

九、下一步预告

本文是“GNSS数据采集、处理与可视化全流程”系列的第一篇。在后续文章中,我们将:

  • 第二篇:使用GNSSAnalysis和MATLAB对采集的数据进行质量分析
  • 第三篇:使用MATLAB读取和筛选GNSSLogger的Fix数据
  • 第四篇:基于速度进行分段彩色轨迹绘制
  • 第五篇:对比单系统与多系统融合的定位精度
  • 第六篇全流程复盘与工程化建议

十、参考资料

  1. GNSS 原始测量数据 | Android Developers
  2. 使用 GnssLogger 分析原始测量数据 | Android Developers
  3. GPS Measurement Tools GitHub仓库
  4. 论文实验数据:https://github.com/ZixiaShang/GNSSLOGGER-Data-8

📌 系列文章索引

  • 第一篇:Android GNSS数据采集入门:GNSSLogger完整配置指南(本文)
  • 第二篇:GNSS数据解析与质量分析:从GNSSAnalysis到MATLAB
  • 第三篇:MATLAB读取GNSSLogger数据:Fix记录筛选与提取实战
  • 第四篇:MATLAB地理轨迹可视化:基于速度的分段彩色地图绘制
  • 第五篇:多GNSS系统定位对比:单系统与融合系统精度分析
  • 第六篇:GNSS数据处理全流程复盘:从手机到地图的完整链路

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询