在iPad设备上,AudioServicesPlaySystemSound无法工作

6

我正在开发我的第一个iPad应用程序的早期阶段,为了简单起见,到目前为止,我一直在使用AudioServicesPlaySystemSound和相关函数来播放声音。我的代码是基于苹果的Metronome示例中的SoundEffect类。

具体症状是我可以在模拟器中听到声音,但在设备上听不到声音,尽管我已经验证我可以在设备上的其他应用程序中听到声音。AudioServicesCreateSystemSoundID返回有效的声音标识符,所以它不是像声音文件名称大小写不同(例如“sound.mp3”与“Sound.mp3”)这样简单的问题。

我意识到出于无关原因,我可能需要切换到其他库,例如OpenAL,但我想知道这里发生了什么。有人有任何建议吗?是否有一个函数可以调用以获取OSStatus值或其他东西?

* 提醒:我过去几周一直在处理其他项目,但现在我回到这个项目上,真的很感激有人能给我答案。谢谢。

2个回答

5
我通过谷歌搜索发现了这个问题。我的问题与此问题的标题完全相同:“在iPad设备上AudioServicesPlaySystemSound无法工作”。然而,问题的描述是不同的。
简单来说,在将我的iPad升级到iOS 4.3之后,AudioServicesPlaySystemSound停止工作了。
最终,我找到了解决方案,并希望能够帮助其他人。
打开iPad上的设置应用程序并选择“通用”。点击“声音”。确保“按钮控制”已开启。这样就可以解决问题了。

我正在运行iOS 4.3.1,并且在“通用->声音”中没有“使用按钮更改”选项。 - iPadDeveloper2011
这种情况已经有一段时间了,但我认为它可能只适用于iPad 2。他们也可能在4.3.1中更改了行为 - 此响应适用于4.3。 - Jeremy Fuller
我使用iTunes将我的.m4v音频转换为支持的编码.aif,这样就可以正常播放了。 - iPadDeveloper2011
1
我已经升级到iOS 9,这对我有所帮助。我必须确保“铃声和警报”的音量全部调高。我的声音效果被静音了,因为我的铃声音量设置得比较低,而AudioServicesPlaySystemSound的音量受该设置控制。 - TMc

2
我认为你不能使用 AudioServicesPlaySystemSound 在设备上播放mp3文件。请查看文档以了解支持的文件类型。我不确定为什么在模拟器中可以正常播放,但我也遇到了同样的问题。建议改用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];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接