Power widget - track brightness changes.

Also, don't change background data setting when changing auto-sync state.

Bug: 3030482
Change-Id: Iad19cac8375d2d38004dbe401ceaec5402e11989
This commit is contained in:
Amith Yamasani
2011-08-17 18:55:53 -07:00
parent e1246c5263
commit 49c3ef901b

View File

@@ -26,11 +26,13 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SyncStorageEngine; import android.content.SyncStorageEngine;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.location.LocationManager; import android.location.LocationManager;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.Uri; import android.net.Uri;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Handler;
import android.os.IPowerManager; import android.os.IPowerManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
@@ -103,6 +105,7 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
private static final StateTracker sBluetoothState = new BluetoothStateTracker(); private static final StateTracker sBluetoothState = new BluetoothStateTracker();
private static final StateTracker sGpsState = new GpsStateTracker(); private static final StateTracker sGpsState = new GpsStateTracker();
private static final StateTracker sSyncState = new SyncStateTracker(); private static final StateTracker sSyncState = new SyncStateTracker();
private static SettingsObserver sSettingsObserver;
/** /**
* The state machine for a setting's toggling, tracking reality * The state machine for a setting's toggling, tracking reality
@@ -533,8 +536,7 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
@Override @Override
public int getActualState(Context context) { public int getActualState(Context context) {
boolean on = getBackgroundDataState(context) && boolean on = ContentResolver.getMasterSyncAutomatically();
ContentResolver.getMasterSyncAutomatically();
return on ? STATE_ENABLED : STATE_DISABLED; return on ? STATE_ENABLED : STATE_DISABLED;
} }
@@ -547,7 +549,6 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
public void requestStateChange(final Context context, final boolean desiredState) { public void requestStateChange(final Context context, final boolean desiredState) {
final ConnectivityManager connManager = final ConnectivityManager connManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final boolean backgroundData = getBackgroundDataState(context);
final boolean sync = ContentResolver.getMasterSyncAutomatically(); final boolean sync = ContentResolver.getMasterSyncAutomatically();
new AsyncTask<Void, Void, Boolean>() { new AsyncTask<Void, Void, Boolean>() {
@@ -555,9 +556,6 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
protected Boolean doInBackground(Void... args) { protected Boolean doInBackground(Void... args) {
// Turning sync on. // Turning sync on.
if (desiredState) { if (desiredState) {
if (!backgroundData) {
connManager.setBackgroundDataSetting(true);
}
if (!sync) { if (!sync) {
ContentResolver.setMasterSyncAutomatically(true); ContentResolver.setMasterSyncAutomatically(true);
} }
@@ -600,6 +598,11 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"), new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP); PackageManager.DONT_KILL_APP);
if (sSettingsObserver == null) {
sSettingsObserver = new SettingsObserver(new Handler(),
context.getApplicationContext());
sSettingsObserver.startObserving();
}
} }
@Override @Override
@@ -610,6 +613,10 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"), new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP); PackageManager.DONT_KILL_APP);
if (sSettingsObserver != null) {
sSettingsObserver.stopObserving();
sSettingsObserver = null;
}
} }
/** /**
@@ -739,18 +746,6 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
updateWidget(context); updateWidget(context);
} }
/**
* Gets the state of background data.
*
* @param context
* @return true if enabled
*/
private static boolean getBackgroundDataState(Context context) {
ConnectivityManager connManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
return connManager.getBackgroundDataSetting();
}
/** /**
* Gets state of brightness. * Gets state of brightness.
* *
@@ -849,4 +844,34 @@ public class SettingsAppWidgetProvider extends AppWidgetProvider {
Log.d(TAG, "toggleBrightness: " + e); Log.d(TAG, "toggleBrightness: " + e);
} }
} }
/** Observer to watch for changes to the BRIGHTNESS setting */
private static class SettingsObserver extends ContentObserver {
private Context mContext;
SettingsObserver(Handler handler, Context context) {
super(handler);
mContext = context;
}
void startObserving() {
ContentResolver resolver = mContext.getContentResolver();
// Listen to brightness and brightness mode
resolver.registerContentObserver(Settings.System
.getUriFor(Settings.System.SCREEN_BRIGHTNESS), false, this);
resolver.registerContentObserver(Settings.System
.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE), false, this);
}
void stopObserving() {
mContext.getContentResolver().unregisterContentObserver(this);
}
@Override
public void onChange(boolean selfChange) {
updateWidget(mContext);
}
}
} }