没用的玩具:在安卓设备上查看来自卫星授时的结果

查看 63|回复 9
作者:coolfan   
之前一直好奇设备和设备之间的时间是怎么同步的,查了一些资料后发现只是几个简单的网络请求就可以了。
意外想起来 GPS 接收器会涉及到高精度的时间用来产生位置信息。手边的手机不就是一个 GPS 接收器吗?
查了一些资料,发现安卓允许应用访问 GNSS (泛指所有的卫星导航系统,GPS 、北斗、伽利略等)的原始测量值,这是不是就可能可以用手机展示来自卫星的授时结果了。
TimeIs

介绍
仅支持 Android 。
由 Flutter 编写的一个简单的显示当前时间和日期的应用。时间是从 GNSS 服务获取,来自于卫星数据。
当前时间
实时显示当前时间。
上次获取到的世界协调时
来自卫星的数据是不连续的,此处展示的是上次获取的时间转换为世界协调时间的结果。
⚠️注意⚠️
坦率地说,这个东西没有什么用,因为它得到的时间在不同设备上总是有几十毫秒的偏差,我也不知道为什么。🤣如果你能接收这个级别的误差,我想它是为数不多的能够提供卫星授时的程序。
https://github.com/Coooolfan/TimeIs
也可以直接从 https://github.com/Coooolfan/TimeIs/releases/tag/v0.1.0-beta 下载打包好的 apk 程序
yyzh   
额.手机不是都从基站接收的时间数据么?
Greatshu   
cellular-z 可以查看 NMEA 日志
hhacker   
卫星是原子钟时间, 你手机收到数据的时候, 时间已经过去了
xinyana   
你别说你做的这小玩意儿还挺有意思
wy315700   
卫星授时我记得不能直接用卫星发送的时间
而是要扣掉卫星到设备的距离传输的时间
wy315700   
GPS 轨道高度 20183km 左右,算算电磁波传输的速度,刚好是几十 ms 的偏差
coolfan
OP
  
@yyzh 现在的手机基本都是从基站和网络。其实基站还能提供卫星的星历,加快搜星和定位
winglight2016   
几十毫秒的偏差——这就是 GPS 定位原理呀,三个卫星到你手机的时差可以算出卫星和你的距离,然后就能定位经纬度了,甚至包括海拔。
coolfan
OP
  
@hhacker
@wy315700 #5
其实开发文档里直接给了计算公式。https://developer.android.com/reference/android/location/GnssClock?hl=en#getFullBiasNanos()
这个值不是卫星直接的时间戳,也是经过 GPS 芯片处理后的值😗我想这种误差应该已经被纠正了吧
您需要登录后才可以回帖 登录 | 立即注册

返回顶部