public long getFullBiasNanos ()
类中的方法GnssClock
定义为:
GPS内部硬件时钟(getTimeNanos())的区别 接收器和自 1980 年 1 月 6 日 0000Z 以来的真实 GPS 时间 纳秒。
所以我假设每次我都会收到 gnss 测量的回调事件(我从中提取 gnss 时钟),这个数字将会增长,因为后续调用在后续时间到达,因此接收到的测量的时间会更大(我们自然会远离 1980 年,而不是走向它)
然而情况似乎并非如此,这是我在应用程序运行时获得的两个读数(第一个和最后一个):(附有日期和时间戳)
第一个是14:11:40
2022-07-06 14:11:40.985 12285-12304/com.example.gnss1 I/aabaab:完整 纳米偏差:-1340320027695657699
最后一次是14:13:40
2022-07-06 14:13:40.040 12285-12304/com.example.gnss1 I/aabaab:已满 纳米偏差:-1340320027695649792
正如你所看到的,在应用程序运行了整整2分钟后,
getFullBiasNanos()
的结果并没有增加,它实际上减少了几千纳秒,而它应该增加数千亿纳秒-秒。不是完整的解决方案,但可能是其中的一部分:
gnssClock.getTimeNanos()
检索自重启以来直到卫星发出的 gnss 测量值所经过的纳秒数,gnssClock.getFullBiasNanos()
则检索 GPS 纪元(1980)之间的纳秒数,直到重新启动。解释就像getFullBiasNanos的官方文档一样。我想补充的是,这种方法应该反映本地GNSS接收器时钟和GPS时钟之间的相对稳定性。通常,每个 GnssMeasurementsEvent.Callback 之间的持续时间应为 1 秒。如果您记录 GnssMeasurementsEvent(您可以参考 GNSSLogger android 应用程序),
gnssClock.getTimeNanos()
间隔是完美的 1 秒。本地 GNSS 接收器时钟无法达到如此高精度。同时,gnssClock.getFullBiasNanos()
间隔波动,其值小于1us。结合这两个值,估计的 GPS 时间应具有美国级精度。欢迎更多关于GnssClock的讨论。