From d20ea369b26cb40ee6122dd819ce9ef947489146 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Tue, 15 Sep 2009 00:13:38 -0400 Subject: [PATCH] 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 --- .../java/com/android/server/PowerManagerService.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index e64a1def0f36c..29513849b1d34 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -88,6 +88,9 @@ class PowerManagerService extends IPowerManager.Stub 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 @@ class PowerManagerService extends IPowerManager.Stub 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;