Merge "update "Last full charge" preference" into pi-dev

am: de0a3a5334

Change-Id: I8b7ef49bc738f88cf36d31208e5370a292eb23b5
This commit is contained in:
Lei Yu
2018-03-20 02:57:55 +00:00
committed by android-build-merger
4 changed files with 53 additions and 28 deletions

View File

@@ -5135,6 +5135,8 @@
<string name="battery_detail_since_full_charge">Breakdown since last full charge</string>
<!-- Title for usage time since last full charge. [CHAR LIMIT=60] -->
<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] -->
<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] -->

View File

@@ -422,32 +422,24 @@ public class BatteryUtils {
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
final long elapsedRealtimeUs = PowerUtil.convertMsToUs(
SystemClock.elapsedRealtime());
final BatteryStats stats = statsHelper.getStats();
BatteryInfo batteryInfo;
// 0 means we are discharging, anything else means charging
final boolean discharging = batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)
== 0;
// Get enhanced prediction if available and discharging, otherwise use the old code
Estimate estimate = null;
if (discharging && mPowerUsageFeatureProvider != null &&
final Estimate estimate;
// Get enhanced prediction if available
if (mPowerUsageFeatureProvider != null &&
mPowerUsageFeatureProvider.isEnhancedBatteryPredictionEnabled(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 {
estimate = new Estimate(
PowerUtil.convertUsToMs(stats.computeBatteryTimeRemaining(elapsedRealtimeUs)),
false,
Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN
);
false /* isBasedOnUsage */,
Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
}
BatteryUtils.logRuntime(tag, "BatteryInfoLoader post query", startTime);
batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast, stats,
estimate, elapsedRealtimeUs, false /* shortString */);
}
BatteryUtils.logRuntime(tag, "BatteryInfoLoader.loadInBackground", startTime);
return batteryInfo;

View File

@@ -95,6 +95,8 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
BatteryUtils mBatteryUtils;
@VisibleForTesting
LayoutPreference mBatteryLayoutPref;
@VisibleForTesting
BatteryInfo mBatteryInfo;
/**
* 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
public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo);
mBatteryInfo = batteryInfo;
updateLastFullChargePreference();
}
@Override
@@ -291,9 +295,7 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
// reload BatteryInfo and updateUI
restartBatteryInfoLoader();
final long lastFullChargeTime = mBatteryUtils.calculateLastFullChargeTime(mStatsHelper,
System.currentTimeMillis());
updateLastFullChargePreference(lastFullChargeTime);
updateLastFullChargePreference();
mScreenUsagePref.setSubtitle(StringUtil.formatElapsedTime(getContext(),
mBatteryUtils.calculateScreenUsageTime(mStatsHelper), false));
}
@@ -314,10 +316,21 @@ public class PowerUsageSummary extends PowerUsageBase implements OnLongClickList
}
@VisibleForTesting
void updateLastFullChargePreference(long timeMs) {
final CharSequence timeSequence = StringUtil.formatRelativeTime(getContext(), timeMs,
false);
mLastFullChargePref.setSubtitle(timeSequence);
void updateLastFullChargePreference() {
if (mBatteryInfo != null && mBatteryInfo.averageTimeToDischarge
!= Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN) {
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

View File

@@ -123,6 +123,8 @@ public class PowerUsageSummaryTest {
private MenuInflater mMenuInflater;
@Mock
private MenuItem mAdvancedPageMenu;
@Mock
private BatteryInfo mBatteryInfo;
private List<BatterySipper> mUsageList;
private Context mRealContext;
@@ -185,12 +187,28 @@ public class PowerUsageSummaryTest {
}
@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);
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