AudioManagerAndroid: remove audio focus request and saved audio mode (issue 2437963002 by braveyao@chromium.org)

246 views
Skip to first unread message

brav...@chromium.org

unread,
Oct 20, 2016, 1:01:40 PM10/20/16
to qin...@chromium.org, chromium...@chromium.org, feature-me...@chromium.org, avayvo...@chromium.org, mlamouri+w...@chromium.org, agriev...@chromium.org
Reviewers: qinmin
CL: https://chromiumcodereview.appspot.com/2437963002/

Message:
Hi qinmin,

Please take a look at this!

Description:
AudioManagerAndroid: remove audio focus request and saved audio mode

We used to request audio focus in AndioManagerAndroid and save/restore
the audio mode. Both are not necessary now.

The newly added MediaSessionDelegate will take care of audio focus.
And it's more resonable to switch back to NORMAL since we can't know
that the saved mode is still valid. This will be handled by Android
audio frame.

BUG=650533

Affected files (+5, -53 lines):
M media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java


Index: media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
diff --git a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
index 626beec9594dc34cae96000c7df0366d3230cbf1..2b4935c84ed598f55ac9b30827b7d58189e192ef 100644
--- a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
+++ b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
@@ -40,7 +40,7 @@ import java.util.List;
import java.util.Map;

@JNINamespace("media")
-class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
+class AudioManagerAndroid {
private static final String TAG = "cr.media";

// Set to true to enable debug logs. Avoid in production builds.
@@ -169,8 +169,6 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
// Enabled during initialization if BLUETOOTH permission is granted.
private boolean mHasBluetoothPermission = false;

- private int mSavedAudioMode = AudioManager.MODE_INVALID;
-
// Stores the audio states related to Bluetooth SCO audio, where some
// states are needed to keep track of intermediate states while the SCO
// channel is enabled or disabled (switching state can take a few seconds).
@@ -296,8 +294,8 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
}

/**
- * Requests audio focus for voice call and sets audio mode as COMMUNICATION if input parameter
- * is true. Abandon audio focus and restore saved audio mode if input parameter is false.
+ * Sets audio mode as COMMUNICATION if input parameter is true.
+ * Restores audio mode to NORMAL if input parameter is false.
* Required permission: android.Manifest.permission.MODIFY_AUDIO_SETTINGS.
*/
@CalledByNative
@@ -315,10 +313,6 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
}

if (on) {
- // Request audio focus for a voice call of unknown duration.
- mAudioManager.requestAudioFocus(this, AudioManager.STREAM_VOICE_CALL,
- AudioManager.AUDIOFOCUS_GAIN);
-
// Store microphone mute state and speakerphone state so it can
// be restored when closing.
mSavedIsSpeakerphoneOn = mAudioManager.isSpeakerphoneOn();
@@ -331,8 +325,6 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
// mode but we want to be able to mute it completely.
startObservingVolumeChanges();
} else {
- mAudioManager.abandonAudioFocus(this);
-
stopObservingVolumeChanges();
stopBluetoothSco();
synchronized (mLock) {
@@ -349,27 +341,12 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{

/**
* Sets audio mode to MODE_IN_COMMUNICATION if input parameter is true.
- * Restores saved audio mode if input parameter is false.
+ * Restores audio mode to MODE_NORMAL if input parameter is false.
*/
private void setCommunicationAudioModeOnInternal(boolean on) {
if (DEBUG) logd("setCommunicationAudioModeOn(" + on + ")");

if (on) {
- if (mSavedAudioMode != AudioManager.MODE_INVALID) {
- Log.w(TAG, "Audio mode has already been set");
- return;
- }
-
- // Store the current audio mode the first time we try to
- // switch to communication mode.
- try {
- mSavedAudioMode = mAudioManager.getMode();
- } catch (SecurityException e) {
- logDeviceInfo();
- throw e;
-
- }
-
try {
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
} catch (SecurityException e) {
@@ -378,39 +355,14 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
}

} else {
- if (mSavedAudioMode == AudioManager.MODE_INVALID) {
- Log.w(TAG, "Audio mode has not yet been set");
- return;
- }
-
// Restore the mode that was used before we switched to
// communication mode.
try {
- mAudioManager.setMode(mSavedAudioMode);
+ mAudioManager.setMode(AudioManager.MODE_NORMAL);
} catch (SecurityException e) {
logDeviceInfo();
throw e;
}
- mSavedAudioMode = AudioManager.MODE_INVALID;
- }
- }
-
- /**
- * Restores saved audio mode when we lose audio focus.
- * Sets communication audio mode when we gain audio focus again.
- * See https://crbug.com/525597 for more details.
- */
- @Override
- public void onAudioFocusChange(int focusChange) {
- if (DEBUG) logd("onAudioFocusChange: " + focusChange);
-
- switch (focusChange) {
- case AudioManager.AUDIOFOCUS_GAIN:
- setCommunicationAudioModeOnInternal(true);
- break;
- default:
- setCommunicationAudioModeOnInternal(false);
- break;
}
}



qin...@chromium.org

unread,
Oct 20, 2016, 1:03:29 PM10/20/16
to brav...@chromium.org, chromium...@chromium.org, feature-me...@chromium.org, avayvo...@chromium.org, mlamouri+w...@chromium.org, agriev...@chromium.org

commit-bot@chromium.org via codereview.chromium.org

unread,
Oct 20, 2016, 1:04:47 PM10/20/16
to brav...@chromium.org, qin...@chromium.org, commi...@chromium.org, chromium...@chromium.org, feature-me...@chromium.org, avayvo...@chromium.org, mlamouri+w...@chromium.org, agriev...@chromium.org

commit-bot@chromium.org via codereview.chromium.org

unread,
Oct 20, 2016, 1:23:48 PM10/20/16
to brav...@chromium.org, qin...@chromium.org, commi...@chromium.org, chromium...@chromium.org, feature-me...@chromium.org, avayvo...@chromium.org, mlamouri+w...@chromium.org, agriev...@chromium.org

commit-bot@chromium.org via chromiumcodereview-hr.appspot.com

unread,
Oct 21, 2016, 9:19:47 AM10/21/16
to brav...@chromium.org, qin...@chromium.org, commi...@chromium.org, chromium...@chromium.org, feature-me...@chromium.org, avayvo...@chromium.org, mlamouri+w...@chromium.org, agriev...@chromium.org
Patchset 1 (id:??) landed as
https://crrev.com/03623e2394747cac121f6c7d4dc011e0418e2b64
Cr-Commit-Position: refs/heads/master@{#426519}

https://codereview.chromium.org/2437963002/
Reply all
Reply to author
Forward
0 new messages