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

Commit 1d2dd6a4 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
parent 71c577bf
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
@@ -622,7 +622,6 @@ public final class PowerManagerService extends SystemService
    // Value we store for tracking face down behavior.
    @VisibleForTesting
    boolean mIsFaceDown = false;
    private boolean mUseFaceDownDetector = true;
    private long mLastFlipTime = 0L;

    // The screen brightness setting override from the window manager
@@ -3254,7 +3253,7 @@ public final class PowerManagerService extends SystemService
                    mScreenTimeoutOverridePolicy.getScreenTimeoutOverrideLocked(
                            mWakeLockSummary, screenOffTimeout);
        }
        if (mIsFaceDown && mUseFaceDownDetector) {
        if (mIsFaceDown) {
            shortestScreenOffTimeout = Math.min(screenDimDuration, shortestScreenOffTimeout);
        }

@@ -4702,7 +4701,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:");
@@ -6927,7 +6925,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);
            }