Merge "Add method to calculate last full charge time" into oc-dev
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index 3d9dbb6..a3ff1f4 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -27,6 +27,7 @@
import android.util.SparseLongArray;
import com.android.internal.os.BatterySipper;
+import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.overlay.FeatureFactory;
import java.lang.annotation.Retention;
@@ -228,6 +229,19 @@
});
}
+ /**
+ * 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 8b4257b..0b21fc9 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -41,7 +41,6 @@
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;
@@ -415,11 +414,13 @@
final int dischargeAmount = USE_FAKE_DATA ? 5000
: stats != null ? stats.getDischargeAmount(mStatsType) : 0;
- final long runningTime = calculateRunningTimeBasedOnStatsType();
+ 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 009a91c..495410d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
@@ -21,6 +21,7 @@
import android.text.format.DateUtils;
import com.android.internal.os.BatterySipper;
+import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.testutils.FakeFeatureFactory;
@@ -68,6 +69,7 @@
private static final long TIME_STATE_BACKGROUND = 6000 * UNIT;
private static final long TIME_FOREGROUND_ACTIVITY_ZERO = 0;
private static final long TIME_FOREGROUND_ACTIVITY = 100 * DateUtils.MINUTE_IN_MILLIS;
+ private static final long TIME_SINCE_LAST_FULL_CHARGE_MS = 120 * 60 * 1000;
private static final int UID = 123;
private static final long TIME_EXPECTED_FOREGROUND = 1500;
@@ -100,6 +102,8 @@
private BatterySipper mCellBatterySipper;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext;
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private BatteryStatsHelper mBatteryStatsHelper;
private BatteryUtils mBatteryUtils;
private FakeFeatureFactory mFeatureFactory;
private PowerUsageFeatureProvider mProvider;
@@ -291,6 +295,16 @@
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);