AVAudioPlayer仅在iOS模拟器上失败

时间:2014-05-14 17:20:38

标签: ios audio ios-simulator avfoundation

我有这个代码,在iOS应用程序中播放声音时似乎非常标准。

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                     pathForResource:@"click"
                                     ofType:@"wav"]];

NSError *error;
self._audioPlayer = [[AVAudioPlayer alloc]
                initWithContentsOfURL:url
                error:&error];
if (error)
{
    NSLog(@"Error in audioPlayer: %@",
          [error localizedDescription]);
} else {
    self._audioPlayer.delegate = self;
    [self._audioPlayer prepareToPlay];
    [self._audioPlayer play];
}

它在设备上运行得非常好。

然而,在模拟器上,它没有播放任何内容,只是打印此错误消息(由于应用程序没有崩溃,因此会在较低级别捕获)。

2014-05-14 18:10:46.121 sample_app[7684:14303] 18:10:46.121 ERROR:     189: EXCEPTION thrown ('fmt?'): -

(此错误可以多次打印)

调试时,一切看起来都正常,nserror保持为nil,url有效等等。

audioPlayerDidFinishPlaying:successfully:是使用1调用的事件。

任何人都有同样的问题或对我的环境有什么问题有建议吗?

非常感谢

1 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,并找到了一个奇怪的解决方案。试试这个:

  1. 退出模拟器
  2. 打开您的OSX系统首选项并选择声音。
  3. 选择输出为“耳机”
  4. 选择输入到“内置麦克风”(即使您认为这对于在模拟器上播放音频没有任何区别)。
  5. 运行您的应用
  6. 不知道为什么会这样,必须是模拟器的bug。如果您在模拟器运行时进行了这些更改,您会注意到Xcode中弹出一条日志消息,警告您重新启动模拟器。