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

Commit 1e3212eb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Battery saver preliminary changes for P."

parents 54e6fcde aae89531
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -526,7 +526,11 @@ public final class PowerManager {
            ServiceType.SCREEN_BRIGHTNESS,
            ServiceType.SOUND,
            ServiceType.BATTERY_STATS,
            ServiceType.DATA_SAVER})
            ServiceType.DATA_SAVER,
            ServiceType.FORCE_ALL_APPS_STANDBY_JOBS,
            ServiceType.FORCE_ALL_APPS_STANDBY_ALARMS,
            ServiceType.OPTIONAL_SENSORS,
    })
    public @interface ServiceType {
        int NULL = 0;
        int GPS = 1;
@@ -539,6 +543,21 @@ public final class PowerManager {
        int SOUND = 8;
        int BATTERY_STATS = 9;
        int DATA_SAVER = 10;

        /**
         * Whether the job scheduler should force app standby on all apps on battery saver or not.
         */
        int FORCE_ALL_APPS_STANDBY_JOBS = 11;

        /**
         * Whether the alarm manager should force app standby on all apps on battery saver or not.
         */
        int FORCE_ALL_APPS_STANDBY_ALARMS = 12;

        /**
         * Whether to disable non-essential sensors. (e.g. edge sensors.)
         */
        int OPTIONAL_SENSORS = 13;
    }

    final Context mContext;
+19 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package android.os;

import android.view.Display;

import java.util.function.Consumer;

/**
 * Power manager local system service interface.
 *
@@ -125,6 +127,23 @@ public abstract class PowerManagerInternal {

    public abstract void registerLowPowerModeObserver(LowPowerModeListener listener);

    /**
     * Same as {@link #registerLowPowerModeObserver} but can take a lambda.
     */
    public void registerLowPowerModeObserver(int serviceType, Consumer<PowerSaveState> listener) {
        registerLowPowerModeObserver(new LowPowerModeListener() {
            @Override
            public int getServiceType() {
                return serviceType;
            }

            @Override
            public void onLowPowerModeChanged(PowerSaveState state) {
                listener.accept(state);
            }
        });
    }

    public interface LowPowerModeListener {
        int getServiceType();
        void onLowPowerModeChanged(PowerSaveState state);
+3 −0
Original line number Diff line number Diff line
@@ -4744,4 +4744,7 @@
    A toast message shown when an app shortcut that wasn't restored due to an unknown issue is clicked,
    -->
    <string name="shortcut_restore_unknown_issue">Couldn\u2019t restore shortcut</string>

    <!--Battery saver warning. STOPSHIP: Remove it eventually. -->
    <string name="battery_saver_warning" translatable="false">Battery saver activated.\n\nSee go/extreme-battery-saver.\n\nThis contains aggressive experimental changes for P and may affect background app behavior.\n</string>
</resources>
+1 −0
Original line number Diff line number Diff line
@@ -3144,6 +3144,7 @@
  <java-symbol type="string" name="shortcut_restore_not_supported" />
  <java-symbol type="string" name="shortcut_restore_signature_mismatch" />
  <java-symbol type="string" name="shortcut_restore_unknown_issue" />
  <java-symbol type="string" name="battery_saver_warning" />

  <!-- From media projection -->
  <java-symbol type="string" name="config_mediaProjectionPermissionDialogComponent" />
+35 −2
Original line number Diff line number Diff line
@@ -56,6 +56,9 @@ public class BatterySaverPolicy extends ContentObserver {
    private static final String KEY_ADJUST_BRIGHTNESS_FACTOR = "adjust_brightness_factor";
    private static final String KEY_FULLBACKUP_DEFERRED = "fullbackup_deferred";
    private static final String KEY_KEYVALUE_DEFERRED = "keyvaluebackup_deferred";
    private static final String KEY_FORCE_ALL_APPS_STANDBY_JOBS = "force_all_apps_standby_jobs";
    private static final String KEY_FORCE_ALL_APPS_STANDBY_ALARMS = "force_all_apps_standby_alarms";
    private static final String KEY_OPTIONAL_SENSORS_DISABLED = "optional_sensors_disabled";

    private final KeyValueListParser mParser = new KeyValueListParser(',');

@@ -141,6 +144,21 @@ public class BatterySaverPolicy extends ContentObserver {
     */
    private float mAdjustBrightnessFactor;

    /**
     * Whether to put all apps in the stand-by mode or not for job scheduler.
     */
    private boolean mForceAllAppsStandbyJobs;

    /**
     * Whether to put all apps in the stand-by mode or not for alarms.
     */
    private boolean mForceAllAppsStandbyAlarms;

    /**
     * Weather to show non-essential sensors (e.g. edge sensors) or not.
     */
    private boolean mOptionalSensorsDisabled;

    private ContentResolver mContentResolver;

    public BatterySaverPolicy(Handler handler) {
@@ -180,10 +198,14 @@ public class BatterySaverPolicy extends ContentObserver {
            mAdjustBrightnessDisabled = mParser.getBoolean(KEY_ADJUST_BRIGHTNESS_DISABLED, false);
            mAdjustBrightnessFactor = mParser.getFloat(KEY_ADJUST_BRIGHTNESS_FACTOR, 0.5f);
            mDataSaverDisabled = mParser.getBoolean(KEY_DATASAVER_DISABLED, true);
            mForceAllAppsStandbyJobs = mParser.getBoolean(KEY_FORCE_ALL_APPS_STANDBY_JOBS, true);
            mForceAllAppsStandbyAlarms =
                    mParser.getBoolean(KEY_FORCE_ALL_APPS_STANDBY_ALARMS, true);
            mOptionalSensorsDisabled = mParser.getBoolean(KEY_OPTIONAL_SENSORS_DISABLED, true);

            // Get default value from Settings.Secure
            final int defaultGpsMode = Settings.Secure.getInt(mContentResolver, SECURE_KEY_GPS_MODE,
                    GPS_MODE_DISABLED_WHEN_SCREEN_OFF);
                    GPS_MODE_NO_CHANGE);
            mGpsMode = mParser.getInt(KEY_GPS_MODE, defaultGpsMode);
        }
    }
@@ -235,6 +257,15 @@ public class BatterySaverPolicy extends ContentObserver {
                case ServiceType.VIBRATION:
                    return builder.setBatterySaverEnabled(mVibrationDisabled)
                            .build();
                case ServiceType.FORCE_ALL_APPS_STANDBY_JOBS:
                    return builder.setBatterySaverEnabled(mForceAllAppsStandbyJobs)
                            .build();
                case ServiceType.FORCE_ALL_APPS_STANDBY_ALARMS:
                    return builder.setBatterySaverEnabled(mForceAllAppsStandbyAlarms)
                            .build();
                case ServiceType.OPTIONAL_SENSORS:
                    return builder.setBatterySaverEnabled(mOptionalSensorsDisabled)
                            .build();
                default:
                    return builder.setBatterySaverEnabled(realMode)
                            .build();
@@ -259,6 +290,8 @@ public class BatterySaverPolicy extends ContentObserver {
        pw.println("  " + KEY_ADJUST_BRIGHTNESS_DISABLED + "=" + mAdjustBrightnessDisabled);
        pw.println("  " + KEY_ADJUST_BRIGHTNESS_FACTOR + "=" + mAdjustBrightnessFactor);
        pw.println("  " + KEY_GPS_MODE + "=" + mGpsMode);

        pw.println("  " + KEY_FORCE_ALL_APPS_STANDBY_JOBS + "=" + mForceAllAppsStandbyJobs);
        pw.println("  " + KEY_FORCE_ALL_APPS_STANDBY_ALARMS + "=" + mForceAllAppsStandbyAlarms);
        pw.println("  " + KEY_OPTIONAL_SENSORS_DISABLED + "=" + mOptionalSensorsDisabled);
    }
}
Loading