这样做有多难?有人告诉我,在iPhone上播放音频难以置信。真的不敢相信。但是他说打一场比赛很难,但是同时打两三场比赛真是难以置信。听起来很吓人。你们有什么可以说的?
我想做什么:我有大约10个CAF文件,只有很少的啪嗒声和哔哔声以及按键按下声音。没什么特别的。现在我想在每次发生事件时播放这些文件。有几件事可能同时发生。因此,播放可能会重叠。
也许有一个我可以用来做这个的框架?
答案 0 :(得分:7)
播放小音调,哔哔声等(声音不到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's notes in the docs以获得更完整的解释。
请注意,您无法使用AudioServices轻松控制声音播放 - 您无法阻止它们,控制音量等.AudioServices仅适用于警报声和其他此类短暂的哔哔声。当然,有AVAudioPlayer但它比你在这种情况下需要的重量级更重。你可能最好不要使用AudioServices,除非它的一个限制使它无法使用。
您需要链接AudioToolbox.framework才能使用这些功能。
P.S。欢迎来到Stack Overflow!不要忘记阅读常见问题解答,并为您的问题标记已接受的答案(当然,如果这些答案是值得接受的好答案)。
答案 1 :(得分:2)
我只与iPhone合作了几个星期,我在这个论坛上得到了很多帮助,所以我很高兴能够回答一个问题。
您需要的小工具是AVAudioPlayer,它位于Apple文档中。我刚刚完成了一个小记录/回放应用程序,主要是使用了第16章的一些帮助 “IPhone SDK开发”一书(Dudney和Adamson)。
在我投资的四本iPhone编程书籍中,它拥有最实际的应用程序。
但无论如何,请查看AVAudioPlayer类引用。它很容易使用,并且由新手说。
John Doner
答案 2 :(得分:1)
以下代码可供我播放.caf文件
SystemSoundID SoundID;
NSString *soundPath = [[NSBundle mainBundle] pathForResource:@"beep" ofType:@"caf"];
NSURL *soundURL = [NSURL fileURLWithPath:soundPath];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &SoundID);
AudioServicesPlaySystemSound(SoundID);
答案 3 :(得分:0)
`#include< AudioToolbox / AudioToolbox.h>
SystemSoundID soundID = 0;
CFURLRef soundFileURL =(CFURLRef)[NSURL URLWithString:@“myfile.caf”];
OSStatus errorCode = AudioServicesCreateSystemSoundID(soundFileURL,& soundID);
AudioServicesPlaySystemSound(soundID);