2013-05-10 54 views
0

同时触发一个事件,我想在准确的同时在多个iOS设备触发事件(例如播放音乐)(以毫秒为单位的方式)在多个iOS设备

我的做法是保持一个套接字连接并向iOS设备发送时间戳(从当前时间晚10秒钟),并在该时间戳的iOS设备上触发事件。

问题是iOS设备可能会有所不同1或2秒,并会导致一个去同步。甚至时间戳也指出每个设备上的同一时间(AFAIK),它们不是毫秒级的敏感度。

有什么办法在多个设备上同时触发一个事件,或者所应遵循的方法?

+0

这些设备是如何相互连接的?在互联网上?本地网络?这是什么类型的应用程序? – Jim 2013-05-10 19:59:28

+0

通过互联网,它会捕捉声音,持续10秒每个设备上和处理捕获的数据 – Bartu 2013-05-10 20:00:29

+0

所以这些设备不能靠近彼此?在那种情况下,为什么它需要毫秒精度?装有设备的人不会知道这种或那种方式。也许有更好的方法来实现你的目标。你想做什么? – Jim 2013-05-10 20:17:16

回答

1

不要通过Internet发送的数据。您不能假定连接延迟会足够低以满足您的需求。改用蓝牙。您可以使用GameKit,使用dns-sd或使用类似HHServices的库。

接将充当控制器的装置。 Apple提供示例代码来与GameKit一起完成此操作,但想到自己的方法并不难。当您想要触发该操作时,该控制器将通过蓝牙向其他设备发送数据包。

我怀疑你需要的延时比这还要低,但是如果你这样做,让控制器发送数据包到每个连接的设备,以确定每个连接的延迟,让他们发送他们的时间戳到控制器,然后控制器应该能够为他们每个人计算同时发生的时间戳。

+0

我试过gamekit(通过蓝牙)。有一个30.8ms(考虑到iOS设置时间会自动为每个设备设置完全相同的时间)我尝试了几种方式来记录和播放音频以创建完整的同步。我计算了设备之间的延迟标准差,并让主机在该延迟之后采取行动,将数据发送到其他设备。然而,我可以听到设备之间的差异:或许我应该尝试找到一种更强大的方法来检测蓝牙延迟 – Bartu 2013-05-12 01:00:45