update "Last full charge" preference
When there is average time estimation, change it to "Full charge lasts about" and also update the time. Also update the BatteryInfo to return average time estimation even though it is charging. Bug: 73018395 Test: RunSettingsRoboTests Change-Id: Ib22dadb5716e3034c60aeeb7768fdbf0cc86be0c
This commit is contained in:
@@ -5131,6 +5131,8 @@
|
|||||||
<string name="battery_detail_since_full_charge">Breakdown since last full charge</string>
|
<string name="battery_detail_since_full_charge">Breakdown since last full charge</string>
|
||||||
<!-- Title for usage time since last full charge. [CHAR LIMIT=60] -->
|
<!-- Title for usage time since last full charge. [CHAR LIMIT=60] -->
|
||||||
<string name="battery_last_full_charge">Last full charge</string>
|
<string name="battery_last_full_charge">Last full charge</string>
|
||||||
|
<!-- Title for usage time that full charge lasts. [CHAR LIMIT=60] -->
|
||||||
|
<string name="battery_full_charge_last">Full charge lasts about</string>
|
||||||
<!-- Description for text in battery footer. [CHAR LIMIT=NONE] -->
|
<!-- Description for text in battery footer. [CHAR LIMIT=NONE] -->
|
||||||
<string name="battery_footer_summary">Battery usage data is approximate and can change based on usage</string>
|
<string name="battery_footer_summary">Battery usage data is approximate and can change based on usage</string>
|
||||||
<!-- Title for text that shows the amount of time an app has been running while in the foreground. [CHAR LIMIT=80] -->
|
<!-- Title for text that shows the amount of time an app has been running while in the foreground. [CHAR LIMIT=80] -->
|
||||||
|
@@ -422,32 +422,24 @@ public class BatteryUtils {
|
|||||||
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||||
final long elapsedRealtimeUs = PowerUtil.convertMsToUs(
|
final long elapsedRealtimeUs = PowerUtil.convertMsToUs(
|
||||||
SystemClock.elapsedRealtime());
|
SystemClock.elapsedRealtime());
|
||||||
|
final BatteryStats stats = statsHelper.getStats();
|
||||||
BatteryInfo batteryInfo;
|
BatteryInfo batteryInfo;
|
||||||
|
|
||||||
// 0 means we are discharging, anything else means charging
|
final Estimate estimate;
|
||||||
final boolean discharging = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)
|
// Get enhanced prediction if available
|
||||||
== 0;
|
if (mPowerUsageFeatureProvider != null &&
|
||||||
// Get enhanced prediction if available and discharging, otherwise use the old code
|
|
||||||
Estimate estimate = null;
|
|
||||||
if (discharging && mPowerUsageFeatureProvider != null &&
|
|
||||||
mPowerUsageFeatureProvider.isEnhancedBatteryPredictionEnabled(mContext)) {
|
mPowerUsageFeatureProvider.isEnhancedBatteryPredictionEnabled(mContext)) {
|
||||||
estimate = mPowerUsageFeatureProvider.getEnhancedBatteryPrediction(mContext);
|
estimate = mPowerUsageFeatureProvider.getEnhancedBatteryPrediction(mContext);
|
||||||
}
|
|
||||||
final BatteryStats stats = statsHelper.getStats();
|
|
||||||
BatteryUtils.logRuntime(tag, "BatteryInfoLoader post query", startTime);
|
|
||||||
|
|
||||||
if (estimate != null) {
|
|
||||||
batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast, stats,
|
|
||||||
estimate, elapsedRealtimeUs, false /* shortString */);
|
|
||||||
} else {
|
} else {
|
||||||
estimate = new Estimate(
|
estimate = new Estimate(
|
||||||
PowerUtil.convertUsToMs(stats.computeBatteryTimeRemaining(elapsedRealtimeUs)),
|
PowerUtil.convertUsToMs(stats.computeBatteryTimeRemaining(elapsedRealtimeUs)),
|
||||||
false,
|
false /* isBasedOnUsage */,
|
||||||
Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN
|
Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
|
||||||
);
|
}
|
||||||
|
|
||||||
|
BatteryUtils.logRuntime(tag, "BatteryInfoLoader post query", startTime);
|
||||||
batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast, stats,
|
batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast, stats,
|
||||||
estimate, elapsedRealtimeUs, false /* shortString */);
|
estimate, elapsedRealtimeUs, false /* shortString */);
|
||||||
}
|
|
||||||
BatteryUtils.logRuntime(tag, "BatteryInfoLoader.loadInBackground", startTime);
|
BatteryUtils.logRuntime(tag, "BatteryInfoLoader.loadInBackground", startTime);
|
||||||
|
|
||||||
return batteryInfo;
|
return batteryInfo;
|
||||||
|
@@ -95,6 +95,8 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
|||||||
BatteryUtils mBatteryUtils;
|
BatteryUtils mBatteryUtils;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
LayoutPreference mBatteryLayoutPref;
|
LayoutPreference mBatteryLayoutPref;
|
||||||
|
@VisibleForTesting
|
||||||
|
BatteryInfo mBatteryInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SparseArray that maps uid to {@link Anomaly}, so we could find {@link Anomaly} by uid
|
* SparseArray that maps uid to {@link Anomaly}, so we could find {@link Anomaly} by uid
|
||||||
@@ -118,6 +120,8 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
|||||||
@Override
|
@Override
|
||||||
public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
|
public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
|
||||||
mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo);
|
mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo);
|
||||||
|
mBatteryInfo = batteryInfo;
|
||||||
|
updateLastFullChargePreference();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -291,9 +295,7 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
|||||||
|
|
||||||
// reload BatteryInfo and updateUI
|
// reload BatteryInfo and updateUI
|
||||||
restartBatteryInfoLoader();
|
restartBatteryInfoLoader();
|
||||||
final long lastFullChargeTime = mBatteryUtils.calculateLastFullChargeTime(mStatsHelper,
|
updateLastFullChargePreference();
|
||||||
System.currentTimeMillis());
|
|
||||||
updateLastFullChargePreference(lastFullChargeTime);
|
|
||||||
mScreenUsagePref.setSubtitle(StringUtil.formatElapsedTime(getContext(),
|
mScreenUsagePref.setSubtitle(StringUtil.formatElapsedTime(getContext(),
|
||||||
mBatteryUtils.calculateScreenUsageTime(mStatsHelper), false));
|
mBatteryUtils.calculateScreenUsageTime(mStatsHelper), false));
|
||||||
}
|
}
|
||||||
@@ -314,10 +316,21 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
|
|||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void updateLastFullChargePreference(long timeMs) {
|
void updateLastFullChargePreference() {
|
||||||
final CharSequence timeSequence = StringUtil.formatRelativeTime(getContext(), timeMs,
|
if (mBatteryInfo != null && mBatteryInfo.averageTimeToDischarge
|
||||||
false);
|
!= Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN) {
|
||||||
mLastFullChargePref.setSubtitle(timeSequence);
|
mLastFullChargePref.setTitle(R.string.battery_full_charge_last);
|
||||||
|
mLastFullChargePref.setSubtitle(
|
||||||
|
StringUtil.formatElapsedTime(getContext(), mBatteryInfo.averageTimeToDischarge,
|
||||||
|
false /* withSeconds */));
|
||||||
|
} else {
|
||||||
|
final long lastFullChargeTime = mBatteryUtils.calculateLastFullChargeTime(mStatsHelper,
|
||||||
|
System.currentTimeMillis());
|
||||||
|
mLastFullChargePref.setTitle(R.string.battery_last_full_charge);
|
||||||
|
mLastFullChargePref.setSubtitle(
|
||||||
|
StringUtil.formatRelativeTime(getContext(), lastFullChargeTime,
|
||||||
|
false /* withSeconds */));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
@@ -123,6 +123,8 @@ public class PowerUsageSummaryTest {
|
|||||||
private MenuInflater mMenuInflater;
|
private MenuInflater mMenuInflater;
|
||||||
@Mock
|
@Mock
|
||||||
private MenuItem mAdvancedPageMenu;
|
private MenuItem mAdvancedPageMenu;
|
||||||
|
@Mock
|
||||||
|
private BatteryInfo mBatteryInfo;
|
||||||
|
|
||||||
private List<BatterySipper> mUsageList;
|
private List<BatterySipper> mUsageList;
|
||||||
private Context mRealContext;
|
private Context mRealContext;
|
||||||
@@ -185,12 +187,28 @@ public class PowerUsageSummaryTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateLastFullChargePreference_showCorrectSummary() {
|
public void testUpdateLastFullChargePreference_noAverageTime_showLastFullChargeSummary() {
|
||||||
|
mFragment.mBatteryInfo = null;
|
||||||
|
when(mFragment.getContext()).thenReturn(mRealContext);
|
||||||
|
doReturn(TIME_SINCE_LAST_FULL_CHARGE_MS).when(
|
||||||
|
mFragment.mBatteryUtils).calculateLastFullChargeTime(any(), anyLong());
|
||||||
|
|
||||||
|
mFragment.updateLastFullChargePreference();
|
||||||
|
|
||||||
|
assertThat(mLastFullChargePref.getTitle()).isEqualTo("Last full charge");
|
||||||
|
assertThat(mLastFullChargePref.getSubtitle()).isEqualTo("2 hr. ago");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateLastFullChargePreference_hasAverageTime_showFullChargeLastSummary() {
|
||||||
|
mFragment.mBatteryInfo = mBatteryInfo;
|
||||||
|
mBatteryInfo.averageTimeToDischarge = TIME_SINCE_LAST_FULL_CHARGE_MS;
|
||||||
when(mFragment.getContext()).thenReturn(mRealContext);
|
when(mFragment.getContext()).thenReturn(mRealContext);
|
||||||
|
|
||||||
mFragment.updateLastFullChargePreference(TIME_SINCE_LAST_FULL_CHARGE_MS);
|
mFragment.updateLastFullChargePreference();
|
||||||
|
|
||||||
assertThat(mLastFullChargePref.getSubtitle()).isEqualTo("2 hr. ago");
|
assertThat(mLastFullChargePref.getTitle()).isEqualTo("Full charge lasts about");
|
||||||
|
assertThat(mLastFullChargePref.getSubtitle().toString()).isEqualTo("2h");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user