如何在 iPhone 应用程序中播放声音

Posted

技术标签:

【中文标题】如何在 iPhone 应用程序中播放声音【英文标题】:How to play sounds in iPhone app 【发布时间】:2010-02-22 07:04:46 【问题描述】:

我是这个非常令人困惑的 Objective-C 游戏的初学者。

我想在每次按下某个按钮时播放一个很短的音效。

我该怎么做?

我可以使用 mp3 文件吗?还是我必须转换成 wav?

【问题讨论】:

【参考方案1】:

您可以使用System Sound Services 播放短音:

CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef = CFBundleCopyResourceURL(mainBundle, CFSTR("filename"), CFSTR("aiff"), NULL);
SystemSoundID soundId;
AudioservicesCreateSystemSoundID(soundFileURLRef, &soundId);
AudioServicesPlaySystemSound(soundId);
CFRelease(soundFileURLRef)

支持.caf、.aiff 和.wav 格式。

【讨论】:

谢谢,它编译得很好。我想我读到声音在模拟器上不起作用……这是真的吗? 别这么认为——模拟器应该没问题。 好的,我已将它加载到我的 iPhone 上,但声音仍然无法正常工作。我使用过 .wav 和 .aif 文件格式。我已经包含了“AudioToolbox/AudioToolbox.h”。有什么想法可以完成这项工作吗? 为了让它在模拟器中工作,请转到 Mac 的系统偏好设置并在“声音”首选项的“声音效果”部分中启用“播放用户界面声音效果”跨度> 【参考方案2】:

没有足够的声誉来评论 @dstnbrkr 的解决方案,所以我会将其作为答案发布。

在上面的例子中,CFURLRef soundFileURLRef 没有被释放。

在最后一行 (AudioServicesPlaySystemSound(soundId);) 之后调用 CFRelease(soundFileURLRef) 以释放 Core Foundation 对象。

【讨论】:

以上是关于如何在 iPhone 应用程序中播放声音的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:如何在 iPod 声音上播放声音?

iPhone播放声音时如何操作?

如何在Objective C iphone编码中播放声音

如何在 iPhone 上精确播放声音?

使用 Javascript 在 iPhone 网络应用程序中播放声音?

iPhone:如何独立于音量设置大声播放本地通知声音?