diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9466624..32ab1cc 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -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] -->
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index 3a84026..2b79855 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -422,32 +422,24 @@
                 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;
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index b64dc52..8256868 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -95,6 +95,8 @@
     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 @@
                 @Override
                 public void onLoadFinished(Loader<BatteryInfo> loader, BatteryInfo batteryInfo) {
                     mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo);
+                    mBatteryInfo = batteryInfo;
+                    updateLastFullChargePreference();
                 }
 
                 @Override
@@ -291,9 +295,7 @@
 
         // 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 @@
     }
 
     @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
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index 6176bef..24b789c 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -123,6 +123,8 @@
     private MenuInflater mMenuInflater;
     @Mock
     private MenuItem mAdvancedPageMenu;
+    @Mock
+    private BatteryInfo mBatteryInfo;
 
     private List<BatterySipper> mUsageList;
     private Context mRealContext;
@@ -185,12 +187,28 @@
     }
 
     @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
