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

Commit f25f8106 authored by AleX Pelosi's avatar AleX Pelosi Committed by Jack Wu
Browse files

BatteryManager: stateOfHealth is a property



Read batteryStateOfHealth from HealthData with access control

Bug: 251427118
Test: m update-api ; m
Change-Id: Ida87ef9f59c32cf52b036f37c7c261d03d3b4c37
Signed-off-by: default avatarAleX Pelosi <apelosi@google.com>
parent 5c264266
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -30918,7 +30918,6 @@ package android.os {
    field public static final String EXTRA_PLUGGED = "plugged";
    field public static final String EXTRA_PRESENT = "present";
    field public static final String EXTRA_SCALE = "scale";
    field public static final String EXTRA_STATE_OF_HEALTH = "android.os.extra.STATE_OF_HEALTH";
    field public static final String EXTRA_STATUS = "status";
    field public static final String EXTRA_TECHNOLOGY = "technology";
    field public static final String EXTRA_TEMPERATURE = "temperature";
+1 −0
Original line number Diff line number Diff line
@@ -9155,6 +9155,7 @@ package android.os {
    field @RequiresPermission(android.Manifest.permission.BATTERY_STATS) public static final int BATTERY_PROPERTY_CHARGING_POLICY = 9; // 0x9
    field @RequiresPermission(android.Manifest.permission.BATTERY_STATS) public static final int BATTERY_PROPERTY_FIRST_USAGE_DATE = 8; // 0x8
    field @RequiresPermission(android.Manifest.permission.BATTERY_STATS) public static final int BATTERY_PROPERTY_MANUFACTURING_DATE = 7; // 0x7
    field @RequiresPermission(android.Manifest.permission.BATTERY_STATS) public static final int BATTERY_PROPERTY_STATE_OF_HEALTH = 10; // 0xa
    field public static final int CHARGING_POLICY_ADAPTIVE_AC = 3; // 0x3
    field public static final int CHARGING_POLICY_ADAPTIVE_AON = 2; // 0x2
    field public static final int CHARGING_POLICY_ADAPTIVE_LONGLIFE = 4; // 0x4
+14 −7
Original line number Diff line number Diff line
@@ -152,13 +152,6 @@ public class BatteryManager {
     */
    public static final String EXTRA_CYCLE_COUNT = "android.os.extra.CYCLE_COUNT";

    /**
     * Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
     * Int value representing the measured battery state of health (remaining
     * estimate full charge capacity relative to the rated capacity in %).
     */
    public static final String EXTRA_STATE_OF_HEALTH = "android.os.extra.STATE_OF_HEALTH";

    /**
     * Extra for {@link android.content.Intent#ACTION_BATTERY_CHANGED}:
     * Int value representing the battery charging status.
@@ -358,6 +351,20 @@ public class BatteryManager {
    @SystemApi
    public static final int BATTERY_PROPERTY_CHARGING_POLICY = 9;

    /**
     *
     * Percentage representing the measured battery state of health (remaining
     * estimated full charge capacity relative to the rated capacity in %).
     *
     * <p class="note">
     * The sender must hold the {@link android.Manifest.permission#BATTERY_STATS} permission.
     *
     * @hide
     */
    @RequiresPermission(permission.BATTERY_STATS)
    @SystemApi
    public static final int BATTERY_PROPERTY_STATE_OF_HEALTH = 10;

    private final Context mContext;
    private final IBatteryStats mBatteryStats;
    private final IBatteryPropertiesRegistrar mBatteryPropertiesRegistrar;
+1 −5
Original line number Diff line number Diff line
@@ -150,7 +150,6 @@ public final class BatteryService extends SystemService {
    private int mLastMaxChargingVoltage;
    private int mLastChargeCounter;
    private int mLastBatteryCycleCount;
    private int mLastBatteryStateOfHealth;
    private int mLastCharingState;

    private int mSequence = 1;
@@ -508,7 +507,6 @@ public final class BatteryService extends SystemService {
                        || mHealthInfo.batteryChargeCounterUah != mLastChargeCounter
                        || mInvalidCharger != mLastInvalidCharger
                        || mHealthInfo.batteryCycleCount != mLastBatteryCycleCount
                        || mHealthInfo.batteryStateOfHealth != mLastBatteryStateOfHealth
                        || mHealthInfo.chargingState != mLastCharingState)) {

            if (mPlugType != mLastPlugType) {
@@ -684,7 +682,6 @@ public final class BatteryService extends SystemService {
            mLastBatteryLevelCritical = mBatteryLevelCritical;
            mLastInvalidCharger = mInvalidCharger;
            mLastBatteryCycleCount = mHealthInfo.batteryCycleCount;
            mLastBatteryStateOfHealth = mHealthInfo.batteryStateOfHealth;
            mLastCharingState = mHealthInfo.chargingState;
        }
    }
@@ -718,7 +715,6 @@ public final class BatteryService extends SystemService {
                mHealthInfo.maxChargingVoltageMicrovolts);
        intent.putExtra(BatteryManager.EXTRA_CHARGE_COUNTER, mHealthInfo.batteryChargeCounterUah);
        intent.putExtra(BatteryManager.EXTRA_CYCLE_COUNT, mHealthInfo.batteryCycleCount);
        intent.putExtra(BatteryManager.EXTRA_STATE_OF_HEALTH, mHealthInfo.batteryStateOfHealth);
        intent.putExtra(BatteryManager.EXTRA_CHARGING_STATUS, mHealthInfo.chargingState);
        if (DEBUG) {
            Slog.d(TAG, "Sending ACTION_BATTERY_CHANGED. scale:" + BATTERY_SCALE
@@ -744,7 +740,6 @@ public final class BatteryService extends SystemService {
        event.putInt(BatteryManager.EXTRA_CHARGE_COUNTER, mHealthInfo.batteryChargeCounterUah);
        event.putLong(BatteryManager.EXTRA_EVENT_TIMESTAMP, now);
        event.putInt(BatteryManager.EXTRA_CYCLE_COUNT, mHealthInfo.batteryCycleCount);
        event.putInt(BatteryManager.EXTRA_STATE_OF_HEALTH, mHealthInfo.batteryStateOfHealth);
        event.putInt(BatteryManager.EXTRA_CHARGING_STATUS, mHealthInfo.chargingState);

        boolean queueWasEmpty = mBatteryLevelsEventQueue.isEmpty();
@@ -1265,6 +1260,7 @@ public final class BatteryService extends SystemService {
                case BatteryManager.BATTERY_PROPERTY_MANUFACTURING_DATE:
                case BatteryManager.BATTERY_PROPERTY_FIRST_USAGE_DATE:
                case BatteryManager.BATTERY_PROPERTY_CHARGING_POLICY:
                case BatteryManager.BATTERY_PROPERTY_STATE_OF_HEALTH:
                    mContext.enforceCallingPermission(
                            android.Manifest.permission.BATTERY_STATS, null);
                    break;
+4 −0
Original line number Diff line number Diff line
@@ -146,6 +146,10 @@ class HealthServiceWrapperAidl extends HealthServiceWrapper {
                case BatteryManager.BATTERY_PROPERTY_CHARGING_POLICY:
                    prop.setLong(service.getChargingPolicy());
                    break;
                case BatteryManager.BATTERY_PROPERTY_STATE_OF_HEALTH:
                    healthData = service.getBatteryHealthData();
                    prop.setLong(healthData.batteryStateOfHealth);
                    break;
            }
        } catch (UnsupportedOperationException e) {
            // Leave prop untouched.