4

オーディオファイルを再生するための非常に単純なコードを書き込もうとしています。コードは 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;
    }
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 に答える