这样做有多难?有人告诉我,在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
}
Run Code Online (Sandbox Code Playgroud)
然后,您将保留该ID,直到您需要使用它,然后您可以使用此行播放声音:
AudioServicesPlaySystemSound(soundID);
Run Code Online (Sandbox Code Playgroud)
还有AudioServicesPlayAlertSound(),将表现略有不同取决于设备的能力,例如,如果该设备是由用户配置为振动的iPhone.您应该阅读文档中的Apple注释,以获得更完整的解释.
请注意,您无法使用AudioServices控制声音的播放 - 您无法阻止它们,控制音量等.AudioServices仅适用于警报声和其他此类短促的哔哔声.当然,有AVAudioPlayer,但它比你在这种情况下需要的重量级更重.你可能最好不要使用AudioServices,除非它的一个限制使它无法使用.
您需要链接AudioToolbox.framework才能使用这些功能.
PS欢迎来到Stack Overflow!不要忘记阅读常见问题解答,并为您的问题标记已接受的答案(当然,如果它们是值得接受的好答案).
| 归档时间: |
|
| 查看次数: |
4474 次 |
| 最近记录: |