V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
coolfan
V2EX  ›  分享创造

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

  •  
  •   coolfan · 50 天前 · 2100 次点击
    这是一个创建于 50 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前一直好奇设备和设备之间的时间是怎么同步的,查了一些资料后发现只是几个简单的网络请求就可以了。

    意外想起来 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 程序

    12 条回复    2024-07-29 10:06:01 +08:00
    yyzh
        1
    yyzh  
       50 天前 via Android
    额.手机不是都从基站接收的时间数据么?
    Greatshu
        2
    Greatshu  
       50 天前
    cellular-z 可以查看 NMEA 日志
    hhacker
        3
    hhacker  
       50 天前
    卫星是原子钟时间, 你手机收到数据的时候, 时间已经过去了
    xinyana
        4
    xinyana  
       50 天前 via Android
    你别说你做的这小玩意儿还挺有意思
    wy315700
        5
    wy315700  
       50 天前 via Android
    卫星授时我记得不能直接用卫星发送的时间

    而是要扣掉卫星到设备的距离传输的时间
    wy315700
        6
    wy315700  
       50 天前 via Android
    GPS 轨道高度 20183km 左右,算算电磁波传输的速度,刚好是几十 ms 的偏差
    coolfan
        7
    coolfan  
    OP
       50 天前
    @yyzh 现在的手机基本都是从基站和网络。其实基站还能提供卫星的星历,加快搜星和定位
    winglight2016
        8
    winglight2016  
       50 天前
    几十毫秒的偏差——这就是 GPS 定位原理呀,三个卫星到你手机的时差可以算出卫星和你的距离,然后就能定位经纬度了,甚至包括海拔。
    coolfan
        9
    coolfan  
    OP
       50 天前
    @hhacker
    @wy315700 #5
    其实开发文档里直接给了计算公式。https://developer.android.com/reference/android/location/GnssClock?hl=en#getFullBiasNanos()
    这个值不是卫星直接的时间戳,也是经过 GPS 芯片处理后的值😗我想这种误差应该已经被纠正了吧
    fugu37
        11
    fugu37  
       50 天前   ❤️ 1
    不清楚 Android 如何处理 GNSS ,只说 GNSS 模块。

    GNSS 模块本身需要接受到多颗卫星信号 + 一定时间解算才能得到准确的时间,手机上 GNSS 很少长时间开启。

    另一方面,GNSS 的模块输出分为两部分:1. 串口输出 NMEA 数据 2. GPIO 引脚输出 1pps 数据。只有后者是准确的时间,前者的准确度未必比得上 NTP 。
    Tsing2
        12
    Tsing2  
       49 天前   ❤️ 2
    你要说没用吧,理论确实,GPS 不太可靠,我还记得 20 年前 GPS 发生过一次授时错误,造成全球 CDMA 网络(包括当时的中国电信)瘫痪的事故,相比之下,随便哪个 NTP 都要比这靠谱。
    但这个确实好玩,哈哈哈哈,极客追求的都是这种没啥用但具有成就感的东西,记得《生活大爆炸》里有个桥段,极客男主们通过网络遥控电器,Penny 来了句“你知道你们可以从 Radio Shack 买个通用遥控,那个非常便宜”。极客们的浪漫,麻瓜们很难懂的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   943 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 91ms · UTC 19:47 · PVG 03:47 · LAX 12:47 · JFK 15:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.