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

Commit f3b99fa7 authored by Kweku Adams's avatar Kweku Adams
Browse files

Add battery discharge prediction APIs.

This CL adds an API to enable an external app to provide the system with
an estimate of how much time is remaining until the battery reaches 0%.
This information will be used in Settings and SysUI to display the
estimated time until the device is fully discharged.

Bug: 139413884
Test: atest android.os.cts.PowerManagerTest
Test: atest android.permission.cts.PowerManagerServicePermissionTest
Test: atest CtsPermission2TestCases
Test: atest SettingsProviderTest
Change-Id: I7073c521e392e9616111e5e80b92a11285ac6c91
parent de010ce1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -36733,9 +36733,11 @@ package android.os {
  public final class PowerManager {
    method public void addThermalStatusListener(@NonNull android.os.PowerManager.OnThermalStatusChangedListener);
    method public void addThermalStatusListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.PowerManager.OnThermalStatusChangedListener);
    method @Nullable public java.time.Duration getBatteryDischargePrediction();
    method public int getCurrentThermalStatus();
    method public int getLocationPowerSaveMode();
    method public float getThermalHeadroom(@IntRange(from=0, to=60) int);
    method public boolean isBatteryDischargePredictionPersonalized();
    method public boolean isDeviceIdleMode();
    method public boolean isIgnoringBatteryOptimizations(String);
    method public boolean isInteractive();
+1 −0
Original line number Diff line number Diff line
@@ -8394,6 +8394,7 @@ package android.os {
    method @RequiresPermission(android.Manifest.permission.READ_DREAM_STATE) public boolean isAmbientDisplaySuppressedForToken(@NonNull String);
    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setAdaptivePowerSaveEnabled(boolean);
    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setAdaptivePowerSavePolicy(@NonNull android.os.BatterySaverPolicyConfig);
    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void setBatteryDischargePrediction(@NonNull java.time.Duration, boolean);
    method @RequiresPermission(android.Manifest.permission.POWER_SAVER) public boolean setDynamicPowerSaveHint(boolean, int);
    method @RequiresPermission(anyOf={android.Manifest.permission.DEVICE_POWER, android.Manifest.permission.POWER_SAVER}) public boolean setPowerSaveModeEnabled(boolean);
    method @RequiresPermission(android.Manifest.permission.WRITE_DREAM_STATE) public void suppressAmbientDisplay(@NonNull String, boolean);
+2 −0
Original line number Diff line number Diff line
@@ -2799,8 +2799,10 @@ package android.os {

  public final class PowerManager {
    method @RequiresPermission("android.permission.POWER_SAVER") public int getPowerSaveModeTrigger();
    method @RequiresPermission("android.permission.DEVICE_POWER") public void setBatteryDischargePrediction(@NonNull java.time.Duration, boolean);
    method @RequiresPermission("android.permission.POWER_SAVER") public boolean setDynamicPowerSaveHint(boolean, int);
    method @RequiresPermission(anyOf={"android.permission.DEVICE_POWER", "android.permission.POWER_SAVER"}) public boolean setPowerSaveModeEnabled(boolean);
    field public static final String ACTION_ENHANCED_DISCHARGE_PREDICTION_CHANGED = "android.os.action.ENHANCED_DISCHARGE_PREDICTION_CHANGED";
    field public static final int POWER_SAVE_MODE_TRIGGER_DYNAMIC = 1; // 0x1
    field public static final int POWER_SAVE_MODE_TRIGGER_PERCENTAGE = 0; // 0x0
  }
+1 −1
Original line number Diff line number Diff line
@@ -2954,7 +2954,7 @@ public abstract class BatteryStats implements Parcelable {
     * enough current data to make a decision, or the battery is currently
     * charging.
     *
     * @param curTime The current elepsed realtime in microseconds.
     * @param curTime The current elapsed realtime in microseconds.
     */
    @UnsupportedAppUsage
    public abstract long computeBatteryTimeRemaining(long curTime);
+4 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
package android.os;

import android.os.BatterySaverPolicyConfig;
import android.os.ParcelDuration;
import android.os.PowerSaveState;
import android.os.WorkSource;

@@ -58,6 +59,9 @@ interface IPowerManager
    boolean setAdaptivePowerSavePolicy(in BatterySaverPolicyConfig config);
    boolean setAdaptivePowerSaveEnabled(boolean enabled);
    int getPowerSaveModeTrigger();
    void setBatteryDischargePrediction(in ParcelDuration timeRemaining, boolean isCustomized);
    ParcelDuration getBatteryDischargePrediction();
    boolean isBatteryDischargePredictionPersonalized();
    boolean isDeviceIdleMode();
    boolean isLightDeviceIdleMode();

Loading