Merge changes from topic "fix-volume-slider-during-phone-call" into tm-qpr-dev
* changes: Change AudioManger getMode() binder call to addOnModeChangedListener() Fix volume controls show media instead of call volume during a call.
This commit is contained in:
@@ -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 */
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -1950,9 +1953,9 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
|||||||
case KeyEvent.KEYCODE_VOLUME_UP:
|
case KeyEvent.KEYCODE_VOLUME_UP:
|
||||||
case KeyEvent.KEYCODE_VOLUME_DOWN:
|
case KeyEvent.KEYCODE_VOLUME_DOWN:
|
||||||
case KeyEvent.KEYCODE_VOLUME_MUTE: {
|
case KeyEvent.KEYCODE_VOLUME_MUTE: {
|
||||||
// If we have a session send it the volume command, otherwise
|
// If we have a session and no active phone call send it the volume command,
|
||||||
// use the suggested stream.
|
// otherwise use the suggested stream.
|
||||||
if (mMediaController != null) {
|
if (mMediaController != null && !isActivePhoneCallOngoing()) {
|
||||||
getMediaSessionManager().dispatchVolumeKeyEventToSessionAsSystemService(event,
|
getMediaSessionManager().dispatchVolumeKeyEventToSessionAsSystemService(event,
|
||||||
mMediaController.getSessionToken());
|
mMediaController.getSessionToken());
|
||||||
} else {
|
} else {
|
||||||
@@ -2003,6 +2006,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isActivePhoneCallOngoing() {
|
||||||
|
return mAudioMode == AudioManager.MODE_IN_CALL
|
||||||
|
|| mAudioMode == AudioManager.MODE_IN_COMMUNICATION;
|
||||||
|
}
|
||||||
|
|
||||||
private KeyguardManager getKeyguardManager() {
|
private KeyguardManager getKeyguardManager() {
|
||||||
if (mKeyguardManager == null) {
|
if (mKeyguardManager == null) {
|
||||||
mKeyguardManager = (KeyguardManager) getContext().getSystemService(
|
mKeyguardManager = (KeyguardManager) getContext().getSystemService(
|
||||||
@@ -2326,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) {
|
||||||
@@ -3208,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
|
||||||
|
|||||||
Reference in New Issue
Block a user