1

MPMusicPlayerController を使用して、iPodMusicPlayer でデバイスから音楽を再生しています。そして定期的に AVPlayer でアラートを再生します。コードは次のようになります

-(void) duckMusic
{
    UInt32 on=1;   
    AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(on),&on);
    AudioSessionSetActive(true);
}

-(void) unDuckMusic
{
    UInt32 on=0;
    AudioSessionSetProperty(kAudioSessionProperty_OtherMixableAudioShouldDuck,sizeof(on),&on);
    AudioSessionSetActive(false);
}

アラートを再生する直前に最初のメソッドを呼び出し、通知を受け取った後に 2 番目のメソッドを呼び出しますAVPlayerItemDidPlayToEndTimeNotification

私が得ている問題は、アラートが完了した後に音楽がフェードバックしない場合があることです。いくつかのデバッグで、オーディオ セッション プロパティが適切に設定されていることがわかりましたが、何らかの理由で無視されています。

また、テスト中に気付きましたが、音楽がフェードバックしない場合、一時停止してデバイスで手動で音楽を再生すると、正常になります。

これをプログラムで処理する方法は?

編集:
アプリケーションがバックグラウンドで実行されているときに問題が発生しています

4

1 に答える 1

0

unDuckMusic でプロパティを設定する必要はありません。セッションを非アクティブ化するだけで、混合オーディオを通常の音量に戻すことができます。

バックグラウンドで音声セッションが音声の中断を正しく処理していなかったときに、同様の問題が発生しました。これにより、音声セッションの呼び出しが予期しない方法で失敗しました。したがって、それらを確実に処理してください。

于 2011-08-12T19:04:54.817 に答える