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

Commit 1d649951 authored by Wesley Wang's avatar Wesley Wang
Browse files

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
parent cf6ec6a2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -447,6 +447,9 @@
    <!-- Whether top_level_battery should be shown or not. -->
    <bool name="config_show_top_level_battery">true</bool>

    <!-- Whether to use compact battery status string. -->
    <bool name="config_use_compact_battery_status">false</bool>

    <!-- Whether top_level_connected_devices should be shown or not. -->
    <bool name="config_show_top_level_connected_devices">true</bool>

+32 −2
Original line number Diff line number Diff line
@@ -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);