0

問題は、AVAudioPlayer 自体が正常に動作することです。デバイスがサイレント モードでない場合 (サイレント/リンガー スイッチがオンになっている場合)、バックグラウンド ミュージックが再生されます。サイレントスイッチがオンの場合も、この状態を尊重し、BGM を再生しません。

ただし、AVAudioPlayer がサイレント モードで再生される特殊なシナリオの 1 つは、MPMoviePlayer でビデオを再生する場合です。

私のアプリでは、ムービーを再生する前に BG サウンドが最初に再生されます。

誰でも助けることができますか?これは、ムービーを再生するときにのみ発生します。

その他の詳細:
使用する BG ループ - m4a タイプ
使用するムービー タイプ - m4v

また、このシナリオは iOS 5 で繰り返し発生することもわかりましたが、最新バージョンでも発生することがあります。

Google、Apple のドキュメント、および SO のあらゆる場所を調査しましたが、この特定のシナリオに関しては何も見つかりませんでした。

AVAudioSession のカテゴリを明示的に AVAudioSessionCategoryAmbient に設定してから、setActive を呼び出してみました。(このsetCategory:withOptions:error方法も試しましたが、何らかの理由でアプリがクラッシュしました-デバイスでテスト済み)

を使用しようとしたときに、デリゲートを設定してメソッドを実装しようとさえしましたAVAudioPlayerDelegate

誰か助けて?:(

4

2 に答える 2

1
NSURL *url = [NSURL URLWithString:self.videoURL];
            MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
            NSError *_error = nil;
            [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &_error];
            [self presentMoviePlayerViewControllerAnimated:mpvc];

このフレームワークを追加

#import <AVFoundation/AVFoundation.h>

このようにしてみてください...

于 2013-04-22T09:47:56.863 に答える
1

この方法でオーディオセッションを設定してみてください

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
        NSError *err = nil;
        [audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
        if(err){
            NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
            return;
        }
        [audioSession setActive:YES error:&err];
        err = nil;
        if(err){
            NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
            return;
        }
于 2013-04-22T12:04:03.147 に答える