9

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

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

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

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

4

4 回答 4

4

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

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

于 2013-08-19T22:06:56.827 回答
2

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

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

困难的方法是在设备之间进行时钟同步

于 2013-08-19T22:42:22.210 回答
1

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

于 2014-12-17T12:59:31.887 回答
0

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

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

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

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

于 2013-08-19T22:41:15.083 回答