在iPhone上播放CAF声音的最简单方法?

时间:2009-11-29 23:40:47

标签: iphone audio

这样做有多难?有人告诉我,在iPhone上播放音频难以置信。真的不敢相信。但是他说打一场比赛很难,但是同时打两三场比赛真是难以置信。听起来很吓人。你们有什么可以说的?

我想做什么:我有大约10个CAF文件,只有很少的啪嗒声和哔哔声以及按键按下声音。没什么特别的。现在我想在每次发生事件时播放这些文件。有几件事可能同时发生。因此,播放可能会重叠。

也许有一个我可以用来做这个的框架?

4 个答案:

答案 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);