【问题标题】:Synchronize timestamps across multiple devices跨多个设备同步时间戳
【发布时间】:2023-03-20 16:43:01
【问题描述】:

我正在尝试在多个 Android 设备之间同步时间戳,以便同时启动一项任务。我认为我可以使用Timer 并基于 System.currentTimeMillis() 设置日期,但问题似乎是多个设备的时间戳彼此相距足够远,以至于我没有得到我的精度想要。

如果可能的话,我正在查看 50-100 毫秒范围内的某个地方。我的一个想法是使用 Android Beam 将一个设备的时间戳发送到另一台设备,然后计算一个增量,但事实证明我必须在消息实际发送和接收之前获取时间戳(即用户越长等待发送,增量会越大),这使得该方案完全崩溃。

如何同步两个或更多设备,以使它们的内部时钟彼此之间的间隔不超过 100 毫秒?这甚至可以在不使用保持时间的外部服务器的情况下实现吗?

任何其他关于尽可能同时在多个设备上做某事的技术的建议也将受到欢迎。

【问题讨论】:

    标签: android


    【解决方案1】:

    为什么不使用 GPS 时间? GPS 的时间标签非常准确。

    您可以在特定时间同意所有设备,然后在 GPS 告诉您时启动它。

    【讨论】:

    • 我尝试使用 GPS 定位。我能够得到它并设置增量,虽然我还没有得到同步,但我不知道这是否可行。在我的实际测试中,有时我不得不等待一分钟以上的 GPS 信号。更不用说,这将是该应用程序所需的另一项许可。我现在会继续使用 GPS 时间方法,看看我是否可以制定一个有效的同步方案,但我不知道从长远来看使用 GPS 是否可靠。
    【解决方案2】:

    基本上,您有两种选择:简单的方式或困难的方式。

    简单的方法是使用单个外部源来获取时间信号,例如NIST、另一个互联网源或@Stefan 建议的 GPS。 Internet 资源使用 NTP,请参阅此Java NTP client 问题。

    困难的方法是在设备之间做Clock synchronization

    【讨论】:

      【解决方案3】:

      Android GPS 硬件通常只有秒精度。毫秒浮点数的最后三位时间戳数字为 000。

      【讨论】:

        【解决方案4】:

        我现在正在努力解决同样的问题。我试过gps时间,但我不能保证用户在室内会有gps信号。

        我的解决方案是让所有设备从 nist 服务器检索时间,然后使用 System.currentTimeMillis() 增加或减去时间差

        如果设备已植根,您可以尝试同步时钟。

        https://play.google.com/store/apps/details?id=ru.org.amip.ClockSync&hl=en

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-14
          • 2019-10-26
          • 2019-08-05
          • 2017-04-18
          • 2015-10-29
          相关资源
          最近更新 更多