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
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index 52a37c5..c46926e 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -270,6 +270,18 @@
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 3777c65..8f79ccf 100644
--- a/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java
+++ b/quickstep/src/com/android/quickstep/util/ProxyScreenStatusProvider.java
@@ -39,6 +39,16 @@
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);