From bd819cdf0f09bf56e639fc6cb1e7fca0928cd32f Mon Sep 17 00:00:00 2001 From: Nicolo' Mazzucato Date: Fri, 5 Aug 2022 09:19:59 +0000 Subject: [PATCH] Disable hinge sensor while the screen is off This allows to save some power while the device is unfolded but with screen off. + Avoiding registering more listeners if HingeSensorAngleProvider.start() is called multiple times sequentially without a `stop` in the middle. It seems that otherwise we would get duplicated callbacks. + Adding onScreenTurningOn and onScreenTurningOff callbacks to forward to Launcher (as only sysui is receiving them) Bug: 240661156 Bug: 240374404 Test: DeviceFoldStateProviderTest && LauncherFoldAnimationTest (e2e) Change-Id: I769643321c4819c145aac1b0a32a80d5738951c2 --- .../android/quickstep/TouchInteractionService.java | 12 ++++++++++++ .../quickstep/util/ProxyScreenStatusProvider.java | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 52a37c5708..c46926ec00 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -270,6 +270,18 @@ public class TouchInteractionService extends Service MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurnedOn); } + @BinderThread + @Override + public void onScreenTurningOn() { + MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurningOn); + } + + @BinderThread + @Override + public void onScreenTurningOff() { + MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurningOff); + } + /** * Preloads the Overview activity. * diff --git a/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java b/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java index 3777c659e3..8f79ccf450 100644 --- a/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java +++ b/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java @@ -39,6 +39,16 @@ public class ProxyScreenStatusProvider implements ScreenStatusProvider { mListeners.forEach(ScreenListener::onScreenTurnedOn); } + /** Called when the screen is starting to turn on. */ + public void onScreenTurningOn() { + mListeners.forEach(ScreenListener::onScreenTurningOn); + } + + /** Called when the screen is starting to turn off. */ + public void onScreenTurningOff() { + mListeners.forEach(ScreenListener::onScreenTurningOff); + } + @Override public void addCallback(@NonNull ScreenListener listener) { mListeners.add(listener);