private AudioManager.OnAudioFocusChangeListener mAudioFocusListener = new AudioManager.OnAudioFocusChangeListener() {
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_GAIN: // 之前的音量 1
if (mAudioManager != null)
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
(int) (mMaxVolum * 0.8), 0);
if (mIsLossAutioFocus) {
weDriveResume();
mIsLossAutioFocus = false;
}
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: // 降音處理 -3
if (mAudioManager != null)
mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
(int) (mMaxVolum * 0.3), 0);
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: // 失去音頻焦點 暫停播放 -2
mIsLossAutioFocus = true;
weDrivePause();
break;
case AudioManager.AUDIOFOCUS_LOSS: // -1
// weDrivePause();
break;
default:
break;
}
}
};
// 請求焦點
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (mAudioManager != null)
mAudioManager.requestAudioFocus(mAudioFocusListener,AudioManager.STREAM_MUSIC,AudioManager.AUDIOFOCUS_GAIN);
// 放棄焦點
if (mAudioManager != null)
mAudioManager.abandonAudioFocus(mAudioFocusListener);
轉載于:https://www.cnblogs.com/wutianlong/p/5730192.html