当 Android 收到 SMS 通知时,通知会发送 AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK 焦点更改。我通过将媒体播放器的音量减少 50% 来处理这个问题。
例如
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
// E.g. SMS
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK :
playerDuck(true);
break;
case AudioManager.AUDIOFOCUS_GAIN :
case AudioManager.AUDIOFOCUS_GAIN_TRANSIENT :
playerDuck(false);
playerResume();
break;
}
}
public synchronized void playerDuck(boolean duck) {
if (mediaPlayer != null) {
// Reduce the volume by half when ducking - otherwise play at full volume.
mediaPlayer.setVolume(duck ? 0.5f : 1.0f, duck ? 0.5f : 1.0f);
}
}
这在通过设备的扬声器收听媒体播放器时效果很好,但如果您插入耳机,而不是暂时降低音量,媒体播放器会在通知播放时静音。
插入耳机后,我应该如何以不同的方式处理音频焦点的变化?