做到这一点有多难?有人告诉我,在 iPhone 上播放音频非常困难。实在不敢相信。但他说玩一个很难,但同时玩两个或三个就很难了。听起来很可怕。对此大家有什么想说的吗?
我想要做什么:我有大约 10 个带有小光点、蜂鸣声和按钮按下声音的 CAF 文件。没什么特别的。现在我想每次发生事情时都播放这些文件。并且几件事情可能同时发生。因此可能会发生播放重叠的情况。
也许有一个我可以用来做到这一点的框架?
播放小声音、嘟嘟声等(听起来不到 30 秒)实际上非常简单 - 这正是 AudioServices 的目的。您需要首先获取每个声音的 ID,使用如下方法:
SystemSoundID soundID = 0;
CFURLRef soundFileURL = (CFURLRef)[NSURL URLWithString:somePathString];
OSStatus errorCode = AudioServicesCreateSystemSoundID(soundFileURL, &soundID);
if (errorCode != 0) {
// Handle failure here
}
然后,您将保留该 ID,直到需要使用它为止,然后您可以简单地使用此行来播放声音:
AudioServicesPlaySystemSound(soundID);
还有AudioServicesPlayAlertSound()
根据设备的功能,其行为会略有不同,例如,如果用户配置了设备,则振动 iPhone。你应该阅读Apple 在文档中的注释 http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/SystemSoundServicesReference/Reference/reference.html以获得更完整的解释。
请注意,您对使用 AudioServices 的声音播放拥有最小的控制权 - 您无法停止它们、控制音量等。AudioServices 仅适用于警报声音和其他此类短促的蜂鸣声和提示音。当然,还有 AVAudioPlayer,但它比您在本例中需要的要重一些。您可能最好坚持使用 AudioServices,除非它的限制之一使其无法使用。
您需要链接 AudioToolbox.framework 才能使用这些功能。
附:欢迎来到堆栈溢出!不要忘记阅读常见问题解答并标记您的问题已接受的答案(当然,如果它们是值得接受的好答案)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)