Merge "update "Last full charge" preference" into pi-dev
This commit is contained in:
@@ -5135,6 +5135,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);
|
||||||
);
|
|
||||||
batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast, stats,
|
|
||||||
estimate, elapsedRealtimeUs, false /* shortString */);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BatteryUtils.logRuntime(tag, "BatteryInfoLoader post query", startTime);
|
||||||
|
batteryInfo = BatteryInfo.getBatteryInfo(mContext, batteryBroadcast, stats,
|
||||||
|
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