Merge "Use enhanced estimate battery info when available"
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index 849144a..3888ece 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -217,7 +217,7 @@
return timeUs / 1000;
}
- private long convertMsToUs(long timeMs) {
+ public long convertMsToUs(long timeMs) {
return timeMs * 1000;
}
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 0df23dd..63d703b 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -187,12 +187,11 @@
mEnhancedEstimate =
mPowerFeatureProvider.getTimeRemainingEstimate(cursor);
}
- final long elapsedRealtimeUs = SystemClock.elapsedRealtime() * 1000;
+ final long elapsedRealtimeUs =
+ mBatteryUtils.convertMsToUs(SystemClock.elapsedRealtime());
Intent batteryBroadcast = getContext().registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
- BatteryInfo batteryInfo = BatteryInfo.getBatteryInfo(getContext(),
- batteryBroadcast, mStatsHelper.getStats(), elapsedRealtimeUs, false);
- useEnhancedEstimateIfAvailable(getContext(), batteryInfo);
+ BatteryInfo batteryInfo = getBatteryInfo(elapsedRealtimeUs, batteryBroadcast);
updateHeaderPreference(batteryInfo);
}
@@ -494,12 +493,10 @@
initAnomalyDetectionIfPossible();
- final long elapsedRealtimeUs = SystemClock.elapsedRealtime() * 1000;
+ final long elapsedRealtimeUs = mBatteryUtils.convertMsToUs(SystemClock.elapsedRealtime());
Intent batteryBroadcast = context.registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
- BatteryInfo batteryInfo = BatteryInfo.getBatteryInfo(context, batteryBroadcast,
- mStatsHelper.getStats(), elapsedRealtimeUs, false);
- useEnhancedEstimateIfAvailable(context, batteryInfo);
+ BatteryInfo batteryInfo = getBatteryInfo(elapsedRealtimeUs, batteryBroadcast);
updateHeaderPreference(batteryInfo);
final long runningTime = calculateRunningTimeBasedOnStatsType();
@@ -660,7 +657,7 @@
@VisibleForTesting
long calculateRunningTimeBasedOnStatsType() {
- final long elapsedRealtimeUs = SystemClock.elapsedRealtime() * 1000;
+ final long elapsedRealtimeUs = mBatteryUtils.convertMsToUs(SystemClock.elapsedRealtime());
// Return the battery time (millisecond) on status mStatsType
return mStatsHelper.getStats().computeBatteryRealtime(elapsedRealtimeUs,
mStatsType /* STATS_SINCE_CHARGED */) / 1000;
@@ -743,17 +740,20 @@
}
}
- @VisibleForTesting
- void useEnhancedEstimateIfAvailable(Context context, BatteryInfo batteryInfo) {
- if (mEnhancedEstimate > 0
- && mPowerFeatureProvider.isEnhancedBatteryPredictionEnabled(context)) {
- final Resources resources = context.getResources();
- batteryInfo.remainingTimeUs = mEnhancedEstimate;
- String timeString = Formatter.formatShortElapsedTime(context, mEnhancedEstimate);
- batteryInfo.remainingLabel = resources.getString(
- com.android.settingslib.R.string.power_remaining_duration_only,
- timeString);
+ private BatteryInfo getBatteryInfo(long elapsedRealtimeUs, Intent batteryBroadcast) {
+ BatteryInfo batteryInfo;
+ if (mEnhancedEstimate > 0 &&
+ mPowerFeatureProvider.isEnhancedBatteryPredictionEnabled(
+ getContext())) {
+ // Drain time is in micro-seconds so we have to multiply by 1000
+ batteryInfo = BatteryInfo.getBatteryInfo(getContext(), batteryBroadcast,
+ mStatsHelper.getStats(), elapsedRealtimeUs, false,
+ mBatteryUtils.convertMsToUs(mEnhancedEstimate), true);
+ } else {
+ batteryInfo = BatteryInfo.getBatteryInfo(getContext(), batteryBroadcast,
+ mStatsHelper.getStats(), elapsedRealtimeUs, false);
}
+ return batteryInfo;
}
@VisibleForTesting
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index 2701abe..685e921 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -492,41 +492,6 @@
}
@Test
- public void testUseEnhancedEstimateIfAvailable() {
- // mock out the provider
- final long time = 60 * 1000 * 1000;
- PowerUsageFeatureProvider provider = mFeatureFactory.getPowerUsageFeatureProvider(mContext);
- when(provider.isEnhancedBatteryPredictionEnabled(any())).thenReturn(true);
- mFragment.mPowerFeatureProvider = provider;
- mFragment.mEnhancedEstimate = time;
-
- mFragment.useEnhancedEstimateIfAvailable(mRealContext, mBatteryInfo);
-
- // The string that gets returned always has weird whitespacing to make it fit
- // so we're just going to check that it contains the correct value we care about.
- assertThat(mBatteryInfo.remainingTimeUs).isEqualTo(time);
- assertThat(mBatteryInfo.remainingLabel).contains("About 17 hrs");
- }
-
- @Test
- public void testUseEnhancedEstimateIfAvailable_noOpsOnDisabled() {
- // mock out the provider
- final long time = 60 * 1000 * 1000;
- PowerUsageFeatureProvider provider = mFeatureFactory.getPowerUsageFeatureProvider(mContext);
- when(provider.isEnhancedBatteryPredictionEnabled(any())).thenReturn(false);
- mFragment.mPowerFeatureProvider = provider;
- mFragment.mEnhancedEstimate = time;
- mBatteryInfo.remainingTimeUs = TIME_SINCE_LAST_FULL_CHARGE_US;
- mBatteryInfo.remainingLabel = TIME_LEFT;
-
- mFragment.useEnhancedEstimateIfAvailable(mRealContext, mBatteryInfo);
-
- // check to make sure the values did not change
- assertThat(mBatteryInfo.remainingTimeUs).isEqualTo(TIME_SINCE_LAST_FULL_CHARGE_US);
- assertThat(mBatteryInfo.remainingLabel).contains(TIME_LEFT);
- }
-
- @Test
public void testBatteryPredictionLoaderCallbacks_DoesNotCrashOnNull() {
// Sanity test to check for crash
mFragment.mBatteryPredictionLoaderCallbacks.onLoadFinished(null, null);