summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornadlabak <pavel@doshaska.net>2010-12-05 08:47:32 -0800
committernadlabak <pavel@doshaska.net>2010-12-05 08:47:32 -0800
commitab3fc3dc83e71a2e34adf55bd9a46df2e7e1fed5 (patch)
treec47c8a562380c579e1e7eede59419c13d5bbee56
parent04d8fc705dcd80dd0a91f9f811c6aa8fe7329ba6 (diff)
downloadframeworks_base-ab3fc3dc83e71a2e34adf55bd9a46df2e7e1fed5.zip
frameworks_base-ab3fc3dc83e71a2e34adf55bd9a46df2e7e1fed5.tar.gz
frameworks_base-ab3fc3dc83e71a2e34adf55bd9a46df2e7e1fed5.tar.bz2
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
-rw-r--r--core/res/res/values/config.xml3
-rw-r--r--services/java/com/android/server/PowerManagerService.java13
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 -->
<integer name="config_lightSensorWarmupTime">0</integer>
+ <!-- Allows the light sensor to be ignored when flashlight is on -->
+ <bool name="config_flashlight_affects_lightsensor">false</bool>
+
<!-- Enables swipe versus poly-finger touch disambiguation in the KeyboardView -->
<bool name="config_swipeDisambiguation">true</bool>
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;
}