Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 270620a6 authored by Bishoy Gendy's avatar Bishoy Gendy Committed by Android (Google) Code Review
Browse files

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.
parents 179ba8d0 57ff593e
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -823,6 +823,11 @@ public abstract class Window {
    /** @hide */
    public final void destroy() {
        mDestroyed = true;
        onDestroy();
    }

    /** @hide */
    protected void onDestroy() {
    }

    /** @hide */
+28 −3
Original line number Diff line number Diff line
@@ -295,6 +295,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
    private boolean mClosingActionMenu;

    private int mVolumeControlStreamType = AudioManager.USE_DEFAULT_STREAM_TYPE;
    private int mAudioMode = AudioManager.MODE_NORMAL;
    private MediaController mMediaController;

    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 mReturnTransition = USE_DEFAULT_TRANSITION;
    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_DOWN:
            case KeyEvent.KEYCODE_VOLUME_MUTE: {
                // If we have a session send it the volume command, otherwise
                // use the suggested stream.
                if (mMediaController != null) {
                // If we have a session and no active phone call send it the volume command,
                // otherwise use the suggested stream.
                if (mMediaController != null && !isActivePhoneCallOngoing()) {
                    getMediaSessionManager().dispatchVolumeKeyEventToSessionAsSystemService(event,
                            mMediaController.getSessionToken());
                } else {
@@ -2003,6 +2006,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
        return false;
    }

    private boolean isActivePhoneCallOngoing() {
        return mAudioMode == AudioManager.MODE_IN_CALL
                || mAudioMode == AudioManager.MODE_IN_COMMUNICATION;
    }

    private KeyguardManager getKeyguardManager() {
        if (mKeyguardManager == null) {
            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 {
        @Override
        public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) {
@@ -3208,6 +3224,15 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
    @Override
    public void setMediaController(MediaController 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