From ab3fc3dc83e71a2e34adf55bd9a46df2e7e1fed5 Mon Sep 17 00:00:00 2001 From: nadlabak Date: Sun, 5 Dec 2010 08:47:32 -0800 Subject: allow the light sensor to be ignored when flashlight is on on certain devices, the flashlight affects the light sensor, causing the display autobrightness to switch to the maximum level when flashlight is on Change-Id: I22d623ce5457fc3ae177b609da8b51904bc73e83 --- core/res/res/values/config.xml | 3 +++ services/java/com/android/server/PowerManagerService.java | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 4556740..048e214 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -278,6 +278,9 @@ will not debounce light sensor readings --> 0 + + false + true diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 8373be0..457622e 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -62,6 +62,7 @@ import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; import static android.provider.Settings.System.STAY_ON_WHILE_PLUGGED_IN; +import static android.provider.Settings.System.TORCH_STATE; import java.io.FileDescriptor; import java.io.IOException; @@ -240,6 +241,8 @@ class PowerManagerService extends IPowerManager.Stub private int[] mButtonBacklightValues; private int[] mKeyboardBacklightValues; private int mLightSensorWarmupTime; + private boolean mFlashlightAffectsLightSensor; + private boolean mIgnoreLightSensor; // Custom light housekeeping private long mLightSettingsTag = -1; @@ -455,6 +458,8 @@ class PowerManagerService extends IPowerManager.Stub // DIM_SCREEN //mDimScreen = getInt(DIM_SCREEN) != 0; + mIgnoreLightSensor = (getInt(TORCH_STATE) != 0) && mFlashlightAffectsLightSensor; + updateLightSettings(); // SCREEN_BRIGHTNESS_MODE @@ -542,6 +547,8 @@ class PowerManagerService extends IPowerManager.Stub Resources resources = mContext.getResources(); // read settings for auto-brightness + mFlashlightAffectsLightSensor = resources.getBoolean( + com.android.internal.R.bool.config_flashlight_affects_lightsensor); mUseSoftwareAutoBrightness = resources.getBoolean( com.android.internal.R.bool.config_automatic_brightness_available); if (mUseSoftwareAutoBrightness) { @@ -563,9 +570,10 @@ class PowerManagerService extends IPowerManager.Stub + Settings.System.NAME + "=?) or (" + Settings.System.NAME + "=?) or (" + Settings.System.NAME + "=?) or (" + + Settings.System.NAME + "=?) or (" + Settings.System.NAME + "=?)", new String[]{STAY_ON_WHILE_PLUGGED_IN, SCREEN_OFF_TIMEOUT, DIM_SCREEN, - SCREEN_BRIGHTNESS_MODE, Settings.System.LIGHTS_CHANGED}, + SCREEN_BRIGHTNESS_MODE, TORCH_STATE, Settings.System.LIGHTS_CHANGED}, null); mSettings = new ContentQueryMap(settingsCursor, Settings.System.NAME, true, mHandler); SettingsObserver settingsObserver = new SettingsObserver(); @@ -3149,7 +3157,8 @@ class PowerManagerService extends IPowerManager.Stub public void onSensorChanged(SensorEvent event) { synchronized (mLocks) { // ignore light sensor while screen is turning off - if (isScreenTurningOffLocked()) { + // or when flashlight would affect it + if (isScreenTurningOffLocked() || mIgnoreLightSensor) { return; } -- cgit v1.1