我正处于开发我的第一个iPad应用程序的早期阶段,为了简单起见,我到目前为止一直使用AudioServicesPlaySystemSound和相关功能来播放声音。我的代码基于Apple的Metronome示例中的SoundEffect类。
具体的症状是我可以听到模拟器中的声音但不能听到设备上的声音,尽管我已经确认我可以听到设备上其他应用程序的声音。 AudioServicesCreateSystemSoundID返回有效的声音标识符,因此它不像具有不同情况的声音文件的名称那样简单,即“sound.mp3”与“Sound.mp3”。
我认识到我可能需要切换到不同的库,例如OpenAL,原因无关,但我想知道这里发生了什么。有没有人有什么建议?我可以调用一个函数来获取OSStatus值吗?
* BUMP - 过去几周我一直在从事其他项目,但我现在又重新开始了,我真的很感激答案。感谢。
答案 0 :(得分:5)
我通过Google搜索找到了这个问题。我的问题与此问题的标题完全相同:“AudioServicesPlaySystemSound无法在iPad设备上运行”。但是,问题的描述是不同的。
简单地说,将iPad升级到iOS 4.3后,AudioServicesPlaySystemSound停止工作。
我终于找到了我的问题版本的解决方案,所以希望这有助于其他人。
转到iPad上的“设置”应用,然后选择“常规”。点击声音。确保“使用按钮更改”设置为“开”。这将解决问题。
答案 1 :(得分:2)
我认为你不能使用AudioServicesPlaySystemSound
在设备上播放mp3文件。查看documentation支持的文件类型。我不确定他们为什么在模拟器中正确播放,但我遇到了同样的问题。请尝试使用AVAudioPlayer:
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource: @"sound" withExtension: @"mp3"] error:&error];
if (error) {
NSLog(@"Error creating audio player: %@", [error userInfo]);
} else {
[audioPlayer play];
}
[audioPlayer release];