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

Commit 070baffe authored by Fiona Campbell's avatar Fiona Campbell
Browse files

Set FaceDownDetector disable-able by user

- Call straight into FaceDownDetector to en/disable

Bug: 329371579
Test: adb shell dumpsys power | grep mEnabledOverride
Test: adb shell cmd power set-face-down-detector false
Change-Id: I446ec423ff7434f79c72c0b3cbabf3f34501dc02
(cherry picked from commit 1d2dd6a4)
parent 216575b9
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -76,6 +76,8 @@ public class FaceDownDetector implements SensorEventListener {
    private static final boolean DEFAULT_FEATURE_ENABLED = true;

    private boolean mIsEnabled;
    // Defaults to true, we only want to disable if this is specifically requested.
    private boolean mEnabledOverride = true;

    private int mSensorMaxLatencyMicros;

@@ -240,6 +242,7 @@ public class FaceDownDetector implements SensorEventListener {
        pw.println("  mZAccelerationThreshold=" + mZAccelerationThreshold);
        pw.println("  mAccelerationThreshold=" + mAccelerationThreshold);
        pw.println("  mTimeThreshold=" + mTimeThreshold);
        pw.println("  mEnabledOverride=" + mEnabledOverride);
    }

    @Override
@@ -336,9 +339,8 @@ public class FaceDownDetector implements SensorEventListener {
    }

    private boolean isEnabled() {
        return DeviceConfig.getBoolean(NAMESPACE_ATTENTION_MANAGER_SERVICE, KEY_FEATURE_ENABLED,
                DEFAULT_FEATURE_ENABLED)
                && mContext.getResources().getBoolean(
        return mEnabledOverride && DeviceConfig.getBoolean(NAMESPACE_ATTENTION_MANAGER_SERVICE,
                KEY_FEATURE_ENABLED, DEFAULT_FEATURE_ENABLED) && mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_flipToScreenOffEnabled);
    }

@@ -449,6 +451,15 @@ public class FaceDownDetector implements SensorEventListener {
                + "\nmIsEnabled=" + mIsEnabled);
    }

    /**
     * Allows detector to be enabled & disabled.
     * @param enabled whether to enable detector.
     */
    public void setEnabledOverride(boolean enabled) {
        mEnabledOverride = enabled;
        mIsEnabled = isEnabled();
    }

    /**
     * Sets how much screen on time might be saved as a result of this detector. Currently used for
     * logging purposes.
+2 −4
Original line number Diff line number Diff line
@@ -616,7 +616,6 @@ public final class PowerManagerService extends SystemService

    // Value we store for tracking face down behavior.
    private boolean mIsFaceDown = false;
    private boolean mUseFaceDownDetector = true;
    private long mLastFlipTime = 0L;

    // The screen brightness setting override from the window manager
@@ -3199,7 +3198,7 @@ public final class PowerManagerService extends SystemService
            long screenOffTimeout, long screenDimDuration) {
        // If face down, we decrease the timeout to equal the dim duration so that the
        // device will go into a dim state.
        if (mIsFaceDown && mUseFaceDownDetector) {
        if (mIsFaceDown) {
            return Math.min(screenDimDuration, screenOffTimeout);
        }
        return screenOffTimeout;
@@ -4644,7 +4643,6 @@ public final class PowerManagerService extends SystemService
            pw.println("  mHoldingDisplaySuspendBlocker=" + mHoldingDisplaySuspendBlocker);
            pw.println("  mLastFlipTime=" + mLastFlipTime);
            pw.println("  mIsFaceDown=" + mIsFaceDown);
            pw.println("  mUseFaceDownDetector=" + mUseFaceDownDetector);

            pw.println();
            pw.println("Settings and Configuration:");
@@ -6846,7 +6844,7 @@ public final class PowerManagerService extends SystemService
        public void setUseFaceDownDetector(boolean enable) {
            final long ident = Binder.clearCallingIdentity();
            try {
                mUseFaceDownDetector = enable;
                mFaceDownDetector.setEnabledOverride(enable);
            } finally {
                Binder.restoreCallingIdentity(ident);
            }