Merge changes from topic "fix-volume-slider-during-phone-call" into tm-qpr-dev am: 270620a63c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21701416

Change-Id: Ic636d96107ba00e4e244112e6c6e23ec89aa0f49
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Bishoy Gendy
2023-03-03 17:40:45 +00:00
committed by Automerger Merge Worker
2 changed files with 29 additions and 11 deletions

View File

@@ -823,6 +823,11 @@ public abstract class Window {
/** @hide */ /** @hide */
public final void destroy() { public final void destroy() {
mDestroyed = true; mDestroyed = true;
onDestroy();
}
/** @hide */
protected void onDestroy() {
} }
/** @hide */ /** @hide */

View File

@@ -295,6 +295,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
private boolean mClosingActionMenu; private boolean mClosingActionMenu;
private int mVolumeControlStreamType = AudioManager.USE_DEFAULT_STREAM_TYPE; private int mVolumeControlStreamType = AudioManager.USE_DEFAULT_STREAM_TYPE;
private int mAudioMode = AudioManager.MODE_NORMAL;
private MediaController mMediaController; private MediaController mMediaController;
private AudioManager mAudioManager; private AudioManager mAudioManager;
@@ -317,6 +318,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
} }
}; };
private AudioManager.OnModeChangedListener mOnModeChangedListener;
private Transition mEnterTransition = null; private Transition mEnterTransition = null;
private Transition mReturnTransition = USE_DEFAULT_TRANSITION; private Transition mReturnTransition = USE_DEFAULT_TRANSITION;
private Transition mExitTransition = null; private Transition mExitTransition = null;
@@ -1952,7 +1955,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
case KeyEvent.KEYCODE_VOLUME_MUTE: { case KeyEvent.KEYCODE_VOLUME_MUTE: {
// If we have a session and no active phone call send it the volume command, // If we have a session and no active phone call send it the volume command,
// otherwise use the suggested stream. // otherwise use the suggested stream.
if (mMediaController != null && !isActivePhoneCallKnown()) { if (mMediaController != null && !isActivePhoneCallOngoing()) {
getMediaSessionManager().dispatchVolumeKeyEventToSessionAsSystemService(event, getMediaSessionManager().dispatchVolumeKeyEventToSessionAsSystemService(event,
mMediaController.getSessionToken()); mMediaController.getSessionToken());
} else { } else {
@@ -2003,16 +2006,9 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
return false; return false;
} }
private boolean isActivePhoneCallKnown() { private boolean isActivePhoneCallOngoing() {
boolean isActivePhoneCallKnown = false; return mAudioMode == AudioManager.MODE_IN_CALL
AudioManager audioManager = || mAudioMode == AudioManager.MODE_IN_COMMUNICATION;
(AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
int audioManagerMode = audioManager.getMode();
if (audioManagerMode == AudioManager.MODE_IN_CALL
|| audioManagerMode == AudioManager.MODE_IN_COMMUNICATION) {
isActivePhoneCallKnown = true;
}
return isActivePhoneCallKnown;
} }
private KeyguardManager getKeyguardManager() { private KeyguardManager getKeyguardManager() {
@@ -2338,6 +2334,14 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
} }
} }
@Override
protected void onDestroy() {
if (mOnModeChangedListener != null) {
getAudioManager().removeOnModeChangedListener(mOnModeChangedListener);
mOnModeChangedListener = null;
}
}
private class PanelMenuPresenterCallback implements MenuPresenter.Callback { private class PanelMenuPresenterCallback implements MenuPresenter.Callback {
@Override @Override
public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) {
@@ -3220,6 +3224,15 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
@Override @Override
public void setMediaController(MediaController controller) { public void setMediaController(MediaController controller) {
mMediaController = controller; mMediaController = controller;
if (controller != null && mOnModeChangedListener == null) {
mAudioMode = getAudioManager().getMode();
mOnModeChangedListener = mode -> mAudioMode = mode;
getAudioManager().addOnModeChangedListener(getContext().getMainExecutor(),
mOnModeChangedListener);
} else if (mOnModeChangedListener != null) {
getAudioManager().removeOnModeChangedListener(mOnModeChangedListener);
mOnModeChangedListener = null;
}
} }
@Override @Override