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:
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user