Loading cmds/settings/src/com/android/commands/settings/SettingsCmd.java +32 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.ActivityManagerNative; import android.app.IActivityManager; import android.app.IActivityManager.ContentProviderHolder; import android.content.IContentProvider; import android.net.Uri; import android.os.Binder; import android.os.Bundle; import android.os.IBinder; Loading @@ -33,7 +34,8 @@ public final class SettingsCmd { enum CommandVerb { UNSPECIFIED, GET, PUT PUT, DELETE } static String[] mArgs; Loading Loading @@ -74,6 +76,8 @@ public final class SettingsCmd { mVerb = CommandVerb.GET; } else if ("put".equalsIgnoreCase(arg)) { mVerb = CommandVerb.PUT; } else if ("delete".equalsIgnoreCase(arg)) { mVerb = CommandVerb.DELETE; } else { // invalid System.err.println("Invalid command: " + arg); Loading @@ -87,7 +91,7 @@ public final class SettingsCmd { break; // invalid } mTable = arg.toLowerCase(); } else if (mVerb == CommandVerb.GET) { } else if (mVerb == CommandVerb.GET || mVerb == CommandVerb.DELETE) { mKey = arg; if (mNextArg >= mArgs.length) { valid = true; Loading Loading @@ -136,6 +140,10 @@ public final class SettingsCmd { case PUT: putForUser(provider, mUser, mTable, mKey, mValue); break; case DELETE: System.out.println("Deleted " + deleteForUser(provider, mUser, mTable, mKey) + " rows"); break; default: System.err.println("Unspecified command"); break; Loading Loading @@ -211,9 +219,31 @@ public final class SettingsCmd { } } int deleteForUser(IContentProvider provider, int userHandle, final String table, final String key) { Uri targetUri; if ("system".equals(table)) targetUri = Settings.System.getUriFor(key); else if ("secure".equals(table)) targetUri = Settings.Secure.getUriFor(key); else if ("global".equals(table)) targetUri = Settings.Global.getUriFor(key); else { System.err.println("Invalid table; no delete performed"); throw new IllegalArgumentException("Invalid table " + table); } int num = 0; try { num = provider.delete(null, targetUri, null, null); } catch (RemoteException e) { System.err.println("Can't clear key " + key + " in " + table + " for user " + userHandle); } return num; } private static void printUsage() { System.err.println("usage: settings [--user NUM] get namespace key"); System.err.println(" settings [--user NUM] put namespace key value"); System.err.println(" settings [--user NUM] delete namespace key"); System.err.println("\n'namespace' is one of {system, secure, global}, case-insensitive"); System.err.println("If '--user NUM' is not given, the operations are performed on the owner user."); } Loading core/java/android/provider/Settings.java +1 −0 Original line number Diff line number Diff line Loading @@ -6029,6 +6029,7 @@ public final class Settings { /** * Battery level [1-99] at which low power mode automatically turns on. * If 0, it will not automatically turn on. * @hide */ public static final String LOW_POWER_MODE_TRIGGER_LEVEL = "low_power_trigger_level"; Loading core/res/res/values/config.xml +4 −3 Original line number Diff line number Diff line Loading @@ -595,10 +595,11 @@ <integer name="config_shutdownBatteryTemperature">680</integer> <!-- Display low battery warning when battery level dips to this value --> <integer name="config_lowBatteryWarningLevel">20</integer> <integer name="config_lowBatteryWarningLevel">15</integer> <!-- Close low battery warning when battery level reaches this value --> <integer name="config_lowBatteryCloseWarningLevel">25</integer> <!-- Close low battery warning when battery level reaches the lowBatteryWarningLevel plus this --> <integer name="config_lowBatteryCloseWarningBump">5</integer> <!-- Default color for notification LED. --> <color name="config_defaultNotificationColor">#ffffffff</color> Loading core/res/res/values/symbols.xml +1 −1 Original line number Diff line number Diff line Loading @@ -1509,7 +1509,7 @@ <java-symbol type="integer" name="config_defaultNotificationLedOn" /> <java-symbol type="integer" name="config_deskDockKeepsScreenOn" /> <java-symbol type="integer" name="config_lightSensorWarmupTime" /> <java-symbol type="integer" name="config_lowBatteryCloseWarningLevel" /> <java-symbol type="integer" name="config_lowBatteryCloseWarningBump" /> <java-symbol type="integer" name="config_lowBatteryWarningLevel" /> <java-symbol type="integer" name="config_networkPolicyDefaultWarning" /> <java-symbol type="integer" name="config_networkTransitionTimeout" /> Loading packages/SystemUI/src/com/android/systemui/power/PowerUI.java +39 −8 Original line number Diff line number Diff line Loading @@ -17,13 +17,16 @@ package com.android.systemui.power; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; import android.os.BatteryManager; import android.os.Handler; import android.os.PowerManager; import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; import android.util.Slog; Loading Loading @@ -54,17 +57,22 @@ public class PowerUI extends SystemUI { public void start() { mLowBatteryAlertCloseLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryCloseWarningLevel); mLowBatteryReminderLevels[0] = mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryWarningLevel); mLowBatteryReminderLevels[1] = mContext.getResources().getInteger( com.android.internal.R.integer.config_criticalBatteryWarningLevel); final PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); mScreenOffTime = pm.isScreenOn() ? -1 : SystemClock.elapsedRealtime(); mWarnings = new PowerDialogWarnings(mContext); ContentObserver obs = new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { updateBatteryWarningLevels(); } }; final ContentResolver resolver = mContext.getContentResolver(); resolver.registerContentObserver(Settings.Global.getUriFor( Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL), false, obs, UserHandle.USER_ALL); updateBatteryWarningLevels(); // Register for Intent broadcasts for... IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); Loading @@ -73,6 +81,29 @@ public class PowerUI extends SystemUI { mContext.registerReceiver(mIntentReceiver, filter, null, mHandler); } void updateBatteryWarningLevels() { int critLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_criticalBatteryWarningLevel); final ContentResolver resolver = mContext.getContentResolver(); int defWarnLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryWarningLevel); int warnLevel = Settings.Global.getInt(resolver, Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, defWarnLevel); if (warnLevel == 0) { warnLevel = defWarnLevel; } if (warnLevel < critLevel) { warnLevel = critLevel; } mLowBatteryReminderLevels[0] = warnLevel; mLowBatteryReminderLevels[1] = critLevel; mLowBatteryAlertCloseLevel = mLowBatteryReminderLevels[0] + mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryCloseWarningBump); } /** * Buckets the battery level. * Loading @@ -87,7 +118,7 @@ public class PowerUI extends SystemUI { if (level >= mLowBatteryAlertCloseLevel) { return 1; } if (level >= mLowBatteryReminderLevels[0]) { if (level > mLowBatteryReminderLevels[0]) { return 0; } final int N = mLowBatteryReminderLevels.length; Loading Loading
cmds/settings/src/com/android/commands/settings/SettingsCmd.java +32 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.ActivityManagerNative; import android.app.IActivityManager; import android.app.IActivityManager.ContentProviderHolder; import android.content.IContentProvider; import android.net.Uri; import android.os.Binder; import android.os.Bundle; import android.os.IBinder; Loading @@ -33,7 +34,8 @@ public final class SettingsCmd { enum CommandVerb { UNSPECIFIED, GET, PUT PUT, DELETE } static String[] mArgs; Loading Loading @@ -74,6 +76,8 @@ public final class SettingsCmd { mVerb = CommandVerb.GET; } else if ("put".equalsIgnoreCase(arg)) { mVerb = CommandVerb.PUT; } else if ("delete".equalsIgnoreCase(arg)) { mVerb = CommandVerb.DELETE; } else { // invalid System.err.println("Invalid command: " + arg); Loading @@ -87,7 +91,7 @@ public final class SettingsCmd { break; // invalid } mTable = arg.toLowerCase(); } else if (mVerb == CommandVerb.GET) { } else if (mVerb == CommandVerb.GET || mVerb == CommandVerb.DELETE) { mKey = arg; if (mNextArg >= mArgs.length) { valid = true; Loading Loading @@ -136,6 +140,10 @@ public final class SettingsCmd { case PUT: putForUser(provider, mUser, mTable, mKey, mValue); break; case DELETE: System.out.println("Deleted " + deleteForUser(provider, mUser, mTable, mKey) + " rows"); break; default: System.err.println("Unspecified command"); break; Loading Loading @@ -211,9 +219,31 @@ public final class SettingsCmd { } } int deleteForUser(IContentProvider provider, int userHandle, final String table, final String key) { Uri targetUri; if ("system".equals(table)) targetUri = Settings.System.getUriFor(key); else if ("secure".equals(table)) targetUri = Settings.Secure.getUriFor(key); else if ("global".equals(table)) targetUri = Settings.Global.getUriFor(key); else { System.err.println("Invalid table; no delete performed"); throw new IllegalArgumentException("Invalid table " + table); } int num = 0; try { num = provider.delete(null, targetUri, null, null); } catch (RemoteException e) { System.err.println("Can't clear key " + key + " in " + table + " for user " + userHandle); } return num; } private static void printUsage() { System.err.println("usage: settings [--user NUM] get namespace key"); System.err.println(" settings [--user NUM] put namespace key value"); System.err.println(" settings [--user NUM] delete namespace key"); System.err.println("\n'namespace' is one of {system, secure, global}, case-insensitive"); System.err.println("If '--user NUM' is not given, the operations are performed on the owner user."); } Loading
core/java/android/provider/Settings.java +1 −0 Original line number Diff line number Diff line Loading @@ -6029,6 +6029,7 @@ public final class Settings { /** * Battery level [1-99] at which low power mode automatically turns on. * If 0, it will not automatically turn on. * @hide */ public static final String LOW_POWER_MODE_TRIGGER_LEVEL = "low_power_trigger_level"; Loading
core/res/res/values/config.xml +4 −3 Original line number Diff line number Diff line Loading @@ -595,10 +595,11 @@ <integer name="config_shutdownBatteryTemperature">680</integer> <!-- Display low battery warning when battery level dips to this value --> <integer name="config_lowBatteryWarningLevel">20</integer> <integer name="config_lowBatteryWarningLevel">15</integer> <!-- Close low battery warning when battery level reaches this value --> <integer name="config_lowBatteryCloseWarningLevel">25</integer> <!-- Close low battery warning when battery level reaches the lowBatteryWarningLevel plus this --> <integer name="config_lowBatteryCloseWarningBump">5</integer> <!-- Default color for notification LED. --> <color name="config_defaultNotificationColor">#ffffffff</color> Loading
core/res/res/values/symbols.xml +1 −1 Original line number Diff line number Diff line Loading @@ -1509,7 +1509,7 @@ <java-symbol type="integer" name="config_defaultNotificationLedOn" /> <java-symbol type="integer" name="config_deskDockKeepsScreenOn" /> <java-symbol type="integer" name="config_lightSensorWarmupTime" /> <java-symbol type="integer" name="config_lowBatteryCloseWarningLevel" /> <java-symbol type="integer" name="config_lowBatteryCloseWarningBump" /> <java-symbol type="integer" name="config_lowBatteryWarningLevel" /> <java-symbol type="integer" name="config_networkPolicyDefaultWarning" /> <java-symbol type="integer" name="config_networkTransitionTimeout" /> Loading
packages/SystemUI/src/com/android/systemui/power/PowerUI.java +39 −8 Original line number Diff line number Diff line Loading @@ -17,13 +17,16 @@ package com.android.systemui.power; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.database.ContentObserver; import android.os.BatteryManager; import android.os.Handler; import android.os.PowerManager; import android.os.SystemClock; import android.os.UserHandle; import android.provider.Settings; import android.util.Slog; Loading Loading @@ -54,17 +57,22 @@ public class PowerUI extends SystemUI { public void start() { mLowBatteryAlertCloseLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryCloseWarningLevel); mLowBatteryReminderLevels[0] = mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryWarningLevel); mLowBatteryReminderLevels[1] = mContext.getResources().getInteger( com.android.internal.R.integer.config_criticalBatteryWarningLevel); final PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); mScreenOffTime = pm.isScreenOn() ? -1 : SystemClock.elapsedRealtime(); mWarnings = new PowerDialogWarnings(mContext); ContentObserver obs = new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { updateBatteryWarningLevels(); } }; final ContentResolver resolver = mContext.getContentResolver(); resolver.registerContentObserver(Settings.Global.getUriFor( Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL), false, obs, UserHandle.USER_ALL); updateBatteryWarningLevels(); // Register for Intent broadcasts for... IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); Loading @@ -73,6 +81,29 @@ public class PowerUI extends SystemUI { mContext.registerReceiver(mIntentReceiver, filter, null, mHandler); } void updateBatteryWarningLevels() { int critLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_criticalBatteryWarningLevel); final ContentResolver resolver = mContext.getContentResolver(); int defWarnLevel = mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryWarningLevel); int warnLevel = Settings.Global.getInt(resolver, Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, defWarnLevel); if (warnLevel == 0) { warnLevel = defWarnLevel; } if (warnLevel < critLevel) { warnLevel = critLevel; } mLowBatteryReminderLevels[0] = warnLevel; mLowBatteryReminderLevels[1] = critLevel; mLowBatteryAlertCloseLevel = mLowBatteryReminderLevels[0] + mContext.getResources().getInteger( com.android.internal.R.integer.config_lowBatteryCloseWarningBump); } /** * Buckets the battery level. * Loading @@ -87,7 +118,7 @@ public class PowerUI extends SystemUI { if (level >= mLowBatteryAlertCloseLevel) { return 1; } if (level >= mLowBatteryReminderLevels[0]) { if (level > mLowBatteryReminderLevels[0]) { return 0; } final int N = mLowBatteryReminderLevels.length; Loading