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

Commit cb135645 authored by Jon Eklund's avatar Jon Eklund Committed by Android Git Automerger
Browse files

am 318f0fe4: AudioService: Fix monitorRotation for landscape applications

* commit '318f0fe4':
  AudioService: Fix monitorRotation for landscape applications
parents 033c759c 318f0fe4
Loading
Loading
Loading
Loading
+34 −8
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ import android.view.KeyEvent;
import android.view.Surface;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityManager;
import android.view.OrientationEventListener;

import com.android.internal.telephony.ITelephony;
import com.android.internal.util.XmlUtils;
@@ -510,6 +511,8 @@ public class AudioService extends IAudioService.Stub {
    // If absolute volume is supported in AVRCP device
    private boolean mAvrcpAbsVolSupported = false;

    private AudioOrientationEventListener mOrientationListener;

    ///////////////////////////////////////////////////////////////////////////
    // Construction
    ///////////////////////////////////////////////////////////////////////////
@@ -618,6 +621,10 @@ public class AudioService extends IAudioService.Stub {
            mDeviceRotation = ((WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE))
                    .getDefaultDisplay().getRotation();
            Log.v(TAG, "monitoring device rotation, initial=" + mDeviceRotation);

            mOrientationListener = new AudioOrientationEventListener(mContext);
            mOrientationListener.enable();

            // initialize rotation in AudioSystem
            setRotationForAudioSystem();
        }
@@ -903,6 +910,25 @@ public class AudioService extends IAudioService.Stub {
        return (index * mStreamStates[dstStream].getMaxIndex() + mStreamStates[srcStream].getMaxIndex() / 2) / mStreamStates[srcStream].getMaxIndex();
    }

    private class AudioOrientationEventListener
            extends OrientationEventListener {
        public AudioOrientationEventListener(Context context) {
            super(context);
        }

        @Override
        public void onOrientationChanged(int orientation) {
            //Even though we're responding to phone orientation events,
            //use display rotation so audio stays in sync with video/dialogs
            int newRotation = ((WindowManager) mContext.getSystemService(
                    Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
            if (newRotation != mDeviceRotation) {
                mDeviceRotation = newRotation;
                setRotationForAudioSystem();
            }
        }
    }

    ///////////////////////////////////////////////////////////////////////////
    // IPC methods
    ///////////////////////////////////////////////////////////////////////////
@@ -4828,8 +4854,16 @@ public class AudioService extends IAudioService.Stub {
                    sendStickyBroadcastToAll(newIntent);
                }
            } else if (action.equals(Intent.ACTION_SCREEN_ON)) {
                if (mMonitorRotation) {
                    mOrientationListener.onOrientationChanged(0); //argument is ignored anyway
                    mOrientationListener.enable();
                }
                AudioSystem.setParameters("screen_state=on");
            } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
                if (mMonitorRotation) {
                    //reduce wakeups (save current) by only listening when display is on
                    mOrientationListener.disable();
                }
                AudioSystem.setParameters("screen_state=off");
            } else if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
                handleConfigurationChanged(context);
@@ -4932,14 +4966,6 @@ public class AudioService extends IAudioService.Stub {
                    setOrientationForAudioSystem();
                }
            }
            if (mMonitorRotation) {
                int newRotation = ((WindowManager) context.getSystemService(
                        Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
                if (newRotation != mDeviceRotation) {
                    mDeviceRotation = newRotation;
                    setRotationForAudioSystem();
                }
            }
            sendMsg(mAudioHandler,
                    MSG_CONFIGURE_SAFE_MEDIA_VOLUME,
                    SENDMSG_REPLACE,