我正在尝试同步多个Android设备之间的时间戳,以便我可以同时启动任务。我想我可以使用Timer并根据System.currentTimeMillis()设置一个日期,但问题似乎是多个设备的时间戳彼此相距甚远,我没有得到我想要的精确度。
如果可能的话,我正在寻找50-100毫秒的某个地方。我的一个想法是使用Android Beam将一个设备的时间戳发送到另一个设备,然后计算一个增量,但事实证明我必须在实际发送和接收消息之前得到时间戳(即,用户越长等待发送,delta会越大,这使得该方案完全崩溃。
如何同步两个或更多设备,使其内部时钟彼此间隔不超过100毫秒?如果不使用保留时间的外部服务器,这是否可行?
对于尽可能接近同时在多个设备上执行某些操作的技术的任何其他建议也是受欢迎的。
答案 0 :(得分:4)
为什么不使用GPS时间? GPS的时间标签非常准确。
您可以在特定时间内同意所有设备,然后在GPS告诉您时启动它。
答案 1 :(得分:2)
基本上,你有两种选择:简单的方式或艰难的方式。
简单的方法是使用单个外部信号源来传输时间信号,例如NIST,另一个互联网资源或GPS,如@Stefan建议的那样。互联网资源使用NTP,请参阅此Java NTP client问题。
困难的方法是在设备之间进行Clock synchronization。
答案 2 :(得分:0)
我现在正在努力解决同样的问题。我试过gps时间,但我不能保证用户在室内会有gps信号。
我的解决方案是让所有设备从nist服务器检索时间,然后使用System.currentTimeMillis()
添加或减去时差。如果设备已植根,您可以尝试同步时钟。
https://play.google.com/store/apps/details?id=ru.org.amip.ClockSync&hl=en
答案 3 :(得分:0)