【发布时间】:2015-12-23 20:53:26
【问题描述】:
我有一个独特的问题。我正在与我大学的其他几个计算机科学专业的学生合作开发一个 Android 节拍器应用程序,该应用程序允许两个用户使用该应用程序同步节拍器。现在,我可以将所需的节拍器每分钟节拍从一部手机发送到另一部手机,两部手机都将开始播放各自的节拍器。由于蓝牙的延迟,节拍器只有大约 20% 的时间同步。
所以,这就是问题所在。我们正在努力让两个节拍器同时启动。我想到的一种方法是,一旦第一个用户按下手机上的发送按钮,就会创建一个时间戳。该时间戳将恰好是用户按下发送按钮后的两秒。然后时间戳将发送到第二部手机,手机将利用此时间戳在与第一部手机相同的时间启动节拍器。我尝试通过将 UTC 时间放在一个 while 循环中然后不断检查时间来实现这一点,但无济于事。有没有人对我们如何实现这一点有任何想法?我在 StackOverflow 或任何其他网站上找不到任何类似的问题。
【问题讨论】:
-
重复问题解决了不同应用程序中的相同基本问题。最好的办法是实现 NTC 客户端并确定 NIST 与系统时间的偏移,然后使用它来解决任何抖动。我用同样的方法让两台设备同步视频/音频播放,你可以在5-10ms内得到准确,这对于音频来说似乎足够了。忘记 GPS 时间,对我来说,它总是返回系统时间。