2012-03-14 45 views
2

我需要制作一个应用程序,可以同时在两个(或更多)iPhone上开始播放相同的媒体,问题在于它必须是完美的,没有第二个延迟等等。 iPhone有可能在每台设备上都有完美(或接近完美)的通用时间戳。或者,也许我有其他选择?iPhone - 同步两个iPhone,让他们在同一时间开始任务

+0

他们会彼此靠近吗?是否会有一个他们都可以连接的本地网络? – 2012-03-14 10:29:30

+0

他们将关闭,但不知道有关网络.. – sed 2012-03-14 10:33:08

回答

0

没有与系统时钟不同的内部时钟 - 所以这意味着每个设备可能有完全不同的时间设置(事实上,它们很可能会有不同的时间设置,即使只有一秒钟或两个)。

使用网络/互联网连接与中央时间服务器进行同步可能是一种可以采取的方法,但这需要网络/互联网连接,并且您必须设置考虑到时间延迟的时钟连接到/来自时间服务器。

您可能必须拥有某种本地同步系统。如果它们靠得很近,一种方法可能是在应用程序中的设备之间创建一个ad-hoc蓝牙连接,然后在您的应用程序中使用一些同步代码来使内部计时器保持不变。例如,您可以将第一个应用程序启动为“控制器”,然后所有其他应用程序都会寻找此控制器并与其同步。同步可以是控制器发送其他设备可以获得的时间戳消息并设置内部计数器匹配。

如果不了解有关要求的更多信息,很难说如何最好地解决这个问题,因为在运行应用程序和发出声音之间可能存在时间限制,或者您必须有触发信号,或者只是在时间x他们需要发出声音。

0

如果他们是在同一时区,同时设置,可以安排其使用的NSTimer的

- (id)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(id)ui repeats:(BOOL)rep;开始你的函数在时间的paticular点。

+0

这只会工作,如果设备都具有完全相同的时间设置 – 2012-03-14 10:30:00

+0

但如果他们都有不同的时间设置的设备..? (自动时间更新已关闭) – 2012-03-14 10:30:12

+0

已编辑。感谢:) – Vignesh 2012-03-14 10:32:48

1

2规则:

  1. 找到一种方法,具有相同的时间上的每个设备
  2. 使用使用此共享统一的时间了“startAtTime”功能。没有“startNow”功能。

iPhone应该能够使用远程服务器同步他们的日期和时间,如果这还不够准确(谁知道),一种实现方法(假设你的iPhone能够在它们之间进行通信已经):

  • 主人发送它的时间10次(或更多)从属奴隶。
  • 每次从比较它的时间与接收到的一个,使增量
  • 10次尝试后,使三角洲的平均值,并使用这是否意味着调整从时间相应
0

一种选择你必须从普通服务器访问时间,然后相应地在两台设备上启动计时器(根据您从服务中获得的时间计算),以便在两台设备上都有确切的时间,然后播放它...

即使这样也有一个问题,因为互联网速度可能会有所不同,并且在获得重新启动时两个设备中的一个设备可能会稍有延迟与其他设备相比,从另一台设备看到你的要求,他们可能会失去同步一个毫秒左右,这将是可见..:/任何其他想法任何人..?

+0

我认为,如果您试图精确同步2台或更多台附近设备的时钟,并且网络延迟时间未知,唯一方法是使用听觉(“勾号!“)或视频(闪光灯)提示。无论是你的解决方案还是架构师都可以处理可能长达5秒钟的设备。 – ScottyB 2014-01-07 16:25:30