PowerManagerService: Use 5 cm threshold for the proximity sensor.
This eliminates the assumption that the proximity sensor will always return
zero distance when it is active.
Change-Id: I6245b074e4c42aeae3a181e6a5087554517046d2
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java
index e64a1de..2951384 100644
--- a/services/java/com/android/server/PowerManagerService.java
+++ b/services/java/com/android/server/PowerManagerService.java
@@ -88,6 +88,9 @@
private static final int LONG_KEYLIGHT_DELAY = 6000; // t+6 sec
private static final int LONG_DIM_TIME = 7000; // t+N-5 sec
+ // trigger proximity if distance is less than 5 cm
+ private static final float PROXIMITY_THRESHOLD = 5.0f;
+
// Cached Gservices settings; see updateGservicesValues()
private int mShortKeylightDelay = SHORT_KEYLIGHT_DELAY_DEFAULT;
@@ -2084,18 +2087,19 @@
public void onSensorChanged(SensorEvent event) {
long milliseconds = event.timestamp / 1000000;
synchronized (mLocks) {
- if (event.values[0] == 0.0) {
+ float distance = event.values[0];
+ if (distance >= 0.0 && distance < PROXIMITY_THRESHOLD) {
if (mSpew) {
- Log.d(TAG, "onSensorChanged: proximity active");
+ Log.d(TAG, "onSensorChanged: proximity active, distance: " + distance);
}
goToSleepLocked(milliseconds);
mProximitySensorActive = true;
} else {
- // proximity sensor negative events user activity.
+ // proximity sensor negative events trigger as user activity.
// temporarily set mUserActivityAllowed to true so this will work
// even when the keyguard is on.
if (mSpew) {
- Log.d(TAG, "onSensorChanged: proximity inactive");
+ Log.d(TAG, "onSensorChanged: proximity inactive, distance: " + distance);
}
mProximitySensorActive = false;
boolean savedActivityAllowed = mUserActivityAllowed;