Merge "Fix battery percentage is inconsistent in settings" into udc-dev am: 3b60e2a9c3
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22948142 Change-Id: Ie0c10646accf9a9e9fdc219a76b84cf3cfd76872 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -38,11 +38,13 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle
|
|||||||
|
|
||||||
private static final String TAG = "TopLvBatteryPrefControl";
|
private static final String TAG = "TopLvBatteryPrefControl";
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
protected boolean mIsBatteryPresent = true;
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Preference mPreference;
|
Preference mPreference;
|
||||||
|
@VisibleForTesting
|
||||||
|
protected boolean mIsBatteryPresent = true;
|
||||||
|
|
||||||
private final BatteryBroadcastReceiver mBatteryBroadcastReceiver;
|
private final BatteryBroadcastReceiver mBatteryBroadcastReceiver;
|
||||||
|
|
||||||
private BatteryInfo mBatteryInfo;
|
private BatteryInfo mBatteryInfo;
|
||||||
private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
|
private BatteryStatusFeatureProvider mBatteryStatusFeatureProvider;
|
||||||
private String mBatteryStatusLabel;
|
private String mBatteryStatusLabel;
|
||||||
@@ -56,8 +58,11 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle
|
|||||||
mIsBatteryPresent = false;
|
mIsBatteryPresent = false;
|
||||||
}
|
}
|
||||||
BatteryInfo.getBatteryInfo(mContext, info -> {
|
BatteryInfo.getBatteryInfo(mContext, info -> {
|
||||||
|
Log.d(TAG, "getBatteryInfo: " + info);
|
||||||
mBatteryInfo = info;
|
mBatteryInfo = info;
|
||||||
updateState(mPreference);
|
updateState(mPreference);
|
||||||
|
// Update the preference summary text to the latest state.
|
||||||
|
setSummaryAsync(info);
|
||||||
}, true /* shortString */);
|
}, true /* shortString */);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -105,18 +110,19 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle
|
|||||||
if (info == null || context == null) {
|
if (info == null || context == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
Log.d(TAG, "getDashboardLabel: " + mBatteryStatusLabel + " batteryStatusUpdate="
|
||||||
Log.d(TAG, "getDashboardLabel: batteryStatusUpdate=" + batteryStatusUpdate);
|
+ batteryStatusUpdate);
|
||||||
|
|
||||||
if (batteryStatusUpdate) {
|
if (batteryStatusUpdate) {
|
||||||
setSummaryAsync(info);
|
setSummaryAsync(info);
|
||||||
}
|
}
|
||||||
|
return mBatteryStatusLabel == null ? generateLabel(info) : mBatteryStatusLabel;
|
||||||
return (mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setSummaryAsync(BatteryInfo info) {
|
private void setSummaryAsync(BatteryInfo info) {
|
||||||
ThreadUtils.postOnBackgroundThread(() -> {
|
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 =
|
final boolean triggerBatteryStatusUpdate =
|
||||||
mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info);
|
mBatteryStatusFeatureProvider.triggerBatteryStatusUpdate(this, info);
|
||||||
ThreadUtils.postOnMainThread(() -> {
|
ThreadUtils.postOnMainThread(() -> {
|
||||||
@@ -124,14 +130,14 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle
|
|||||||
mBatteryStatusLabel = null; // will generateLabel()
|
mBatteryStatusLabel = null; // will generateLabel()
|
||||||
}
|
}
|
||||||
mPreference.setSummary(
|
mPreference.setSummary(
|
||||||
(mBatteryStatusLabel == null) ? generateLabel(info) : mBatteryStatusLabel);
|
mBatteryStatusLabel == null ? generateLabel(info) : mBatteryStatusLabel);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private CharSequence generateLabel(BatteryInfo info) {
|
private CharSequence generateLabel(BatteryInfo info) {
|
||||||
if (Utils.containsIncompatibleChargers(mContext, TAG)) {
|
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) {
|
if (!info.discharging && info.chargeLabel != null) {
|
||||||
return info.chargeLabel;
|
return info.chargeLabel;
|
||||||
@@ -150,15 +156,15 @@ public class TopLevelBatteryPreferenceController extends BasePreferenceControlle
|
|||||||
@Override
|
@Override
|
||||||
public void updateBatteryStatus(String label, BatteryInfo info) {
|
public void updateBatteryStatus(String label, BatteryInfo info) {
|
||||||
mBatteryStatusLabel = label; // Null if adaptive charging is not active
|
mBatteryStatusLabel = label; // Null if adaptive charging is not active
|
||||||
|
if (mPreference == null) {
|
||||||
if (mPreference != null) {
|
return;
|
||||||
// Do not triggerBatteryStatusUpdate(), otherwise there will be an infinite loop
|
}
|
||||||
|
// Do not triggerBatteryStatusUpdate() here to cause infinite loop
|
||||||
final CharSequence summary = getSummary(false /* batteryStatusUpdate */);
|
final CharSequence summary = getSummary(false /* batteryStatusUpdate */);
|
||||||
if (summary != null) {
|
if (summary != null) {
|
||||||
mPreference.setSummary(summary);
|
mPreference.setSummary(summary);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected static ComponentName convertClassPathToComponentName(String classPath) {
|
protected static ComponentName convertClassPathToComponentName(String classPath) {
|
||||||
|
@@ -141,7 +141,7 @@ public class TopLevelBatteryPreferenceControllerTest {
|
|||||||
BatteryInfo info = new BatteryInfo();
|
BatteryInfo info = new BatteryInfo();
|
||||||
|
|
||||||
assertThat(mController.getDashboardLabel(mContext, info, true))
|
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
|
@Test
|
||||||
|
Reference in New Issue
Block a user