From 1d649951f96b826bbf888addc925fa97a737e6f1 Mon Sep 17 00:00:00 2001 From: Wesley Wang Date: Tue, 15 Feb 2022 18:44:11 +0800 Subject: [PATCH] Use compact battery status string if available (1/3) - Add a config to switch the battery status string logic Bug: 219650786 Test: make SettingsRoboTests Change-Id: I5939cdc2e4e90466539f342d6d2030c1de1a94c3 --- res/values/config.xml | 3 ++ .../settings/fuelgauge/BatteryInfo.java | 34 +++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/res/values/config.xml b/res/values/config.xml index 6a7c15b0d01..50eddb528f7 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -447,6 +447,9 @@ true + + false + true diff --git a/src/com/android/settings/fuelgauge/BatteryInfo.java b/src/com/android/settings/fuelgauge/BatteryInfo.java index efb58a5666c..4e90710a639 100644 --- a/src/com/android/settings/fuelgauge/BatteryInfo.java +++ b/src/com/android/settings/fuelgauge/BatteryInfo.java @@ -37,6 +37,7 @@ import com.android.settings.Utils; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.UsageView; import com.android.settingslib.R; +import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.settingslib.fuelgauge.Estimate; import com.android.settingslib.fuelgauge.EstimateKt; import com.android.settingslib.utils.PowerUtil; @@ -253,7 +254,7 @@ public class BatteryInfo { BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN) == BatteryManager.BATTERY_HEALTH_OVERHEAT; - info.statusLabel = Utils.getBatteryStatus(context, batteryBroadcast); + info.statusLabel = getBatteryStatus(context, batteryBroadcast); info.batteryStatus = batteryBroadcast.getIntExtra( BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); if (!info.mCharging) { @@ -291,7 +292,7 @@ public class BatteryInfo { R.string.power_remaining_charging_duration_only, timeString); info.chargeLabel = context.getString(resId, info.batteryPercentString, timeString); } else { - final String chargeStatusLabel = Utils.getBatteryStatus(context, batteryBroadcast); + final String chargeStatusLabel = getBatteryStatus(context, batteryBroadcast); info.remainingLabel = null; info.chargeLabel = info.batteryLevel == 100 ? info.batteryPercentString : resources.getString(R.string.power_charging, info.batteryPercentString, @@ -325,6 +326,35 @@ public class BatteryInfo { } } + private static String getBatteryStatus(Context context, Intent batteryChangedIntent) { + final Resources res = context.getResources(); + final boolean isShortStatus = + res.getBoolean(com.android.settings.R.bool.config_use_compact_battery_status); + + if (!isShortStatus) { + return Utils.getBatteryStatus(context, batteryChangedIntent); + } + + final int status = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_STATUS, + BatteryManager.BATTERY_STATUS_UNKNOWN); + final BatteryStatus batteryStatus = new BatteryStatus(batteryChangedIntent); + String statusString = res.getString(R.string.battery_info_status_unknown); + + if (batteryStatus.isCharged()) { + statusString = res.getString(R.string.battery_info_status_full); + } else { + if (status == BatteryManager.BATTERY_STATUS_CHARGING) { + statusString = res.getString(R.string.battery_info_status_charging); + } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) { + statusString = res.getString(R.string.battery_info_status_discharging); + } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) { + statusString = res.getString(R.string.battery_info_status_not_charging); + } + } + + return statusString; + } + public interface BatteryDataParser { void onParsingStarted(long startTime, long endTime);