Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd819cdf authored by Nicolo' Mazzucato's avatar Nicolo' Mazzucato
Browse files

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
parent d6f79830
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -270,6 +270,18 @@ public class TouchInteractionService extends Service
            MAIN_EXECUTOR.execute(ProxyScreenStatusProvider.INSTANCE::onScreenTurnedOn);
            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.
         * Preloads the Overview activity.
         *
         *
+10 −0
Original line number Original line Diff line number Diff line
@@ -39,6 +39,16 @@ public class ProxyScreenStatusProvider implements ScreenStatusProvider {
        mListeners.forEach(ScreenListener::onScreenTurnedOn);
        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
    @Override
    public void addCallback(@NonNull ScreenListener listener) {
    public void addCallback(@NonNull ScreenListener listener) {
        mListeners.add(listener);
        mListeners.add(listener);