summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author AleX Pelosi <apelosi@google.com> 2023-02-17 00:55:12 +0000
committer Jack Wu <wjack@google.com> 2023-02-23 01:25:41 +0000
commitf25f8106ae2683ee7a186199f8002b842a236014 (patch)
tree9792c4296a02a5cca3bc77b2186337543560094e
parent5c264266cc3f024c5889e55e0c5a79ebcda9bdf3 (diff)
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: AleX Pelosi <apelosi@google.com>
-rw-r--r--core/api/current.txt1
-rw-r--r--core/api/system-current.txt1
-rw-r--r--core/java/android/os/BatteryManager.java21
-rw-r--r--services/core/java/com/android/server/BatteryService.java6
-rw-r--r--services/core/java/com/android/server/health/HealthServiceWrapperAidl.java4
5 files changed, 20 insertions, 13 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index 3508e235dd55..7d88149abb28 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -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";
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 98a4e86530c0..909a3dca3829 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -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
diff --git a/core/java/android/os/BatteryManager.java b/core/java/android/os/BatteryManager.java
index bd569b2f4f2f..6bc0f6ea947c 100644
--- a/core/java/android/os/BatteryManager.java
+++ b/core/java/android/os/BatteryManager.java
@@ -154,13 +154,6 @@ public class BatteryManager {
/**
* 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.
*/
public static final String EXTRA_CHARGING_STATUS = "android.os.extra.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;
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
index e71dcaea7c8d..7634c58fd74d 100644
--- a/services/core/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -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;
diff --git a/services/core/java/com/android/server/health/HealthServiceWrapperAidl.java b/services/core/java/com/android/server/health/HealthServiceWrapperAidl.java
index c7ca6acc8680..1153cc37e3da 100644
--- a/services/core/java/com/android/server/health/HealthServiceWrapperAidl.java
+++ b/services/core/java/com/android/server/health/HealthServiceWrapperAidl.java
@@ -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.