summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/BrightnessPreference.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-01-20 18:37:42 -0800
committerDianne Hackborn <hackbod@google.com>2012-01-23 10:22:08 -0800
commit9907f6b274eec93a193852564c67731ea1dcd88f (patch)
tree2bf68bc72af9eaad1d0ec6a9d01e599055171c4b /src/com/android/settings/BrightnessPreference.java
parent8a3703d909278fd7574086a7dec41ea8cfd324b6 (diff)
downloadpackages_apps_Settings-9907f6b274eec93a193852564c67731ea1dcd88f.zip
packages_apps_Settings-9907f6b274eec93a193852564c67731ea1dcd88f.tar.gz
packages_apps_Settings-9907f6b274eec93a193852564c67731ea1dcd88f.tar.bz2
When auto-brightness is on, you can now adjust its brightness.
Change-Id: Ie152def12cf7befd9c15a19f9975c207cbb5c541
Diffstat (limited to 'src/com/android/settings/BrightnessPreference.java')
-rw-r--r--src/com/android/settings/BrightnessPreference.java100
1 files changed, 62 insertions, 38 deletions
diff --git a/src/com/android/settings/BrightnessPreference.java b/src/com/android/settings/BrightnessPreference.java
index c34d212..fb25e9b 100644
--- a/src/com/android/settings/BrightnessPreference.java
+++ b/src/com/android/settings/BrightnessPreference.java
@@ -45,6 +45,7 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
private int mOldAutomatic;
private boolean mAutomaticAvailable;
+ private boolean mAutomaticMode;
private boolean mRestoredOldState;
@@ -97,24 +98,23 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
super.onBindDialogView(view);
mSeekBar = getSeekBar(view);
- mSeekBar.setMax(MAXIMUM_BACKLIGHT - mScreenBrightnessDim);
- mOldBrightness = getBrightness(0);
- mSeekBar.setProgress(mOldBrightness - mScreenBrightnessDim);
+ mSeekBar.setMax(10000);
+ mOldBrightness = getBrightness();
+ mSeekBar.setProgress(mOldBrightness);
mCheckBox = (CheckBox)view.findViewById(R.id.automatic_mode);
if (mAutomaticAvailable) {
mCheckBox.setOnCheckedChangeListener(this);
mOldAutomatic = getBrightnessMode(0);
- mCheckBox.setChecked(mOldAutomatic != 0);
- } else {
- mCheckBox.setVisibility(View.GONE);
+ mAutomaticMode = mOldAutomatic == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
+ mCheckBox.setChecked(mAutomaticMode);
}
mSeekBar.setOnSeekBarChangeListener(this);
}
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromTouch) {
- setBrightness(progress + mScreenBrightnessDim);
+ setBrightness(progress, false);
}
public void onStartTrackingTouch(SeekBar seekBar) {
@@ -128,19 +128,27 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
setMode(isChecked ? Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
: Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
- if (!isChecked) {
- setBrightness(mSeekBar.getProgress() + mScreenBrightnessDim);
- }
+ mSeekBar.setProgress(getBrightness());
}
- private int getBrightness(int defaultValue) {
- int brightness = defaultValue;
+ private int getBrightness() {
+ int mode = getBrightnessMode(0);
+ float brightness = 0;
try {
- brightness = Settings.System.getInt(getContext().getContentResolver(),
- Settings.System.SCREEN_BRIGHTNESS);
+ if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
+ brightness = Settings.System.getFloat(getContext().getContentResolver(),
+ Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ);
+ brightness = (brightness+1)/2;
+ } else {
+ brightness = Settings.System.getInt(getContext().getContentResolver(),
+ Settings.System.SCREEN_BRIGHTNESS);
+ brightness = (MAXIMUM_BACKLIGHT - mScreenBrightnessDim)
+ / (brightness - mScreenBrightnessDim);
+
+ }
} catch (SettingNotFoundException snfe) {
}
- return brightness;
+ return (int)(brightness*10000);
}
private int getBrightnessMode(int defaultValue) {
@@ -154,13 +162,14 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
}
private void onBrightnessChanged() {
- int brightness = getBrightness(MAXIMUM_BACKLIGHT);
- mSeekBar.setProgress(brightness - mScreenBrightnessDim);
+ mSeekBar.setProgress(getBrightness());
}
private void onBrightnessModeChanged() {
- boolean checked = getBrightnessMode(0) != 0;
+ boolean checked = getBrightnessMode(0)
+ == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
mCheckBox.setChecked(checked);
+ mSeekBar.setProgress(getBrightness());
}
@Override
@@ -170,9 +179,7 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
final ContentResolver resolver = getContext().getContentResolver();
if (positiveResult) {
- Settings.System.putInt(resolver,
- Settings.System.SCREEN_BRIGHTNESS,
- mSeekBar.getProgress() + mScreenBrightnessDim);
+ setBrightness(mSeekBar.getProgress(), true);
} else {
restoreOldState();
}
@@ -187,30 +194,47 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
if (mAutomaticAvailable) {
setMode(mOldAutomatic);
}
- if (!mAutomaticAvailable || mOldAutomatic == 0) {
- setBrightness(mOldBrightness);
- }
+ setBrightness(mOldBrightness, false);
mRestoredOldState = true;
}
- private void setBrightness(int brightness) {
- try {
- IPowerManager power = IPowerManager.Stub.asInterface(
- ServiceManager.getService("power"));
- if (power != null) {
- power.setBacklightBrightness(brightness);
+ private void setBrightness(int brightness, boolean write) {
+ if (mAutomaticMode) {
+ float valf = (((float)brightness*2)/10000) - 1.0f;
+ try {
+ IPowerManager power = IPowerManager.Stub.asInterface(
+ ServiceManager.getService("power"));
+ if (power != null) {
+ power.setAutoBrightnessAdjustment(valf);
+ }
+ if (write) {
+ final ContentResolver resolver = getContext().getContentResolver();
+ Settings.System.putFloat(resolver,
+ Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, valf);
+ }
+ } catch (RemoteException doe) {
+ }
+ } else {
+ int range = (MAXIMUM_BACKLIGHT - mScreenBrightnessDim);
+ brightness = (brightness*range)/10000 + mScreenBrightnessDim;
+ try {
+ IPowerManager power = IPowerManager.Stub.asInterface(
+ ServiceManager.getService("power"));
+ if (power != null) {
+ power.setBacklightBrightness(brightness);
+ }
+ if (write) {
+ final ContentResolver resolver = getContext().getContentResolver();
+ Settings.System.putInt(resolver,
+ Settings.System.SCREEN_BRIGHTNESS, brightness);
+ }
+ } catch (RemoteException doe) {
}
- } catch (RemoteException doe) {
-
}
}
private void setMode(int mode) {
- if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
- mSeekBar.setVisibility(View.GONE);
- } else {
- mSeekBar.setVisibility(View.VISIBLE);
- }
+ mAutomaticMode = mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
Settings.System.putInt(getContext().getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE, mode);
}
@@ -245,7 +269,7 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
mOldBrightness = myState.oldProgress;
mOldAutomatic = myState.oldAutomatic ? 1 : 0;
setMode(myState.automatic ? 1 : 0);
- setBrightness(myState.progress + mScreenBrightnessDim);
+ setBrightness(myState.progress, false);
}
private static class SavedState extends BaseSavedState {