0

効果音のためにアンビエントミュージック(ミュージックプレーヤーやSpotifyなど)をオフにしようとすると、ディスプレイに遅れが見られます。エフェクト自体を再生するためにAudioServicesPlaySystemSoundを使用しています。以下を使用してセッションを開始し、バックグラウンドで音楽を再生します。

[audioSession setCategory:AVAudioSessionCategoryAmbient error:nil];    

次に、カテゴリを再生に設定して音楽を停止し、効果を高めます

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

次を使用して音楽を再開します

[[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];

これはばかげていると感じ、setCategory:AVAudioSessionCategoryPlaybackは、ボリュームがなくなると表示に遅延を生じます。

バックグラウンドミュージックをミュートする正しい方法は何ですか?

ありがとう、スティーブ

4

1 に答える 1

2

まず、カテゴリをに設定した理由がわかりませんAVAudioSessionCategoryPlayback。サイレントスイッチをオフにしたり、電話をロックしたりして効果音を再生し続ける必要がない限り、AVAudioSessionCategorySoloAmbient代わりに選択する必要があります。これにより、バックグラウンドサウンドもミュートされます。効果音の再生が終了したら、アンビエントに戻すことができます。

再生が本当に必要なものである場合(目覚まし時計などがあるため)、すぐに再生カテゴリに切り替えることを検討しkAudioSessionProperty_OverrideCategoryMixWithOthers、背景音が引き続き再生されるようにプロパティを設定してから、ミュートする場合はそのカテゴリをオフにします。ただし、最初に、再生カテゴリが本当に必要であることを確認する必要があります。

または、バックグラウンドサウンドをミュートするのではなく、ダッキングすることを検討しましたか?おそらく、アンビエントカテゴリにとどまりkAudioSessionProperty_OtherMixableAudioShouldDuck、エフェクトを再生しているときにオーディオセッションプロパティを設定するだけで済みます(後でリセットします)。つまり、エフェクトを実行すると、背景音の音量が小さくなります。これは、アプリの実行内容によっては、より望ましい場合があります。

最後になりましたが、私はこれまで使用AudioServicesPlaySystemSoundしたことがなく、ミキシングやダッキングでは機能しない可能性があるため、に切り替える必要がある場合がありますAVAudioPlayer

于 2012-10-23T12:54:42.357 に答える