summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jay Wang <jaycwang@google.com> 2025-04-15 07:04:10 +0000
committer Android Build Coastguard Worker <android-build-coastguard-worker@google.com> 2025-04-23 13:37:22 -0700
commitbc763c54a78afbc153af19762a6bd1bf5ec62844 (patch)
tree97576305ee10ebfaed5f296db5b3d493479961c2
parent94612df606a2778d1050dbc3850201919cbe64b2 (diff)
Change charging string in keyguard
Charging speed won't be meaningful when the battery is in a bad state, so only provide the general charging info in this case. Bug: 406894719 Flag: EXEMPT bugfix Test: local test (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:906118b6e60ba4e152ae8884ec44ec48d3187f0d) Merged-In: I48f4121bf0cac84cce54cfa32f7ec5b14c0a9a90 Change-Id: I48f4121bf0cac84cce54cfa32f7ec5b14c0a9a90
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java15
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java9
2 files changed, 23 insertions, 1 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java
index f659e38f633c..192bad137b0f 100644
--- a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java
+++ b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java
@@ -16,11 +16,14 @@
package com.android.settingslib.fuelgauge;
+import static android.os.BatteryManager.BATTERY_HEALTH_DEAD;
+import static android.os.BatteryManager.BATTERY_HEALTH_UNKNOWN;
import static android.os.BatteryManager.BATTERY_STATUS_FULL;
import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
import static android.os.BatteryManager.CHARGING_POLICY_ADAPTIVE_LONGLIFE;
import static android.os.BatteryManager.CHARGING_POLICY_DEFAULT;
import static android.os.BatteryManager.EXTRA_CHARGING_STATUS;
+import static android.os.BatteryManager.EXTRA_HEALTH;
import static android.os.BatteryManager.EXTRA_MAX_CHARGING_CURRENT;
import static android.os.BatteryManager.EXTRA_MAX_CHARGING_VOLTAGE;
import static android.os.BatteryManager.EXTRA_PLUGGED;
@@ -55,6 +58,7 @@ public class BatteryStatus {
public final int status;
public final int level;
public final int plugged;
+ public final int health;
public final int chargingStatus;
public final int maxChargingWattage;
public final boolean present;
@@ -75,6 +79,7 @@ public class BatteryStatus {
this.maxChargingWattage = maxChargingWattage;
this.present = present;
this.incompatibleCharger = Optional.empty();
+ this.health = BATTERY_HEALTH_UNKNOWN;
}
@@ -90,6 +95,7 @@ public class BatteryStatus {
status = batteryChangedIntent.getIntExtra(EXTRA_STATUS, BATTERY_STATUS_UNKNOWN);
plugged = batteryChangedIntent.getIntExtra(EXTRA_PLUGGED, 0);
level = getBatteryLevel(batteryChangedIntent);
+ health = batteryChangedIntent.getIntExtra(EXTRA_HEALTH, BATTERY_HEALTH_UNKNOWN);
chargingStatus = batteryChangedIntent.getIntExtra(EXTRA_CHARGING_STATUS,
CHARGING_POLICY_DEFAULT);
present = batteryChangedIntent.getBooleanExtra(EXTRA_PRESENT, true);
@@ -140,6 +146,15 @@ public class BatteryStatus {
return isBatteryDefender(chargingStatus);
}
+ /**
+ * Whether battery is dead.
+ *
+ * @return true if battery is dead
+ */
+ public boolean isDead() {
+ return health == BATTERY_HEALTH_DEAD;
+ }
+
/** Return current charging speed is fast, slow or normal. */
public final int getChargingSpeed(Context context) {
final int slowThreshold = context.getResources().getInteger(
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index e66b21866902..87d587c81e4f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -217,6 +217,7 @@ public class KeyguardIndicationController {
private boolean mBatteryDefender;
/** Whether the battery defender is triggered with the device plugged. */
private boolean mEnableBatteryDefender;
+ private boolean mBatteryDead;
private boolean mIncompatibleCharger;
private int mChargingWattage;
private int mBatteryLevel = -1;
@@ -1133,6 +1134,12 @@ public class KeyguardIndicationController {
if (mPowerCharged) {
return mContext.getResources().getString(R.string.keyguard_charged);
}
+
+ String percentage = NumberFormat.getPercentInstance().format(mBatteryLevel / 100f);
+ if (mBatteryDead) {
+ return mContext.getResources().getString(R.string.keyguard_plugged_in, percentage);
+ }
+
final boolean hasChargingTime = mChargingTimeRemaining > 0;
int chargingId;
if (mPowerPluggedInWired) {
@@ -1167,7 +1174,6 @@ public class KeyguardIndicationController {
: R.string.keyguard_plugged_in;
}
- String percentage = NumberFormat.getPercentInstance().format(mBatteryLevel / 100f);
if (hasChargingTime) {
String chargingTimeFormatted = Formatter.formatShortElapsedTimeRoundingUpToMinutes(
mContext, mChargingTimeRemaining);
@@ -1327,6 +1333,7 @@ public class KeyguardIndicationController {
mBatteryLevel = status.level;
mBatteryPresent = status.present;
mBatteryDefender = isBatteryDefender(status);
+ mBatteryDead = status.isDead();
// when the battery is overheated, device doesn't charge so only guard on pluggedIn:
mEnableBatteryDefender = mBatteryDefender && status.isPluggedIn();
mIncompatibleCharger = status.incompatibleCharger.orElse(false);