mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-26 03:35:33 +00:00
Bug 1357639 - part3 : change audio focus state before notifying observers. r=sebastian
Notify observer might cause the method (notifyStoppedPlaying) is called by C++ side, and we should change our internal state before calling the method. MozReview-Commit-ID: 5xNXhGmAIrR --HG-- extra : rebase_source : 23fb8bef4066cad5238f49bb692445d9b684a84e
This commit is contained in:
parent
fcd83aadc6
commit
59a4e31527
@ -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:
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user