Merge "Allow setting doze timeouts based on system feature" into nyc-dev am: 23c63dd

am: 248b40b

* commit '248b40bfacb702c2ab6804dfd7f95e7d2c1f8739':
  Allow setting doze timeouts based on system feature
This commit is contained in:
Joe LaPenna
2016-03-24 18:26:56 +00:00
committed by android-build-merger
2 changed files with 25 additions and 3 deletions

View File

@@ -7698,6 +7698,16 @@ public final class Settings {
*/
public static final String DEVICE_IDLE_CONSTANTS = "device_idle_constants";
/**
* Device Idle (Doze) specific settings for watches. See {@code #DEVICE_IDLE_CONSTANTS}
*
* <p>
* Type: string
* @hide
* @see com.android.server.DeviceIdleController.Constants
*/
public static final String DEVICE_IDLE_CONSTANTS_WATCH = "device_idle_constants_watch";
/**
* App standby (app idle) specific settings.
* This is encoded as a key=value list, separated by commas. Ex:

View File

@@ -684,13 +684,18 @@ public class DeviceIdleController extends SystemService
public long SMS_TEMP_APP_WHITELIST_DURATION;
private final ContentResolver mResolver;
private final boolean mHasWatch;
private final KeyValueListParser mParser = new KeyValueListParser(',');
public Constants(Handler handler, ContentResolver resolver) {
super(handler);
mResolver = resolver;
mResolver.registerContentObserver(
Settings.Global.getUriFor(Settings.Global.DEVICE_IDLE_CONSTANTS), false, this);
mHasWatch = getContext().getPackageManager().hasSystemFeature(
PackageManager.FEATURE_WATCH);
mResolver.registerContentObserver(Settings.Global.getUriFor(
mHasWatch ? Settings.Global.DEVICE_IDLE_CONSTANTS_WATCH
: Settings.Global.DEVICE_IDLE_CONSTANTS),
false, this);
updateConstants();
}
@@ -703,13 +708,20 @@ public class DeviceIdleController extends SystemService
synchronized (DeviceIdleController.this) {
try {
mParser.setString(Settings.Global.getString(mResolver,
Settings.Global.DEVICE_IDLE_CONSTANTS));
mHasWatch ? Settings.Global.DEVICE_IDLE_CONSTANTS_WATCH
: Settings.Global.DEVICE_IDLE_CONSTANTS));
} catch (IllegalArgumentException e) {
// Failed to parse the settings string, log this and move on
// with defaults.
Slog.e(TAG, "Bad device idle settings", e);
}
// For now, the default values for watches and non-watches are the same. After
// investigation, we will likely decrease KEY_INACTIVE_TIMEOUT and other keys in the
// style of:
// long inactiveTimeoutDefault = (mHasWatch ? 15 : 30) * 60 * 1000L;
// INACTIVE_TIMEOUT = mParser.getLong(KEY_INACTIVE_TIMEOUT,
// !COMPRESS_TIME ? inactiveTimeoutDefault : (inactiveTimeoutDefault / 10));
LIGHT_IDLE_TIMEOUT = mParser.getLong(KEY_LIGHT_IDLE_TIMEOUT,
!COMPRESS_TIME ? 15 * 60 * 1000L : 60 * 1000L);
LIGHT_IDLE_MAINTENANCE_MIN_BUDGET = mParser.getLong(