From eab67c3ab9796bd143d12d94188d112703e4c368 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Thu, 9 Jun 2022 04:01:14 +0000 Subject: [PATCH] AudioService: update display rotation monitoring Changes in display management require switching display rotation query: do not use WindowManager, use DisplayManagerGlobal. Bug: 230811533 Test: play channel check on YT on device w/ stereo speakers Change-Id: If44c9b6373fe3fdf89656516139a0c29725afb82 --- .../com/android/server/audio/RotationHelper.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/audio/RotationHelper.java b/services/core/java/com/android/server/audio/RotationHelper.java index d4f4245f19c5a..eb8387fe85e58 100644 --- a/services/core/java/com/android/server/audio/RotationHelper.java +++ b/services/core/java/com/android/server/audio/RotationHelper.java @@ -20,12 +20,13 @@ import android.content.Context; import android.hardware.devicestate.DeviceStateManager; import android.hardware.devicestate.DeviceStateManager.FoldStateListener; import android.hardware.display.DisplayManager; +import android.hardware.display.DisplayManagerGlobal; import android.media.AudioSystem; import android.os.Handler; import android.os.HandlerExecutor; import android.util.Log; +import android.view.Display; import android.view.Surface; -import android.view.WindowManager; /** * Class to handle device rotation events for AudioService, and forward device rotation @@ -48,6 +49,8 @@ class RotationHelper { private static final String TAG = "AudioService.RotationHelper"; + private static final boolean DEBUG_ROTATION = false; + private static AudioDisplayListener sDisplayListener; private static FoldStateListener sFoldStateListener; @@ -98,8 +101,8 @@ class RotationHelper { // Even though we're responding to device orientation events, // use display rotation so audio stays in sync with video/dialogs // TODO(b/148458001): Support multi-display - int newRotation = ((WindowManager) sContext.getSystemService( - Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation(); + int newRotation = DisplayManagerGlobal.getInstance() + .getDisplayInfo(Display.DEFAULT_DISPLAY).rotation; synchronized(sRotationLock) { if (newRotation != sDeviceRotation) { sDeviceRotation = newRotation; @@ -109,7 +112,9 @@ class RotationHelper { } private static void publishRotation(int rotation) { - Log.v(TAG, "publishing device rotation =" + rotation + " (x90deg)"); + if (DEBUG_ROTATION) { + Log.i(TAG, "publishing device rotation =" + rotation + " (x90deg)"); + } switch (rotation) { case Surface.ROTATION_0: AudioSystem.setParameters("rotation=0"); @@ -159,6 +164,9 @@ class RotationHelper { @Override public void onDisplayChanged(int displayId) { + if (DEBUG_ROTATION) { + Log.i(TAG, "onDisplayChanged diplayId:" + displayId); + } updateOrientation(); } }