diff --git a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java index e7a18d0e6aa..d686594275b 100644 --- a/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java +++ b/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceController.java @@ -38,11 +38,13 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle private static final String TAG = "TopLvBatteryPrefControl"; - @VisibleForTesting - protected boolean mIsBatteryPresent = true; @VisibleForTesting Preference mPreference; + @VisibleForTesting + protected boolean mIsBatteryPresent = true; + private final BatteryBroadcastReceiver mBatteryBroadcastReceiver; + private BatteryInfo mBatteryInfo; private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider; private String mBatteryStatusLabel; @@ -56,8 +58,11 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle mIsBatteryPresent = false; } BatteryInfo.getBatteryInfo(mContext, info -> { + Log.d(TAG, "getBatteryInfo: " + info); mBatteryInfo = info; updateState(mPreference); + // Update the preference summary text to the latest state. + setSummaryAsync(info); }, true /* shortString */); }); @@ -105,18 +110,19 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle if (info == null || context == null) { return null; } - - Log.d(TAG, "getDashboardLabel: batteryStatusUpdate=" + batteryStatusUpdate); + Log.d(TAG, "getDashboardLabel: " + mBatteryStatusLabel + " batteryStatusUpdate=" + + batteryStatusUpdate); if (batteryStatusUpdate) { setSummaryAsync(info); } - - return (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel; + return mBatteryStatusLabel == null ? generateLabel(info) : mBatteryStatusLabel; } private void setSummaryAsync(BatteryInfo info) { ThreadUtils.postOnBackgroundThread(() -> { + // Return false if built-in status should be used, will use updateBatteryStatus() + // method to inject the customized battery status label. final boolean triggerBatteryStatusUpdate = mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info); ThreadUtils.postOnMainThread(() -> { @@ -124,14 +130,14 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle mBatteryStatusLabel = null; // will generateLabel() } mPreference.setSummary( - (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel); + mBatteryStatusLabel == null ? generateLabel(info) : mBatteryStatusLabel); }); }); } private CharSequence generateLabel(BatteryInfo info) { if (Utils.containsIncompatibleChargers(mContext, TAG)) { - return mContext.getString(R.string.battery_tip_incompatible_charging_title); + return mContext.getString(R.string.battery_info_status_not_charging); } if (!info.discharging && info.chargeLabel != null) { return info.chargeLabel; @@ -150,13 +156,13 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle @Override public void updateBatteryStatus(String label, BatteryInfo info) { mBatteryStatusLabel = label; // Null if adaptive charging is not active - - if (mPreference != null) { - // Do not triggerBatteryStatusUpdate(), otherwise there will be an infinite loop - final CharSequence summary = getSummary(false /* batteryStatusUpdate */); - if (summary != null) { - mPreference.setSummary(summary); - } + if (mPreference == null) { + return; + } + // Do not triggerBatteryStatusUpdate() here to cause infinite loop + final CharSequence summary = getSummary(false /* batteryStatusUpdate */); + if (summary != null) { + mPreference.setSummary(summary); } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java index 55fe8b8f0e9..5f825ae2cef 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/TopLevelBatteryPreferenceControllerTest.java @@ -141,7 +141,7 @@ public class TopLevelBatteryPreferenceControllerTest { BatteryInfo info = new BatteryInfo(); assertThat(mController.getDashboardLabel(mContext, info, true)) - .isEqualTo(mContext.getString(R.string.battery_tip_incompatible_charging_title)); + .isEqualTo(mContext.getString(R.string.battery_info_status_not_charging)); } @Test