我正在 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)
最佳答案
我写了一个库来简化这一切。它包装了 AVAudioPlayer,并且在设备和模拟器上都能正常工作。
https://github.com/nicklockwood/SoundManager
代码相当简单,尽管我做了一些半聪明的事情来初始化音频播放器。如果您不想使用该库,只需复制代码即可。
不过有一点警告 - 每当您使用 AVAudioPlayer 时,模拟器都会在内部抛出一些奇怪的异常。它们根本不会影响应用程序,但如果您在 Xcode 中启用了异常中断,那么应用程序将在启动过程中多次进入调试器,并且您必须手动恢复,这可能会吓到您,如果你没有预料到它。
关于objective-c - 声音仅在设备上有效,但在模拟器上无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10351199/