AudioServicesPlaySystemSound 在 iPad 设备上不起作用

Posted

技术标签:

【中文标题】AudioServicesPlaySystemSound 在 iPad 设备上不起作用【英文标题】:AudioServicesPlaySystemSound not working on iPad device 【发布时间】:2010-10-27 18:35:36 【问题描述】:

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

具体的症状是我在模拟器中能听到声音,但在设备上听不到,虽然我已经验证在设备上的其他应用程序中我能听到声音。 AudioServicesCreateSystemSoundID 正在返回有效的声音标识符,因此它不像具有不同大小写的声音文件的名称那么简单,即“sound.mp3”与“Sound.mp3”。

我知道我可能出于不相关的原因需要切换到其他库,例如 OpenAL,但我想知道这里发生了什么。有没有人有什么建议?有没有我可以调用的函数来获取 OSStatus 值或什么?

* BUMP -- 过去几周我一直在从事其他项目,但我现在又回来了,我非常感谢您的回答。谢谢。

【问题讨论】:

【参考方案1】:

我通过 Google 搜索发现了这个问题。我的问题与这个问题的标题完全相同:“AudioServicesPlaySystemSound not working on iPad device”。但是,问题的描述有所不同。

简单地说,在将我的 iPad 升级到 iOS 4.3 后,AudioServicesPlaySystemSound 停止工作。

我终于找到了我的问题版本的解决方案,因此希望这对其他人有所帮助。

转到 iPad 上的“设置”应用并选择“常规”。点击声音。确保“使用按钮更改”设置为开启。这将解决问题。

【讨论】:

我运行的是 iOS 4.3.1,但在 General->Sounds 中没有“使用按钮更改”选项。 这件事发生已经有一段时间了,但我认为它可能只适用于 iPad 2。他们可能还改变了 4.3.1 中的行为——此响应适用于 4.3。 我使用 iTunes 将我的 .m4v 声音更改为 .aif,这是一种“受支持”的编码。那行得通。 我一直到 iOS 9,这有点解决了我的问题。我必须确保“铃声和警报”的音量一直在上升。我的声音效果被静音了,因为我将铃声音量调低了一点,而且 AudioServicesPlaySystemSound 的音量由该设置控制。【参考方案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];

【讨论】:

以上是关于AudioServicesPlaySystemSound 在 iPad 设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章