diff options
author | 2025-04-15 07:04:10 +0000 | |
---|---|---|
committer | 2025-04-23 13:37:22 -0700 | |
commit | bc763c54a78afbc153af19762a6bd1bf5ec62844 (patch) | |
tree | 97576305ee10ebfaed5f296db5b3d493479961c2 | |
parent | 94612df606a2778d1050dbc3850201919cbe64b2 (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.java | 15 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java | 9 |
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); |