Loading res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -5178,10 +5178,14 @@ <string name="battery_usage_total_less_than_one_minute">Total: less than a min</string> <!-- [CHAR_LIMIT=NONE] Battery usage item for total background time less than a minute --> <string name="battery_usage_background_less_than_one_minute">Background: less than a min</string> <!-- [CHAR_LIMIT=NONE] Device screen on time less than a minute --> <string name="battery_usage_screen_time_less_than_one_minute">Screen time: less than a min</string> <!-- [CHAR_LIMIT=NONE] Battery usage item for total usage time --> <string name="battery_usage_for_total_time">Total: <xliff:g id="time">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] Battery usage item for background usage time --> <string name="battery_usage_for_background_time">Background: <xliff:g id="time">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] Device screen on time --> <string name="battery_usage_screen_time">Screen time: <xliff:g id="time">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] Battery usage main screen footer for empty content --> <string name="battery_usage_screen_footer_empty">Battery usage data will be available in a few hours once fully charged</string> <!-- [CHAR_LIMIT=NONE] Battery chart label for the current time. --> Loading src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java +26 −27 Original line number Diff line number Diff line Loading @@ -291,44 +291,43 @@ public class BatteryUsageBreakdownController extends BasePreferenceController @VisibleForTesting void setPreferenceSummary( PowerGaugePreference preference, BatteryDiffEntry entry) { final long screenOnTimeInMs = entry.mScreenOnTimeInMs; final long foregroundUsageTimeInMs = entry.mForegroundUsageTimeInMs; final long backgroundUsageTimeInMs = entry.mBackgroundUsageTimeInMs; final long totalUsageTimeInMs = foregroundUsageTimeInMs + backgroundUsageTimeInMs; String usageTimeSummary = null; // Not shows summary for some system components without usage time. if (totalUsageTimeInMs == 0) { preference.setSummary(null); // Shows background summary only if we don't have foreground usage time. } else if (foregroundUsageTimeInMs == 0 && backgroundUsageTimeInMs != 0) { usageTimeSummary = buildUsageTimeInfo(backgroundUsageTimeInMs, true); // Shows total usage summary only if total usage time is small. } else if (totalUsageTimeInMs < DateUtils.MINUTE_IN_MILLIS) { usageTimeSummary = buildUsageTimeInfo(totalUsageTimeInMs, false); StringBuilder usageTimeSummary = new StringBuilder(); if (entry.isSystemEntry()) { if (totalUsageTimeInMs != 0) { usageTimeSummary.append(buildUsageTimeInfo(totalUsageTimeInMs, R.string.battery_usage_total_less_than_one_minute, R.string.battery_usage_for_total_time)); } } else { usageTimeSummary = buildUsageTimeInfo(totalUsageTimeInMs, false); // Shows background usage time if it is larger than a minute. if (backgroundUsageTimeInMs > 0) { usageTimeSummary += "\n" + buildUsageTimeInfo(backgroundUsageTimeInMs, true); if (screenOnTimeInMs != 0) { usageTimeSummary.append(buildUsageTimeInfo(screenOnTimeInMs, R.string.battery_usage_screen_time_less_than_one_minute, R.string.battery_usage_screen_time)); } if (screenOnTimeInMs != 0 && backgroundUsageTimeInMs != 0) { usageTimeSummary.append('\n'); } if (backgroundUsageTimeInMs != 0) { usageTimeSummary.append(buildUsageTimeInfo(backgroundUsageTimeInMs, R.string.battery_usage_background_less_than_one_minute, R.string.battery_usage_for_background_time)); } } preference.setSummary(usageTimeSummary); } private String buildUsageTimeInfo(long usageTimeInMs, boolean isBackground) { if (usageTimeInMs < DateUtils.MINUTE_IN_MILLIS) { return mPrefContext.getString( isBackground ? R.string.battery_usage_background_less_than_one_minute : R.string.battery_usage_total_less_than_one_minute); private String buildUsageTimeInfo(long timeInMs, int lessThanOneMinuteResId, int normalResId) { if (timeInMs < DateUtils.MINUTE_IN_MILLIS) { return mPrefContext.getString(lessThanOneMinuteResId); } final CharSequence timeSequence = StringUtil.formatElapsedTime(mPrefContext, (double) usageTimeInMs, StringUtil.formatElapsedTime(mPrefContext, (double) timeInMs, /*withSeconds=*/ false, /*collapseTimeUnit=*/ false); final int resourceId = isBackground ? R.string.battery_usage_for_background_time : R.string.battery_usage_for_total_time; return mPrefContext.getString(resourceId, timeSequence); return mPrefContext.getString(normalResId, timeSequence); } } tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java +66 −21 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.app.settings.SettingsEnums; import android.content.ContentValues; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; Loading Loading @@ -235,73 +236,117 @@ public final class BatteryUsageBreakdownControllerTest { } @Test public void setPreferenceSummary_setNullContentIfTotalUsageTimeIsZero() { public void setPreferenceSummary_systemEntryTotalUsageTimeIsZero_emptySummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*isSystem=*/ true, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary()).isNull(); assertThat(pref.getSummary().toString().isEmpty()).isTrue(); } @Test public void setPreferenceSummary_setBackgroundUsageTimeOnly() { public void setPreferenceSummary_systemEntryTotalUsageTimeLessThanAMinute_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS)); assertThat(pref.getSummary().toString()).isEqualTo("Background: 1 min"); /*isSystem=*/ true, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a min"); } @Test public void setPreferenceSummary_setTotalUsageTimeLessThanAMinute() { public void setPreferenceSummary_systemEntryTotalUsageTimeGreaterThanAMinute_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*foregroundUsageTimeInMs=*/ 100, /*backgroundUsageTimeInMs=*/ 200)); assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a min"); /*isSystem=*/ true, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS * 2, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary().toString()).isEqualTo("Total: 2 min"); } @Test public void setPreferenceSummary_setTotalTimeIfBackgroundTimeLessThanAMinute() { public void setPreferenceSummary_appEntryAllTimesAreZero_emptySummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS, /*backgroundUsageTimeInMs=*/ 200)); assertThat(pref.getSummary().toString()) .isEqualTo("Total: 1 min\nBackground: less than a min"); /*isSystem=*/ false, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary().toString().isEmpty()).isTrue(); } @Test public void setPreferenceSummary_setTotalAndBackgroundUsageTime() { public void setPreferenceSummary_appEntryBackgroundUsageTimeOnly_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS, /*isSystem=*/ false, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS)); assertThat(pref.getSummary().toString()).isEqualTo("Total: 2 min\nBackground: 1 min"); assertThat(pref.getSummary().toString()).isEqualTo("Background: 1 min"); } @Test public void setPreferenceSummary_appEntryScreenOnTimeOnly_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*isSystem=*/ false, /*screenOnTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS, /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary().toString()).isEqualTo("Screen time: 1 min"); } @Test public void setPreferenceSummary_appEntryAllTimesLessThanAMinute_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*isSystem=*/ false, /*screenOnTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1, /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1, /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1)); assertThat(pref.getSummary().toString()).isEqualTo( "Screen time: less than a min\nBackground: less than a min"); } private BatteryDiffEntry createBatteryDiffEntry( private BatteryDiffEntry createBatteryDiffEntry(boolean isSystem, long screenOnTimeInMs, long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) { final ContentValues contentValues = new ContentValues(); contentValues.put(BatteryHistEntry.KEY_CONSUMER_TYPE, Integer.valueOf( isSystem ? ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY : ConvertUtils.CONSUMER_TYPE_UID_BATTERY)); contentValues.put(BatteryHistEntry.KEY_USER_ID, Integer.valueOf(1001)); final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(contentValues); return new BatteryDiffEntry( mContext, foregroundUsageTimeInMs, backgroundUsageTimeInMs, /*screenOnTimeInMs=*/ 0, mContext, foregroundUsageTimeInMs, backgroundUsageTimeInMs, screenOnTimeInMs, /*consumePower=*/ 0, /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0, /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0, mBatteryHistEntry); /*cachedUsageConsumePower=*/ 0, batteryHistEntry); } private BatteryUsageBreakdownController createController() { Loading Loading
res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -5178,10 +5178,14 @@ <string name="battery_usage_total_less_than_one_minute">Total: less than a min</string> <!-- [CHAR_LIMIT=NONE] Battery usage item for total background time less than a minute --> <string name="battery_usage_background_less_than_one_minute">Background: less than a min</string> <!-- [CHAR_LIMIT=NONE] Device screen on time less than a minute --> <string name="battery_usage_screen_time_less_than_one_minute">Screen time: less than a min</string> <!-- [CHAR_LIMIT=NONE] Battery usage item for total usage time --> <string name="battery_usage_for_total_time">Total: <xliff:g id="time">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] Battery usage item for background usage time --> <string name="battery_usage_for_background_time">Background: <xliff:g id="time">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] Device screen on time --> <string name="battery_usage_screen_time">Screen time: <xliff:g id="time">%s</xliff:g></string> <!-- [CHAR_LIMIT=NONE] Battery usage main screen footer for empty content --> <string name="battery_usage_screen_footer_empty">Battery usage data will be available in a few hours once fully charged</string> <!-- [CHAR_LIMIT=NONE] Battery chart label for the current time. --> Loading
src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java +26 −27 Original line number Diff line number Diff line Loading @@ -291,44 +291,43 @@ public class BatteryUsageBreakdownController extends BasePreferenceController @VisibleForTesting void setPreferenceSummary( PowerGaugePreference preference, BatteryDiffEntry entry) { final long screenOnTimeInMs = entry.mScreenOnTimeInMs; final long foregroundUsageTimeInMs = entry.mForegroundUsageTimeInMs; final long backgroundUsageTimeInMs = entry.mBackgroundUsageTimeInMs; final long totalUsageTimeInMs = foregroundUsageTimeInMs + backgroundUsageTimeInMs; String usageTimeSummary = null; // Not shows summary for some system components without usage time. if (totalUsageTimeInMs == 0) { preference.setSummary(null); // Shows background summary only if we don't have foreground usage time. } else if (foregroundUsageTimeInMs == 0 && backgroundUsageTimeInMs != 0) { usageTimeSummary = buildUsageTimeInfo(backgroundUsageTimeInMs, true); // Shows total usage summary only if total usage time is small. } else if (totalUsageTimeInMs < DateUtils.MINUTE_IN_MILLIS) { usageTimeSummary = buildUsageTimeInfo(totalUsageTimeInMs, false); StringBuilder usageTimeSummary = new StringBuilder(); if (entry.isSystemEntry()) { if (totalUsageTimeInMs != 0) { usageTimeSummary.append(buildUsageTimeInfo(totalUsageTimeInMs, R.string.battery_usage_total_less_than_one_minute, R.string.battery_usage_for_total_time)); } } else { usageTimeSummary = buildUsageTimeInfo(totalUsageTimeInMs, false); // Shows background usage time if it is larger than a minute. if (backgroundUsageTimeInMs > 0) { usageTimeSummary += "\n" + buildUsageTimeInfo(backgroundUsageTimeInMs, true); if (screenOnTimeInMs != 0) { usageTimeSummary.append(buildUsageTimeInfo(screenOnTimeInMs, R.string.battery_usage_screen_time_less_than_one_minute, R.string.battery_usage_screen_time)); } if (screenOnTimeInMs != 0 && backgroundUsageTimeInMs != 0) { usageTimeSummary.append('\n'); } if (backgroundUsageTimeInMs != 0) { usageTimeSummary.append(buildUsageTimeInfo(backgroundUsageTimeInMs, R.string.battery_usage_background_less_than_one_minute, R.string.battery_usage_for_background_time)); } } preference.setSummary(usageTimeSummary); } private String buildUsageTimeInfo(long usageTimeInMs, boolean isBackground) { if (usageTimeInMs < DateUtils.MINUTE_IN_MILLIS) { return mPrefContext.getString( isBackground ? R.string.battery_usage_background_less_than_one_minute : R.string.battery_usage_total_less_than_one_minute); private String buildUsageTimeInfo(long timeInMs, int lessThanOneMinuteResId, int normalResId) { if (timeInMs < DateUtils.MINUTE_IN_MILLIS) { return mPrefContext.getString(lessThanOneMinuteResId); } final CharSequence timeSequence = StringUtil.formatElapsedTime(mPrefContext, (double) usageTimeInMs, StringUtil.formatElapsedTime(mPrefContext, (double) timeInMs, /*withSeconds=*/ false, /*collapseTimeUnit=*/ false); final int resourceId = isBackground ? R.string.battery_usage_for_background_time : R.string.battery_usage_for_total_time; return mPrefContext.getString(resourceId, timeSequence); return mPrefContext.getString(normalResId, timeSequence); } }
tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java +66 −21 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.app.settings.SettingsEnums; import android.content.ContentValues; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; Loading Loading @@ -235,73 +236,117 @@ public final class BatteryUsageBreakdownControllerTest { } @Test public void setPreferenceSummary_setNullContentIfTotalUsageTimeIsZero() { public void setPreferenceSummary_systemEntryTotalUsageTimeIsZero_emptySummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*isSystem=*/ true, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary()).isNull(); assertThat(pref.getSummary().toString().isEmpty()).isTrue(); } @Test public void setPreferenceSummary_setBackgroundUsageTimeOnly() { public void setPreferenceSummary_systemEntryTotalUsageTimeLessThanAMinute_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS)); assertThat(pref.getSummary().toString()).isEqualTo("Background: 1 min"); /*isSystem=*/ true, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a min"); } @Test public void setPreferenceSummary_setTotalUsageTimeLessThanAMinute() { public void setPreferenceSummary_systemEntryTotalUsageTimeGreaterThanAMinute_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*foregroundUsageTimeInMs=*/ 100, /*backgroundUsageTimeInMs=*/ 200)); assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a min"); /*isSystem=*/ true, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS * 2, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary().toString()).isEqualTo("Total: 2 min"); } @Test public void setPreferenceSummary_setTotalTimeIfBackgroundTimeLessThanAMinute() { public void setPreferenceSummary_appEntryAllTimesAreZero_emptySummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS, /*backgroundUsageTimeInMs=*/ 200)); assertThat(pref.getSummary().toString()) .isEqualTo("Total: 1 min\nBackground: less than a min"); /*isSystem=*/ false, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary().toString().isEmpty()).isTrue(); } @Test public void setPreferenceSummary_setTotalAndBackgroundUsageTime() { public void setPreferenceSummary_appEntryBackgroundUsageTimeOnly_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS, /*isSystem=*/ false, /*screenOnTimeInMs=*/ 0, /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS)); assertThat(pref.getSummary().toString()).isEqualTo("Total: 2 min\nBackground: 1 min"); assertThat(pref.getSummary().toString()).isEqualTo("Background: 1 min"); } @Test public void setPreferenceSummary_appEntryScreenOnTimeOnly_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*isSystem=*/ false, /*screenOnTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS, /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ 0)); assertThat(pref.getSummary().toString()).isEqualTo("Screen time: 1 min"); } @Test public void setPreferenceSummary_appEntryAllTimesLessThanAMinute_expectedSummary() { final PowerGaugePreference pref = new PowerGaugePreference(mContext); pref.setSummary(PREF_SUMMARY); mBatteryUsageBreakdownController.setPreferenceSummary( pref, createBatteryDiffEntry( /*isSystem=*/ false, /*screenOnTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1, /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1, /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1)); assertThat(pref.getSummary().toString()).isEqualTo( "Screen time: less than a min\nBackground: less than a min"); } private BatteryDiffEntry createBatteryDiffEntry( private BatteryDiffEntry createBatteryDiffEntry(boolean isSystem, long screenOnTimeInMs, long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) { final ContentValues contentValues = new ContentValues(); contentValues.put(BatteryHistEntry.KEY_CONSUMER_TYPE, Integer.valueOf( isSystem ? ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY : ConvertUtils.CONSUMER_TYPE_UID_BATTERY)); contentValues.put(BatteryHistEntry.KEY_USER_ID, Integer.valueOf(1001)); final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(contentValues); return new BatteryDiffEntry( mContext, foregroundUsageTimeInMs, backgroundUsageTimeInMs, /*screenOnTimeInMs=*/ 0, mContext, foregroundUsageTimeInMs, backgroundUsageTimeInMs, screenOnTimeInMs, /*consumePower=*/ 0, /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0, /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0, mBatteryHistEntry); /*cachedUsageConsumePower=*/ 0, batteryHistEntry); } private BatteryUsageBreakdownController createController() { Loading