Refactor compact battery status method (1/2)

- Move compact battery status logic into libs

Bug: 219650786
Test: make SettingsRoboTests
Change-Id: Icc53c8d88235bffedfb51a3526668277fcbf4f40
This commit is contained in:
Wesley Wang
2022-02-16 14:52:43 +08:00
parent 1d649951f9
commit 695644db27
3 changed files with 14 additions and 40 deletions

View File

@@ -112,7 +112,8 @@ public class BatteryBroadcastReceiver extends BroadcastReceiver {
if (intent != null && mBatteryListener != null) { if (intent != null && mBatteryListener != null) {
if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) { if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {
final String batteryLevel = Utils.getBatteryPercentage(intent); final String batteryLevel = Utils.getBatteryPercentage(intent);
final String batteryStatus = Utils.getBatteryStatus(mContext, intent); final String batteryStatus =
Utils.getBatteryStatus(mContext, intent, /* compactStatus= */ false);
final int batteryHealth = intent.getIntExtra( final int batteryHealth = intent.getIntExtra(
BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN); BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN);
if (!Utils.isBatteryPresent(intent)) { if (!Utils.isBatteryPresent(intent)) {

View File

@@ -37,7 +37,6 @@ import com.android.settings.Utils;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.UsageView; import com.android.settings.widget.UsageView;
import com.android.settingslib.R; import com.android.settingslib.R;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.settingslib.fuelgauge.Estimate; import com.android.settingslib.fuelgauge.Estimate;
import com.android.settingslib.fuelgauge.EstimateKt; import com.android.settingslib.fuelgauge.EstimateKt;
import com.android.settingslib.utils.PowerUtil; import com.android.settingslib.utils.PowerUtil;
@@ -244,6 +243,8 @@ public class BatteryInfo {
@NonNull BatteryUsageStats batteryUsageStats, Estimate estimate, @NonNull BatteryUsageStats batteryUsageStats, Estimate estimate,
long elapsedRealtimeUs, boolean shortString) { long elapsedRealtimeUs, boolean shortString) {
final long startTime = System.currentTimeMillis(); final long startTime = System.currentTimeMillis();
final boolean isCompactStatus = context.getResources().getBoolean(
com.android.settings.R.bool.config_use_compact_battery_status);
BatteryInfo info = new BatteryInfo(); BatteryInfo info = new BatteryInfo();
info.mBatteryUsageStats = batteryUsageStats; info.mBatteryUsageStats = batteryUsageStats;
info.batteryLevel = Utils.getBatteryLevel(batteryBroadcast); info.batteryLevel = Utils.getBatteryLevel(batteryBroadcast);
@@ -254,21 +255,21 @@ public class BatteryInfo {
BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN) BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN)
== BatteryManager.BATTERY_HEALTH_OVERHEAT; == BatteryManager.BATTERY_HEALTH_OVERHEAT;
info.statusLabel = getBatteryStatus(context, batteryBroadcast); info.statusLabel = Utils.getBatteryStatus(context, batteryBroadcast, isCompactStatus);
info.batteryStatus = batteryBroadcast.getIntExtra( info.batteryStatus = batteryBroadcast.getIntExtra(
BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN);
if (!info.mCharging) { if (!info.mCharging) {
updateBatteryInfoDischarging(context, shortString, estimate, info); updateBatteryInfoDischarging(context, shortString, estimate, info);
} else { } else {
updateBatteryInfoCharging(context, batteryBroadcast, batteryUsageStats, updateBatteryInfoCharging(context, batteryBroadcast, batteryUsageStats,
info); info, isCompactStatus);
} }
BatteryUtils.logRuntime(LOG_TAG, "time for getBatteryInfo", startTime); BatteryUtils.logRuntime(LOG_TAG, "time for getBatteryInfo", startTime);
return info; return info;
} }
private static void updateBatteryInfoCharging(Context context, Intent batteryBroadcast, private static void updateBatteryInfoCharging(Context context, Intent batteryBroadcast,
BatteryUsageStats stats, BatteryInfo info) { BatteryUsageStats stats, BatteryInfo info, boolean compactStatus) {
final Resources resources = context.getResources(); final Resources resources = context.getResources();
final long chargeTimeMs = stats.getChargeTimeRemainingMs(); final long chargeTimeMs = stats.getChargeTimeRemainingMs();
final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS, final int status = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_STATUS,
@@ -292,7 +293,8 @@ public class BatteryInfo {
R.string.power_remaining_charging_duration_only, timeString); R.string.power_remaining_charging_duration_only, timeString);
info.chargeLabel = context.getString(resId, info.batteryPercentString, timeString); info.chargeLabel = context.getString(resId, info.batteryPercentString, timeString);
} else { } else {
final String chargeStatusLabel = getBatteryStatus(context, batteryBroadcast); final String chargeStatusLabel =
Utils.getBatteryStatus(context, batteryBroadcast, compactStatus);
info.remainingLabel = null; info.remainingLabel = null;
info.chargeLabel = info.batteryLevel == 100 ? info.batteryPercentString : info.chargeLabel = info.batteryLevel == 100 ? info.batteryPercentString :
resources.getString(R.string.power_charging, info.batteryPercentString, resources.getString(R.string.power_charging, info.batteryPercentString,
@@ -326,35 +328,6 @@ 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 { public interface BatteryDataParser {
void onParsingStarted(long startTime, long endTime); void onParsingStarted(long startTime, long endTime);

View File

@@ -85,8 +85,8 @@ public class BatteryBroadcastReceiverTest {
assertThat(mBatteryBroadcastReceiver.mBatteryLevel) assertThat(mBatteryBroadcastReceiver.mBatteryLevel)
.isEqualTo(Utils.getBatteryPercentage(mChargingIntent)); .isEqualTo(Utils.getBatteryPercentage(mChargingIntent));
assertThat(mBatteryBroadcastReceiver.mBatteryStatus) assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(
.isEqualTo(Utils.getBatteryStatus(mContext, mChargingIntent)); Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false));
verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL); verify(mBatteryListener).onBatteryChanged(BatteryUpdateType.BATTERY_LEVEL);
} }
@@ -134,7 +134,7 @@ public class BatteryBroadcastReceiverTest {
public void testOnReceive_batteryDataNotChanged_listenerNotInvoked() { public void testOnReceive_batteryDataNotChanged_listenerNotInvoked() {
final String batteryLevel = Utils.getBatteryPercentage(mChargingIntent); final String batteryLevel = Utils.getBatteryPercentage(mChargingIntent);
final String batteryStatus = final String batteryStatus =
Utils.getBatteryStatus(mContext, mChargingIntent); Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false);
mBatteryBroadcastReceiver.mBatteryLevel = batteryLevel; mBatteryBroadcastReceiver.mBatteryLevel = batteryLevel;
mBatteryBroadcastReceiver.mBatteryStatus = batteryStatus; mBatteryBroadcastReceiver.mBatteryStatus = batteryStatus;
@@ -159,8 +159,8 @@ public class BatteryBroadcastReceiverTest {
assertThat(mBatteryBroadcastReceiver.mBatteryLevel) assertThat(mBatteryBroadcastReceiver.mBatteryLevel)
.isEqualTo(Utils.getBatteryPercentage(mChargingIntent)); .isEqualTo(Utils.getBatteryPercentage(mChargingIntent));
assertThat(mBatteryBroadcastReceiver.mBatteryStatus) assertThat(mBatteryBroadcastReceiver.mBatteryStatus).isEqualTo(
.isEqualTo(Utils.getBatteryStatus(mContext, mChargingIntent)); Utils.getBatteryStatus(mContext, mChargingIntent, /* compactStatus= */ false));
assertThat(mBatteryBroadcastReceiver.mBatteryHealth) assertThat(mBatteryBroadcastReceiver.mBatteryHealth)
.isEqualTo(BatteryManager.BATTERY_HEALTH_UNKNOWN); .isEqualTo(BatteryManager.BATTERY_HEALTH_UNKNOWN);
// 2 times because register will force update the battery // 2 times because register will force update the battery