OSDN Git Service

Add method to calculate last full charge time
authorjackqdyulei <jackqdyulei@google.com>
Thu, 25 May 2017 22:26:03 +0000 (15:26 -0700)
committerjackqdyulei <jackqdyulei@google.com>
Fri, 26 May 2017 20:21:42 +0000 (13:21 -0700)
Bug: 38481300
Test: RunSettingsRoboTests
Change-Id: Icd551921f263352eb01d0c6ada62d277c8699507

src/com/android/settings/fuelgauge/BatteryUtils.java
src/com/android/settings/fuelgauge/PowerUsageSummary.java
tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java

index 3d9dbb6..a3ff1f4 100644 (file)
@@ -27,6 +27,7 @@ import android.util.Log;
 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 @@ 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;
     }
index 8b4257b..0b21fc9 100644 (file)
@@ -41,7 +41,6 @@ import android.util.TypedValue;
 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 @@ public class PowerUsageSummary extends PowerUsageBase {
         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));
index 009a91c..495410d 100644 (file)
@@ -21,6 +21,7 @@ import android.os.Process;
 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 @@ public class BatteryUtilsTest {
     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 @@ public class BatteryUtilsTest {
     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 @@ 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);