diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java index 0d5527cf6cd94..bf1c06035ec20 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java @@ -184,6 +184,13 @@ public class DozeSensors { pw.print("ProxSensor: "); pw.println(mProxSensor.toString()); } + /** + * @return true if prox is currently far, false if near or null if unknown. + */ + public Boolean isProximityCurrentlyFar() { + return mProxSensor.mCurrentlyFar; + } + private class ProxSensor implements SensorEventListener { static final long COOLDOWN_TRIGGER = 2 * 1000; diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java index d1f5337b80b05..ea064797f8f53 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java @@ -103,8 +103,11 @@ public class DozeTriggers implements DozeMachine.Part { private void proximityCheckThenCall(IntConsumer callback, boolean alreadyPerformedProxCheck, int pulseReason) { + Boolean cachedProxFar = mDozeSensors.isProximityCurrentlyFar(); if (alreadyPerformedProxCheck) { callback.accept(ProximityCheck.RESULT_NOT_CHECKED); + } else if (cachedProxFar != null) { + callback.accept(cachedProxFar ? ProximityCheck.RESULT_FAR : ProximityCheck.RESULT_NEAR); } else { final long start = SystemClock.uptimeMillis(); new ProximityCheck() {