播放声音在iPhone上无效

时间:2011-04-04 21:56:12

标签: iphone objective-c ios4 ios-simulator audio

我已经为我的应用添加了声音。 在我的.h我补充说:

CFURLRef soundFileURL;
SystemSoundID soundFile;

在我的.m中的viewDidLo中:

soundFileURL = CFBundleCopyResourceURL(
        CFBundleGetMainBundle(),
        CFSTR("sound"),
        CFSTR("mp3"),
        NULL);
AudioServicesCreateSystemSoundID(
        soundFileURL,
        &soundFile);

最后我添加了一个-playSound方法:

-(void)playSound {

NSLog(@"playSound");
AudioServicesPlayAlertSound(soundFile); }

它可以在iPhone模拟器上正常工作,但是当我在我的iPhone上构建应用程序时,控制台说声音已播放,但事实并非如此。 我读过很多其他人也遇到过这个问题,但我找不到任何解决方案。

怎么了?

3 个答案:

答案 0 :(得分:1)

我会在AVFoundation框架中推荐AVAudioPlayer。它有一个简单的异步接口,可以在iOS上播放声音。

查看Apple编程指南here.

答案 1 :(得分:1)

它可能是您的编码 - 模拟器上的音频编解码器与您的实际iPhone硬件提供的音频编解码器有很大不同。尝试重新编码。

另外 - 你不想使用mp3作为声音,你想使用非压缩文件格式(我建议aiff来自经验)因为没有专用的解码硬件来支持声音解码你'重新尝试。 (播放音乐,推荐使用mp3)

答案 2 :(得分:0)

我有类似的问题。原来我用

引用了“Horn.caf”
NSURL *hornSound   = [[NSBundle mainBundle] URLForResource: @"horn"
                                                withExtension: @"caf"];

注意案例的区别;我的OS X Lion安装在不区分大小写的文件系统上。 将代码更改为以下内容可以解决问题。

NSURL *hornSound   = [[NSBundle mainBundle] URLForResource: @"Horn"
                                                withExtension: @"caf"];

希望能帮助他人。