Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 439688cf authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Git Automerger
Browse files

am 6d758619: Merge "Implement control of auto power save mode." into lmp-preview-dev

* commit '6d758619d90a0dda7f1136dcd44d0ac02cdada7e':
  Implement control of auto power save mode.
parents 104e1453 6de05781
Loading
Loading
Loading
Loading
+32 −2
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.ActivityManagerNative;
import android.app.IActivityManager;
import android.app.IActivityManager;
import android.app.IActivityManager.ContentProviderHolder;
import android.app.IActivityManager.ContentProviderHolder;
import android.content.IContentProvider;
import android.content.IContentProvider;
import android.net.Uri;
import android.os.Binder;
import android.os.Binder;
import android.os.Bundle;
import android.os.Bundle;
import android.os.IBinder;
import android.os.IBinder;
@@ -33,7 +34,8 @@ public final class SettingsCmd {
    enum CommandVerb {
    enum CommandVerb {
        UNSPECIFIED,
        UNSPECIFIED,
        GET,
        GET,
        PUT
        PUT,
        DELETE
    }
    }


    static String[] mArgs;
    static String[] mArgs;
@@ -74,6 +76,8 @@ public final class SettingsCmd {
                        mVerb = CommandVerb.GET;
                        mVerb = CommandVerb.GET;
                    } else if ("put".equalsIgnoreCase(arg)) {
                    } else if ("put".equalsIgnoreCase(arg)) {
                        mVerb = CommandVerb.PUT;
                        mVerb = CommandVerb.PUT;
                    } else if ("delete".equalsIgnoreCase(arg)) {
                        mVerb = CommandVerb.DELETE;
                    } else {
                    } else {
                        // invalid
                        // invalid
                        System.err.println("Invalid command: " + arg);
                        System.err.println("Invalid command: " + arg);
@@ -87,7 +91,7 @@ public final class SettingsCmd {
                        break;  // invalid
                        break;  // invalid
                    }
                    }
                    mTable = arg.toLowerCase();
                    mTable = arg.toLowerCase();
                } else if (mVerb == CommandVerb.GET) {
                } else if (mVerb == CommandVerb.GET || mVerb == CommandVerb.DELETE) {
                    mKey = arg;
                    mKey = arg;
                    if (mNextArg >= mArgs.length) {
                    if (mNextArg >= mArgs.length) {
                        valid = true;
                        valid = true;
@@ -136,6 +140,10 @@ public final class SettingsCmd {
                        case PUT:
                        case PUT:
                            putForUser(provider, mUser, mTable, mKey, mValue);
                            putForUser(provider, mUser, mTable, mKey, mValue);
                            break;
                            break;
                        case DELETE:
                            System.out.println("Deleted "
                                    + deleteForUser(provider, mUser, mTable, mKey) + " rows");
                            break;
                        default:
                        default:
                            System.err.println("Unspecified command");
                            System.err.println("Unspecified command");
                            break;
                            break;
@@ -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() {
    private static void printUsage() {
        System.err.println("usage:  settings [--user NUM] get namespace key");
        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] 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("\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.");
        System.err.println("If '--user NUM' is not given, the operations are performed on the owner user.");
    }
    }
+1 −0
Original line number Original line Diff line number Diff line
@@ -6035,6 +6035,7 @@ public final class Settings {


        /**
        /**
         * Battery level [1-99] at which low power mode automatically turns on.
         * Battery level [1-99] at which low power mode automatically turns on.
         * If 0, it will not automatically turn on.
         * @hide
         * @hide
         */
         */
        public static final String LOW_POWER_MODE_TRIGGER_LEVEL = "low_power_trigger_level";
        public static final String LOW_POWER_MODE_TRIGGER_LEVEL = "low_power_trigger_level";
+4 −3
Original line number Original line Diff line number Diff line
@@ -595,10 +595,11 @@
    <integer name="config_shutdownBatteryTemperature">680</integer>
    <integer name="config_shutdownBatteryTemperature">680</integer>


    <!-- Display low battery warning when battery level dips to this value -->
    <!-- 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 -->
    <!-- Close low battery warning when battery level reaches the lowBatteryWarningLevel
    <integer name="config_lowBatteryCloseWarningLevel">25</integer>
         plus this -->
    <integer name="config_lowBatteryCloseWarningBump">5</integer>


    <!-- Default color for notification LED. -->
    <!-- Default color for notification LED. -->
    <color name="config_defaultNotificationColor">#ffffffff</color>
    <color name="config_defaultNotificationColor">#ffffffff</color>
+1 −1
Original line number Original line Diff line number Diff line
@@ -1509,7 +1509,7 @@
  <java-symbol type="integer" name="config_defaultNotificationLedOn" />
  <java-symbol type="integer" name="config_defaultNotificationLedOn" />
  <java-symbol type="integer" name="config_deskDockKeepsScreenOn" />
  <java-symbol type="integer" name="config_deskDockKeepsScreenOn" />
  <java-symbol type="integer" name="config_lightSensorWarmupTime" />
  <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_lowBatteryWarningLevel" />
  <java-symbol type="integer" name="config_networkPolicyDefaultWarning" />
  <java-symbol type="integer" name="config_networkPolicyDefaultWarning" />
  <java-symbol type="integer" name="config_networkTransitionTimeout" />
  <java-symbol type="integer" name="config_networkTransitionTimeout" />
+39 −8
Original line number Original line Diff line number Diff line
@@ -17,13 +17,16 @@
package com.android.systemui.power;
package com.android.systemui.power;


import android.content.BroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentFilter;
import android.database.ContentObserver;
import android.os.BatteryManager;
import android.os.BatteryManager;
import android.os.Handler;
import android.os.Handler;
import android.os.PowerManager;
import android.os.PowerManager;
import android.os.SystemClock;
import android.os.SystemClock;
import android.os.UserHandle;
import android.provider.Settings;
import android.provider.Settings;
import android.util.Slog;
import android.util.Slog;


@@ -54,17 +57,22 @@ public class PowerUI extends SystemUI {


    public void start() {
    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);
        final PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
        mScreenOffTime = pm.isScreenOn() ? -1 : SystemClock.elapsedRealtime();
        mScreenOffTime = pm.isScreenOn() ? -1 : SystemClock.elapsedRealtime();
        mWarnings = new PowerDialogWarnings(mContext);
        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...
        // Register for Intent broadcasts for...
        IntentFilter filter = new IntentFilter();
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_BATTERY_CHANGED);
        filter.addAction(Intent.ACTION_BATTERY_CHANGED);
@@ -73,6 +81,29 @@ public class PowerUI extends SystemUI {
        mContext.registerReceiver(mIntentReceiver, filter, null, mHandler);
        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.
     * Buckets the battery level.
     *
     *
@@ -87,7 +118,7 @@ public class PowerUI extends SystemUI {
        if (level >= mLowBatteryAlertCloseLevel) {
        if (level >= mLowBatteryAlertCloseLevel) {
            return 1;
            return 1;
        }
        }
        if (level >= mLowBatteryReminderLevels[0]) {
        if (level > mLowBatteryReminderLevels[0]) {
            return 0;
            return 0;
        }
        }
        final int N = mLowBatteryReminderLevels.length;
        final int N = mLowBatteryReminderLevels.length;
Loading