Loading media/java/android/media/AudioService.java +34 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 /////////////////////////////////////////////////////////////////////////// Loading Loading @@ -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(); } Loading Loading @@ -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 /////////////////////////////////////////////////////////////////////////// Loading Loading @@ -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); Loading Loading @@ -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, Loading Loading
media/java/android/media/AudioService.java +34 −8 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 /////////////////////////////////////////////////////////////////////////// Loading Loading @@ -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(); } Loading Loading @@ -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 /////////////////////////////////////////////////////////////////////////// Loading Loading @@ -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); Loading Loading @@ -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, Loading