我正在實施音樂播放器作爲服務,並且希望在通知到達手機時降低音樂的音量。OnAudioFocusChangeListener無法處理「鴨子」的通知聲音我的音頻
這是我做的:
AudioManager audioManager = (AudioManager)getApplicationContext(). getSystemService(Context.AUDIO_SERVICE);
int result = audioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
,我的聽衆是:
private AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener = new AudioManager.OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_GAIN:
if (!mediaPlayer.isPlaying()){
mediaPlayer.start();
mediaPlayer.setVolume(1.0f, 1.0f);
}
break;
case AudioManager.AUDIOFOCUS_LOSS:
// Lost focus for an unbounded amount of time: stop playback and release media player
if (mediaPlayer.isPlaying()) mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
if (mediaPlayer.isPlaying()) mediaPlayer.pause();
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
// Lost focus for a short time, but it's ok to keep playing
// at an attenuated level
if (mediaPlayer.isPlaying()) mediaPlayer.setVolume(0.2f, 0.2f);
break;
default:break;
}
}
};
當有來電時,它完美的作品。當我收到短信,gmail,whatsapp等通知時,監聽器不捕獲事件。
我也試圖與:
AudioManager audioManager = (AudioManager)getApplicationContext(). getSystemService(Context.AUDIO_SERVICE);
int result = audioManager.requestAudioFocus(mOnAudioFocusChangeListener, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK);
喜歡這裏解釋:Managin Audio Focus
,但聽者不聽反正通知稱輸入。
而且我也嘗試過在服務中實現AudioManager.OnAudioFocusChangeListener,但是發生的情況相同,呼叫處理得好,通知沒有。
我加入這個清單上.... 使用許可權的android:NAME =「android.permission.MODIFY_AUDIO_SETTINGS
我能做些什麼,爲什麼通知不會改變AudioFocus ??
感謝Kevin的詳細解答。我已經接受你的答案。我已經看到Google Play音樂沒有實現這個選項,所以我保持冷靜。我將爲GPS和其他應用程序實現此選項。非常感謝你! – Juanjo