【问题标题】:playing a sound doesn't work on iPhone无法在 iPhone 上播放声音
【发布时间】:2011-07-29 12:35:34
【问题描述】:

我在我的应用中添加了声音。 在我的 .h 中,我添加了:

CFURLRef soundFileURL;
SystemSoundID soundFile;

在我的 .m 中的 viewDidLoad 中:

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

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

-(void)playSound {

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

它在 iPhone 模拟器上运行良好,但是当我在 iPhone 上构建应用程序时,控制台说声音已播放,但没有。 我读到很多其他人也有这个问题,但我没有找到任何解决方案。

怎么了?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢,但现在还有一个问题:每次播放声音时,iphone都会振动。怎么了?
    • 不知道,但“PlayAlertSound”看起来很可疑。也许这也是为了让设备发出嗡嗡声?听起来像是另一个问题。祝你好运
    【解决方案2】:

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

    查看 Apple 编程指南here.

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题。原来我是在引用“Horn.caf”

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

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

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

      希望对其他人有所帮助。

      【讨论】:

        猜你喜欢
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 2010-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        相关资源
        最近更新 更多