AVAudioPlayer播放在硬件上返回false

Bra*_*rad 4 avaudioplayer ios

我正在尝试编写一些非常简单的代码来播放音频文件.代码在iPad2模拟器上运行良好.但是,在我的iPad2设备上,[audooPlayer play]返回false并且没有听到音频.

我已经尝试了.caf和.wav文件.我已重新启动iPad2并确保静音开关已关闭.任何有关如何调试的提示都非常感谢.

示例代码:

- (void)playAudio {
    NSString *file = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"];
    url = [NSURL fileURLWithPath:file];
    NSError *error = nil;
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    if (error != nil) {
        NSLog(@"Error creating audio player: %@", [error localizedDescription]);
        return;
    }
    [audioPlayer setDelegate:self];
    if (![audioPlayer prepareToPlay]) {
        NSLog(@"Error preparing audio");
        return;
    }
    // Everything works fine up to this point
    if (![audioPlayer play]) {
        // I hit this on hardware.  Works perfect on the simulator.
        NSLog(@"Error playing audio");
        return;
    }
Run Code Online (Sandbox Code Playgroud)

Bra*_*rad 12

经过太多的调试,我终于找到了罪魁祸首.我正在关注http://developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/MultimediaPG/UsingAudio/UsingAudio.html#//apple_ref/doc/uid/TP40009767-CH2上的指南,以及之前的指南我的应用在播放音频之前,我录制了一些音频.基于那个我打电话的指南

[[AVAudioSession sharedInstance] setActive: NO error: nil];
Run Code Online (Sandbox Code Playgroud)

完成录音.这显然导致AVAudioPlayer无法播放音频.将呼叫更改为

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
Run Code Online (Sandbox Code Playgroud)

而是修复了一些事情.很奇怪,这不是模拟器中的问题,但会导致硬件问题.