diff --git a/mobile/android/base/java/org/mozilla/gecko/media/AudioFocusAgent.java b/mobile/android/base/java/org/mozilla/gecko/media/AudioFocusAgent.java index d221987a14cb..04632955476f 100644 --- a/mobile/android/base/java/org/mozilla/gecko/media/AudioFocusAgent.java +++ b/mobile/android/base/java/org/mozilla/gecko/media/AudioFocusAgent.java @@ -59,31 +59,32 @@ public class AudioFocusAgent { switch (focusChange) { case AudioManager.AUDIOFOCUS_LOSS: Log.d(LOGTAG, "onAudioFocusChange, AUDIOFOCUS_LOSS"); + mAudioFocusState = State.LOST_FOCUS; notifyObservers("audioFocusChanged", "lostAudioFocus"); notifyMediaControlService(MediaControlService.ACTION_PAUSE_BY_AUDIO_FOCUS); - mAudioFocusState = State.LOST_FOCUS; break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: Log.d(LOGTAG, "onAudioFocusChange, AUDIOFOCUS_LOSS_TRANSIENT"); + mAudioFocusState = State.LOST_FOCUS_TRANSIENT; notifyObservers("audioFocusChanged", "lostAudioFocusTransiently"); notifyMediaControlService(MediaControlService.ACTION_PAUSE_BY_AUDIO_FOCUS); - mAudioFocusState = State.LOST_FOCUS_TRANSIENT; break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: Log.d(LOGTAG, "onAudioFocusChange, AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK"); - notifyMediaControlService(MediaControlService.ACTION_START_AUDIO_DUCK); mAudioFocusState = State.LOST_FOCUS_TRANSIENT_CAN_DUCK; + notifyMediaControlService(MediaControlService.ACTION_START_AUDIO_DUCK); break; case AudioManager.AUDIOFOCUS_GAIN: - if (mAudioFocusState.equals(State.LOST_FOCUS_TRANSIENT_CAN_DUCK)) { + State state = mAudioFocusState; + mAudioFocusState = State.OWN_FOCUS; + if (state.equals(State.LOST_FOCUS_TRANSIENT_CAN_DUCK)) { Log.d(LOGTAG, "onAudioFocusChange, AUDIOFOCUS_GAIN (from DUCKING)"); notifyMediaControlService(MediaControlService.ACTION_STOP_AUDIO_DUCK); - } else if (mAudioFocusState.equals(State.LOST_FOCUS_TRANSIENT)) { + } else if (state.equals(State.LOST_FOCUS_TRANSIENT)) { Log.d(LOGTAG, "onAudioFocusChange, AUDIOFOCUS_GAIN"); notifyObservers("audioFocusChanged", "gainAudioFocus"); notifyMediaControlService(MediaControlService.ACTION_RESUME_BY_AUDIO_FOCUS); } - mAudioFocusState = State.OWN_FOCUS; break; default: }