Power widget - track brightness changes.
Also, don't change background data setting when changing auto-sync state.
Bug: 3030482
Change-Id: Iad19cac8375d2d38004dbe401ceaec5402e11989
diff --git a/src/com/android/settings/widget/SettingsAppWidgetProvider.java b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
index ba2b615..8df009c 100644
--- a/src/com/android/settings/widget/SettingsAppWidgetProvider.java
+++ b/src/com/android/settings/widget/SettingsAppWidgetProvider.java
@@ -26,11 +26,13 @@
import android.content.Intent;
import android.content.SyncStorageEngine;
import android.content.pm.PackageManager;
+import android.database.ContentObserver;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.AsyncTask;
+import android.os.Handler;
import android.os.IPowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -103,6 +105,7 @@
private static final StateTracker sBluetoothState = new BluetoothStateTracker();
private static final StateTracker sGpsState = new GpsStateTracker();
private static final StateTracker sSyncState = new SyncStateTracker();
+ private static SettingsObserver sSettingsObserver;
/**
* The state machine for a setting's toggling, tracking reality
@@ -533,8 +536,7 @@
@Override
public int getActualState(Context context) {
- boolean on = getBackgroundDataState(context) &&
- ContentResolver.getMasterSyncAutomatically();
+ boolean on = ContentResolver.getMasterSyncAutomatically();
return on ? STATE_ENABLED : STATE_DISABLED;
}
@@ -547,7 +549,6 @@
public void requestStateChange(final Context context, final boolean desiredState) {
final ConnectivityManager connManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- final boolean backgroundData = getBackgroundDataState(context);
final boolean sync = ContentResolver.getMasterSyncAutomatically();
new AsyncTask<Void, Void, Boolean>() {
@@ -555,9 +556,6 @@
protected Boolean doInBackground(Void... args) {
// Turning sync on.
if (desiredState) {
- if (!backgroundData) {
- connManager.setBackgroundDataSetting(true);
- }
if (!sync) {
ContentResolver.setMasterSyncAutomatically(true);
}
@@ -600,6 +598,11 @@
new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
+ if (sSettingsObserver == null) {
+ sSettingsObserver = new SettingsObserver(new Handler(),
+ context.getApplicationContext());
+ sSettingsObserver.startObserving();
+ }
}
@Override
@@ -610,6 +613,10 @@
new ComponentName("com.android.settings", ".widget.SettingsAppWidgetProvider"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
+ if (sSettingsObserver != null) {
+ sSettingsObserver.stopObserving();
+ sSettingsObserver = null;
+ }
}
/**
@@ -740,18 +747,6 @@
}
/**
- * 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.
*
* @param context
@@ -849,4 +844,34 @@
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);
+ }
+ }
+
}