From de3bb7194d13fa033e78de5b4c3478fda5612f7e Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Thu, 25 May 2017 15:26:03 -0700 Subject: [PATCH] Add method to calculate last full charge time Bug: 38481300 Test: RunSettingsRoboTests Change-Id: Icd551921f263352eb01d0c6ada62d277c8699507 --- .../android/settings/fuelgauge/BatteryUtils.java | 13 +++++++++++++ .../settings/fuelgauge/PowerUsageSummary.java | 12 +++++------- .../settings/fuelgauge/BatteryUtilsTest.java | 10 ++++++++++ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index 194b2fbd46a..a9792afafe9 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -261,6 +261,19 @@ public class BatteryUtils { }); } + /** + * Calculate the time since last full charge, including the device off time + * + * @param batteryStatsHelper utility class that contains the data + * @param currentTimeMs current wall time + * @return time in millis + */ + public long calculateLastFullChargeTime(BatteryStatsHelper batteryStatsHelper, + long currentTimeMs) { + return currentTimeMs - batteryStatsHelper.getStats().getStartClockTime(); + + } + private long convertUsToMs(long timeUs) { return timeUs / 1000; } diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java index 275b78c4c89..adea9255294 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java +++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java @@ -24,7 +24,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.Loader; import android.content.res.TypedArray; -import android.content.res.Resources; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.net.Uri; @@ -42,13 +41,11 @@ import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.text.TextUtils; import android.text.format.DateUtils; -import android.text.format.Formatter; import android.util.Log; import android.util.SparseArray; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; -import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.os.BatterySipper; @@ -490,12 +487,13 @@ public class PowerUsageSummary extends PowerUsageBase implements BatteryInfo batteryInfo = getBatteryInfo(elapsedRealtimeUs, batteryBroadcast); mBatteryHeaderPreferenceController.updateHeaderPreference(batteryInfo); - final long runningTime = mBatteryUtils.calculateRunningTimeBasedOnStatsType(mStatsHelper, - mStatsType); + final long lastFullChargeTime = mBatteryUtils.calculateLastFullChargeTime(mStatsHelper, + System.currentTimeMillis()); updateScreenPreference(); - updateLastFullChargePreference(runningTime); + updateLastFullChargePreference(lastFullChargeTime); - final CharSequence timeSequence = Utils.formatElapsedTime(context, runningTime, false); + final CharSequence timeSequence = Utils.formatElapsedTime(context, lastFullChargeTime, + false); final int resId = mShowAllApps ? R.string.power_usage_list_summary_device : R.string.power_usage_list_summary; mAppListGroup.setTitle(TextUtils.expandTemplate(getText(resId), timeSequence)); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java index 45836adc2fe..eaa0bcaa96a 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java @@ -305,6 +305,16 @@ public class BatteryUtilsTest { mScreenBatterySipper); } + @Test + public void testCalculateLastFullChargeTime() { + final long currentTimeMs = System.currentTimeMillis(); + when(mBatteryStatsHelper.getStats().getStartClockTime()).thenReturn( + currentTimeMs - TIME_SINCE_LAST_FULL_CHARGE_MS); + + assertThat(mBatteryUtils.calculateLastFullChargeTime( + mBatteryStatsHelper, currentTimeMs)).isEqualTo(TIME_SINCE_LAST_FULL_CHARGE_MS); + } + private BatterySipper createTestSmearBatterySipper(long activityTime, double totalPowerMah, int uidCode, boolean isUidNull) { final BatterySipper sipper = mock(BatterySipper.class);