我正在尝试找出一种在 2+ 移动 android 设备上同步节奏播放的方法。
在 WiFi / LAN 上实现良好的精度很简单(非常低的延迟),但我需要一个针对具有可变高延迟的 3G 网络的良好解决方案。
我想出的一个想法是发送和定时消息并使用平均时间跨度来补偿延迟,但这个想法似乎很荒谬,我有点确定还有更好的其他方法来解决这个问题..
关心帮助?
我首先会尝试在您可以用作参考的所有设备上创建一个尽可能接近的同步时钟。
当设备进行通信时,它们总是会在消息中包含本地同步时间,这样您就可以始终找出收到消息的时间和发送消息的时间之间的差异,并且始终知道消息表明您应该播放节拍的时间在所有设备上都是相同的。
这里真正的困难是同步手表。我将从阅读这篇文章开始http://en.wikipedia.org/wiki/Network_Time_Protocol
这里有一个基于 JAVA 的 NTP 客户端:http: //commons.apache.org/net/examples/ntp/NTPClient.java
如果你让它工作,世界上有许多 NTP 服务器。 http://www.pool.ntp.org/en/use.html
如果您的设备足够靠近,您可以查看是否能够使用蓝牙来加速对等同步,同时使用 NTP 来获取全球时间——可能通过在您的设备中添加蓝牙连接的电话作为额外的遥控器NTP 配置。这将需要配对最终用户设备,这对您来说可能是个问题。
我最近实际上试图自己解决同样的问题。我找到的最佳解决方案是 NTP(网络时间协议)。
主要缺点是在高延迟网络上同步可能需要很长时间。因此,在需要同步设备之前,您需要有一个运行了很长时间的应用程序。
我正在开发的应用程序尚未以完美的时间进行测试,因此我不能保证这是一个可行的解决方案。但值得一试。