diff options
author | Jeff Brown <jeffbrown@google.com> | 2012-10-04 13:18:36 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2012-10-04 16:22:04 -0700 |
commit | 93cbbb25a56356cd36523809783a277fe92e312e (patch) | |
tree | c88c6f2adca001c4ed87324a33cb67073b2a0e08 /services/java/com/android/server/power/DisplayPowerController.java | |
parent | dce8b948320e933e46e4a38c496f56555472495f (diff) |
Allow phone to go to sleep while in call.
Bug: 7279383
Change-Id: Ia05490218f40a1843507b95ff48fa07910e582d4
Diffstat (limited to 'services/java/com/android/server/power/DisplayPowerController.java')
-rw-r--r-- | services/java/com/android/server/power/DisplayPowerController.java | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/services/java/com/android/server/power/DisplayPowerController.java b/services/java/com/android/server/power/DisplayPowerController.java index 4f8cdde99941..d0e758fe3929 100644 --- a/services/java/com/android/server/power/DisplayPowerController.java +++ b/services/java/com/android/server/power/DisplayPowerController.java @@ -117,8 +117,9 @@ final class DisplayPowerController { private static final int PROXIMITY_NEGATIVE = 0; private static final int PROXIMITY_POSITIVE = 1; - // Proximity sensor debounce delay in milliseconds. - private static final int PROXIMITY_SENSOR_DEBOUNCE_DELAY = 250; + // Proximity sensor debounce delay in milliseconds for positive or negative transitions. + private static final int PROXIMITY_SENSOR_POSITIVE_DEBOUNCE_DELAY = 0; + private static final int PROXIMITY_SENSOR_NEGATIVE_DEBOUNCE_DELAY = 500; // Trigger proximity if distance is less than 5 cm. private static final float TYPICAL_PROXIMITY_THRESHOLD = 5.0f; @@ -562,6 +563,7 @@ final class DisplayPowerController { if (!mScreenOffBecauseOfProximity && mProximity == PROXIMITY_POSITIVE) { mScreenOffBecauseOfProximity = true; + sendOnProximityPositive(); setScreenOn(false); } } else if (mWaitingForNegativeProximity @@ -734,8 +736,13 @@ final class DisplayPowerController { // Only accept a proximity sensor reading if it remains // stable for the entire debounce delay. mHandler.removeMessages(MSG_PROXIMITY_SENSOR_DEBOUNCED); - mPendingProximity = positive ? PROXIMITY_POSITIVE : PROXIMITY_NEGATIVE; - mPendingProximityDebounceTime = time + PROXIMITY_SENSOR_DEBOUNCE_DELAY; + if (positive) { + mPendingProximity = PROXIMITY_POSITIVE; + mPendingProximityDebounceTime = time + PROXIMITY_SENSOR_POSITIVE_DEBOUNCE_DELAY; + } else { + mPendingProximity = PROXIMITY_NEGATIVE; + mPendingProximityDebounceTime = time + PROXIMITY_SENSOR_NEGATIVE_DEBOUNCE_DELAY; + } debounceProximitySensor(); } @@ -973,6 +980,17 @@ final class DisplayPowerController { } }; + private void sendOnProximityPositive() { + mCallbackHandler.post(mOnProximityPositiveRunnable); + } + + private final Runnable mOnProximityPositiveRunnable = new Runnable() { + @Override + public void run() { + mCallbacks.onProximityPositive(); + } + }; + private void sendOnProximityNegative() { mCallbackHandler.post(mOnProximityNegativeRunnable); } @@ -1090,6 +1108,7 @@ final class DisplayPowerController { */ public interface Callbacks { void onStateChanged(); + void onProximityPositive(); void onProximityNegative(); } |