4

我正在尝试编写一些非常简单的代码来播放音频文件。该代码在 iPad2 模拟器上运行良好。然而,在我的 iPad2 设备上,[audioPlayer 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;
    }
4

1 回答 1

13

经过太多的调试,我终于找到了罪魁祸首。我在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];

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

[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];

而是解决问题。奇怪的是,这在模拟器中不是问题,但会导致硬件问题。

于 2012-11-30T02:29:01.317 回答