2012-04-27 189 views
2

我打一些短的声音在我的iPad就像这样:Play a short sound in iOS声音也只在设备工作,但不是在模拟器

我使用的是caf文件,我可以成功地从Finder中播放。现在,我通过了不少麻烦努力实现声音的回放的去了,我很好奇,什么可能是我似乎不明白的问题:

  • 选项1:当我创建SystemSoundID,然后马上播放,我没有听到任何设备和模拟器。

  • 选项2:当我为SystemSoundID创建一个实例变量并在viewDidLoad中初始化它时,我设法播放声音,但只能在iPad上播放声音,而不是在模拟器上。

  • 选项3:不要使用SystemSoundID的我也可以使用AVAudioPlayer播放一个.wav文件,然后作用于iPad和模拟器既但在这里我需要viewDidLoad创建AVAudioPlayer否则我不会得到任何声音如果我一气呵成的话。

最好的办法目前看来Option 3,因为它工作在模拟器和iPad两个,而是因为我需要预先初始化的球员,我需要一个AVAudioPlayer实例为每个不同的声音,我想发挥,这似乎并不十分内存明智...

有没有办法,我缺少的是有可能使用AudioToolbox框架两个平台上播放声音的东西(方案1个&选项2)

回答

3

我写了一个库来简化所有这些。它包装AVAudioPlayer,在设备和模拟器上都能正常工作。

https://github.com/nicklockwood/SoundManager

的代码是相当简单的,虽然我做了一些半聪明的东西初始化音频播放器。如果你不想使用库,你可以复制代码。

尽管有一个警告 - 当你使用AVAudioPlayer时,模拟器会在内部抛出一些奇怪的异常。它们根本不会影响应用程序,但是如果您在Xcode中启用了突发异常,那么在启动过程中应用程序会掉入调试器中几次,您将不得不手动恢复,这可能会使您感到困惑你并不期待它。

相关问题