在iOS 7中精确调度声音

时间:2013-10-18 09:17:14

标签: ios cocoa-touch audio avaudioplayer audioqueueservices

我正在开发一款仅支持iOS7的应用程序,该应用程序需要显示带有滴答声的时钟。我使用了1s的NSTimer,我使用AVAudioPlayer每秒播放滴答音。

不幸的是,时间略有偏差。我已经测量过计时器关闭时间在2到22千秒之间,你不会觉得这很重要,但是滞后会造成紧张的紧张感......有点像心脏颤动: - )< / p>

我看了一下,但听起来像使用音频队列服务是唯一的方法..而且我真的不想再深入研究那个特定框架的深度。

我的问题:是否有其他方法可以在iOS 7中获得精确安排的声音事件,如果失败,那么在某处可以使用适当的音频队列服务包装框架?或者更好的是还有一种更精确地安排NSTimers的方法吗?

1 个答案:

答案 0 :(得分:0)

使用NSTimerlibdispatch中的任何一个,或者生成一个在tick时间内休眠的线程,都依赖于及时调度的底层线程。内核并不保证这一点,你观察时序抖动也就不足为奇了;你观察到的延迟看起来很合理。

在主线程上运行的

NSTimer可能会执行最糟糕的这些,因为您还在与通过它传递的其他事件竞争。

我认为您的选择是使用音频队列服务,使用AVAudioPlayer调度事件的实时线程,或者自己将音频呈现给remoteIO单元。

我认为AVPlayer不会对时序提供任何特别的保证。