Merge "Add method to calculate last full charge time" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-06-01 18:55:53 +00:00
committed by Android (Google) Code Review
3 changed files with 33 additions and 4 deletions

View File

@@ -27,6 +27,7 @@ import android.util.Log;
import android.util.SparseLongArray; import android.util.SparseLongArray;
import com.android.internal.os.BatterySipper; import com.android.internal.os.BatterySipper;
import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import java.lang.annotation.Retention; 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) { private long convertUsToMs(long timeUs) {
return timeUs / 1000; return timeUs / 1000;
} }

View File

@@ -41,7 +41,6 @@ import android.util.TypedValue;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.os.BatterySipper; import com.android.internal.os.BatterySipper;
@@ -415,11 +414,13 @@ public class PowerUsageSummary extends PowerUsageBase {
final int dischargeAmount = USE_FAKE_DATA ? 5000 final int dischargeAmount = USE_FAKE_DATA ? 5000
: stats != null ? stats.getDischargeAmount(mStatsType) : 0; : stats != null ? stats.getDischargeAmount(mStatsType) : 0;
final long runningTime = calculateRunningTimeBasedOnStatsType(); final long lastFullChargeTime = mBatteryUtils.calculateLastFullChargeTime(mStatsHelper,
System.currentTimeMillis());
updateScreenPreference(); 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 final int resId = mShowAllApps ? R.string.power_usage_list_summary_device
: R.string.power_usage_list_summary; : R.string.power_usage_list_summary;
mAppListGroup.setTitle(TextUtils.expandTemplate(getText(resId), timeSequence)); mAppListGroup.setTitle(TextUtils.expandTemplate(getText(resId), timeSequence));

View File

@@ -21,6 +21,7 @@ import android.os.Process;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import com.android.internal.os.BatterySipper; import com.android.internal.os.BatterySipper;
import com.android.internal.os.BatteryStatsHelper;
import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.testutils.FakeFeatureFactory; 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_STATE_BACKGROUND = 6000 * UNIT;
private static final long TIME_FOREGROUND_ACTIVITY_ZERO = 0; 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_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 int UID = 123;
private static final long TIME_EXPECTED_FOREGROUND = 1500; private static final long TIME_EXPECTED_FOREGROUND = 1500;
@@ -100,6 +102,8 @@ public class BatteryUtilsTest {
private BatterySipper mCellBatterySipper; private BatterySipper mCellBatterySipper;
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext; private Context mContext;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private BatteryStatsHelper mBatteryStatsHelper;
private BatteryUtils mBatteryUtils; private BatteryUtils mBatteryUtils;
private FakeFeatureFactory mFeatureFactory; private FakeFeatureFactory mFeatureFactory;
private PowerUsageFeatureProvider mProvider; private PowerUsageFeatureProvider mProvider;
@@ -291,6 +295,16 @@ public class BatteryUtilsTest {
mScreenBatterySipper); 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, private BatterySipper createTestSmearBatterySipper(long activityTime, double totalPowerMah,
int uidCode, boolean isUidNull) { int uidCode, boolean isUidNull) {
final BatterySipper sipper = mock(BatterySipper.class); final BatterySipper sipper = mock(BatterySipper.class);