Merge "update "Last full charge" preference" into pi-dev
am: de0a3a5334
Change-Id: I8b7ef49bc738f88cf36d31208e5370a292eb23b5
This commit is contained in:
@@ -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] -->
|
||||
|
@@ -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
|
||||
);
|
||||
batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast, stats,
|
||||
estimate, elapsedRealtimeUs, false /* shortString */);
|
||||
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;
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user