Use new power manager API.

Change-Id: If0c58a9bee05ec0de434879e78cd95299e54e3fe
This commit is contained in:
Jeff Brown
2012-08-10 17:25:19 -07:00
parent e62c9069f6
commit 748ba16a04
2 changed files with 39 additions and 44 deletions

View File

@@ -24,6 +24,7 @@ import android.os.Handler;
import android.os.IPowerManager; import android.os.IPowerManager;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.os.PowerManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.preference.SeekBarDialogPreference; import android.preference.SeekBarDialogPreference;
@@ -37,6 +38,8 @@ import android.widget.SeekBar;
public class BrightnessPreference extends SeekBarDialogPreference implements public class BrightnessPreference extends SeekBarDialogPreference implements
SeekBar.OnSeekBarChangeListener, CheckBox.OnCheckedChangeListener { SeekBar.OnSeekBarChangeListener, CheckBox.OnCheckedChangeListener {
private final int mScreenBrightnessMinimum;
private final int mScreenBrightnessMaximum;
private SeekBar mSeekBar; private SeekBar mSeekBar;
private CheckBox mCheckBox; private CheckBox mCheckBox;
@@ -51,12 +54,6 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
private boolean mRestoredOldState; private boolean mRestoredOldState;
// Backlight range is from 0 - 255. Need to make sure that user
// doesn't set the backlight to 0 and get stuck
private int mScreenBrightnessDim =
getContext().getResources().getInteger(com.android.internal.R.integer.config_screenBrightnessDim);
private static final int MAXIMUM_BACKLIGHT = android.os.PowerManager.BRIGHTNESS_ON;
private static final int SEEK_BAR_RANGE = 10000; private static final int SEEK_BAR_RANGE = 10000;
private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) { private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) {
@@ -77,6 +74,10 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
public BrightnessPreference(Context context, AttributeSet attrs) { public BrightnessPreference(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
mScreenBrightnessMinimum = pm.getMinimumScreenBrightnessSetting();
mScreenBrightnessMaximum = pm.getMaximumScreenBrightnessSetting();
mAutomaticAvailable = context.getResources().getBoolean( mAutomaticAvailable = context.getResources().getBoolean(
com.android.internal.R.bool.config_automatic_brightness_available); com.android.internal.R.bool.config_automatic_brightness_available);
@@ -155,8 +156,8 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
} else { } else {
brightness = mCurBrightness; brightness = mCurBrightness;
} }
brightness = (brightness - mScreenBrightnessDim) brightness = (brightness - mScreenBrightnessMinimum)
/ (MAXIMUM_BACKLIGHT - mScreenBrightnessDim); / (mScreenBrightnessMaximum - mScreenBrightnessMinimum);
} }
return (int)(brightness*SEEK_BAR_RANGE); return (int)(brightness*SEEK_BAR_RANGE);
} }
@@ -218,7 +219,7 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
IPowerManager power = IPowerManager.Stub.asInterface( IPowerManager power = IPowerManager.Stub.asInterface(
ServiceManager.getService("power")); ServiceManager.getService("power"));
if (power != null) { if (power != null) {
power.setAutoBrightnessAdjustment(valf); power.setTemporaryScreenAutoBrightnessAdjustmentSettingOverride(valf);
} }
if (write) { if (write) {
final ContentResolver resolver = getContext().getContentResolver(); final ContentResolver resolver = getContext().getContentResolver();
@@ -229,13 +230,13 @@ public class BrightnessPreference extends SeekBarDialogPreference implements
} }
} }
} else { } else {
int range = (MAXIMUM_BACKLIGHT - mScreenBrightnessDim); int range = (mScreenBrightnessMaximum - mScreenBrightnessMinimum);
brightness = (brightness*range)/SEEK_BAR_RANGE + mScreenBrightnessDim; brightness = (brightness * range)/SEEK_BAR_RANGE + mScreenBrightnessMinimum;
try { try {
IPowerManager power = IPowerManager.Stub.asInterface( IPowerManager power = IPowerManager.Stub.asInterface(
ServiceManager.getService("power")); ServiceManager.getService("power"));
if (power != null) { if (power != null) {
power.setBacklightBrightness(brightness); power.setTemporaryScreenBrightnessSettingOverride(brightness);
} }
if (write) { if (write) {
mCurBrightness = -1; mCurBrightness = -1;

View File

@@ -34,6 +34,7 @@ import android.net.wifi.WifiManager;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Handler; import android.os.Handler;
import android.os.IPowerManager; import android.os.IPowerManager;
import android.os.PowerManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.provider.Settings; import android.provider.Settings;
@@ -94,16 +95,10 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
R.drawable.appwidget_settings_ind_on_r_holo R.drawable.appwidget_settings_ind_on_r_holo
}; };
/**
* Minimum and maximum brightnesses. Don't go to 0 since that makes the display unusable
*/
private static final int MINIMUM_BACKLIGHT = android.os.PowerManager.BRIGHTNESS_DIM + 10;
private static final int MAXIMUM_BACKLIGHT = android.os.PowerManager.BRIGHTNESS_ON;
private static final int DEFAULT_BACKLIGHT = (int) (android.os.PowerManager.BRIGHTNESS_ON * 0.4f);
/** Minimum brightness at which the indicator is shown at half-full and ON */ /** Minimum brightness at which the indicator is shown at half-full and ON */
private static final int HALF_BRIGHTNESS_THRESHOLD = (int) (0.3 * MAXIMUM_BACKLIGHT); private static final float HALF_BRIGHTNESS_THRESHOLD = 0.3f;
/** Minimum brightness at which the indicator is shown at full */ /** Minimum brightness at which the indicator is shown at full */
private static final int FULL_BRIGHTNESS_THRESHOLD = (int) (0.8 * MAXIMUM_BACKLIGHT); private static final float FULL_BRIGHTNESS_THRESHOLD = 0.8f;
private static final StateTracker sWifiState = new WifiStateTracker(); private static final StateTracker sWifiState = new WifiStateTracker();
private static final StateTracker sBluetoothState = new BluetoothStateTracker(); private static final StateTracker sBluetoothState = new BluetoothStateTracker();
@@ -684,11 +679,16 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
R.drawable.appwidget_settings_ind_on_r_holo); R.drawable.appwidget_settings_ind_on_r_holo);
} else { } else {
final int brightness = getBrightness(context); final int brightness = getBrightness(context);
final PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
// Set the icon // Set the icon
if (brightness > FULL_BRIGHTNESS_THRESHOLD) { final int full = (int)(pm.getMaximumScreenBrightnessSetting()
* FULL_BRIGHTNESS_THRESHOLD);
final int half = (int)(pm.getMaximumScreenBrightnessSetting()
* HALF_BRIGHTNESS_THRESHOLD);
if (brightness > full) {
views.setImageViewResource(R.id.img_brightness, views.setImageViewResource(R.id.img_brightness,
R.drawable.ic_appwidget_settings_brightness_full_holo); R.drawable.ic_appwidget_settings_brightness_full_holo);
} else if (brightness > HALF_BRIGHTNESS_THRESHOLD) { } else if (brightness > half) {
views.setImageViewResource(R.id.img_brightness, views.setImageViewResource(R.id.img_brightness,
R.drawable.ic_appwidget_settings_brightness_half_holo); R.drawable.ic_appwidget_settings_brightness_half_holo);
} else { } else {
@@ -696,7 +696,7 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
R.drawable.ic_appwidget_settings_brightness_off_holo); R.drawable.ic_appwidget_settings_brightness_off_holo);
} }
// Set the ON state // Set the ON state
if (brightness > HALF_BRIGHTNESS_THRESHOLD) { if (brightness > half) {
views.setImageViewResource(R.id.ind_brightness, views.setImageViewResource(R.id.ind_brightness,
R.drawable.appwidget_settings_ind_on_r_holo); R.drawable.appwidget_settings_ind_on_r_holo);
} else { } else {
@@ -775,13 +775,9 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
*/ */
private static int getBrightness(Context context) { private static int getBrightness(Context context) {
try { try {
IPowerManager power = IPowerManager.Stub.asInterface(
ServiceManager.getService("power"));
if (power != null) {
int brightness = Settings.System.getInt(context.getContentResolver(), int brightness = Settings.System.getInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS); Settings.System.SCREEN_BRIGHTNESS);
return brightness; return brightness;
}
} catch (Exception e) { } catch (Exception e) {
} }
return 0; return 0;
@@ -795,13 +791,9 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
*/ */
private static boolean getBrightnessMode(Context context) { private static boolean getBrightnessMode(Context context) {
try { try {
IPowerManager power = IPowerManager.Stub.asInterface(
ServiceManager.getService("power"));
if (power != null) {
int brightnessMode = Settings.System.getInt(context.getContentResolver(), int brightnessMode = Settings.System.getInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE); Settings.System.SCREEN_BRIGHTNESS_MODE);
return brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; return brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
}
} catch (Exception e) { } catch (Exception e) {
Log.d(TAG, "getBrightnessMode: " + e); Log.d(TAG, "getBrightnessMode: " + e);
} }
@@ -818,6 +810,8 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
IPowerManager power = IPowerManager.Stub.asInterface( IPowerManager power = IPowerManager.Stub.asInterface(
ServiceManager.getService("power")); ServiceManager.getService("power"));
if (power != null) { if (power != null) {
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
ContentResolver cr = context.getContentResolver(); ContentResolver cr = context.getContentResolver();
int brightness = Settings.System.getInt(cr, int brightness = Settings.System.getInt(cr,
Settings.System.SCREEN_BRIGHTNESS); Settings.System.SCREEN_BRIGHTNESS);
@@ -832,15 +826,15 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
// Rotate AUTO -> MINIMUM -> DEFAULT -> MAXIMUM // Rotate AUTO -> MINIMUM -> DEFAULT -> MAXIMUM
// Technically, not a toggle... // Technically, not a toggle...
if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) { if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
brightness = MINIMUM_BACKLIGHT; brightness = pm.getMinimumScreenBrightnessSetting();
brightnessMode = Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL; brightnessMode = Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
} else if (brightness < DEFAULT_BACKLIGHT) { } else if (brightness < pm.getDefaultScreenBrightnessSetting()) {
brightness = DEFAULT_BACKLIGHT; brightness = pm.getDefaultScreenBrightnessSetting();
} else if (brightness < MAXIMUM_BACKLIGHT) { } else if (brightness < pm.getMaximumScreenBrightnessSetting()) {
brightness = MAXIMUM_BACKLIGHT; brightness = pm.getMaximumScreenBrightnessSetting();
} else { } else {
brightnessMode = Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; brightnessMode = Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
brightness = MINIMUM_BACKLIGHT; brightness = pm.getMinimumScreenBrightnessSetting();
} }
if (context.getResources().getBoolean( if (context.getResources().getBoolean(
@@ -854,7 +848,7 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
brightnessMode = Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL; brightnessMode = Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
} }
if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL) { if (brightnessMode == Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL) {
power.setBacklightBrightness(brightness); power.setTemporaryScreenBrightnessSettingOverride(brightness);
Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, brightness); Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, brightness);
} }
} }