From 0563f2971bb0c293e36519037119b8aec6eec6bf Mon Sep 17 00:00:00 2001 From: Ziyang Cheng Date: Tue, 25 Jul 2023 00:16:54 +0000 Subject: [PATCH] Listen to ACTION_SCREEN_ON/OFF if DisplayManager is not available. Test: Performing tilt/untilt gestures on Pixel watch and verify SetParameters is called when screen is on/off. Bug: 292477293 Change-Id: I9b1fd806a030ea5b5208256ea7eef32b5f12acad Signed-off-by: Ziyang Cheng --- .../android/server/audio/AudioService.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 9f958be84e98a..1564f7d379d2e 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1386,6 +1386,10 @@ public class AudioService extends IAudioService.Stub new IntentFilter(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED); intentFilter.addAction(BluetoothHeadset.ACTION_ACTIVE_DEVICE_CHANGED); intentFilter.addAction(Intent.ACTION_DOCK_EVENT); + if (mDisplayManager == null) { + intentFilter.addAction(Intent.ACTION_SCREEN_ON); + intentFilter.addAction(Intent.ACTION_SCREEN_OFF); + } intentFilter.addAction(Intent.ACTION_USER_SWITCHED); intentFilter.addAction(Intent.ACTION_USER_BACKGROUND); intentFilter.addAction(Intent.ACTION_USER_FOREGROUND); @@ -1416,7 +1420,9 @@ public class AudioService extends IAudioService.Stub subscriptionManager.addOnSubscriptionsChangedListener(mSubscriptionChangedListener); } - mDisplayManager.registerDisplayListener(mDisplayListener, mAudioHandler); + if (mDisplayManager != null) { + mDisplayManager.registerDisplayListener(mDisplayListener, mAudioHandler); + } } public void systemReady() { @@ -9587,6 +9593,17 @@ public class AudioService extends IAudioService.Stub } else if (action.equals(BluetoothHeadset.ACTION_ACTIVE_DEVICE_CHANGED) || action.equals(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED)) { mDeviceBroker.receiveBtEvent(intent); + } else if (action.equals(Intent.ACTION_SCREEN_ON)) { + if (mMonitorRotation) { + RotationHelper.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 + RotationHelper.disable(); + } + AudioSystem.setParameters("screen_state=off"); } else if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) { sendMsg(mAudioHandler, MSG_CONFIGURATION_CHANGED,