声音仅适用于设备,但不适用于模拟器

时间:2012-04-27 13:08:44

标签: objective-c ios ipad audio audiotoolbox

我正在iPad上播放一些简短的声音:Play a short sound in iOS

我正在使用caf文件,我可以从Finder中成功播放。现在我经历了相当多的麻烦,试图实现声音的播放,我很好奇可能是我似乎无法理解的问题:

  • 选项1:当我创建SystemSoundID然后立即播放时,我在设备和模拟器上听不到任何声音。

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

  • 选项3:我也可以使用AVAudioPlayer播放SystemSoundID文件,然后在iPad和模拟器上工作,而不是使用.wav我在这里需要创建AVAudioPlayer viewDidLoad如果我一口气完成所有事情,我就不会发出任何声音。

最佳选项目前似乎是Option 3,因为它适用于模拟器和iPad,但因为我需要预先初始化播放器,我需要一个AVAudioPlayer实例来处理每个不同的声音我想玩,这似乎不是很记忆......

是否存在我缺少的内容,是否可以使用AudioToolbox框架(选项1和选项2)在两个平台上播放声音

1 个答案:

答案 0 :(得分:3)

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

https://github.com/nicklockwood/SoundManager

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

一句警告 - 模拟器在您使用AVAudioPlayer时会在内部抛出一些奇怪的异常。它们根本不会影响应用程序,但是如果您在Xcode中启用了例外突破,则应用程序将在启动期间进入调试器几次并且您必须手动恢复,这可能是如果你不期待它就会吓坏你。