Search in sources :

Example 46 with BatterySipper

use of com.android.internal.os.BatterySipper in project android_packages_apps_Settings by DirtyUnicorns.

the class BatteryUtils method removeHiddenBatterySippers.

/**
 * Remove the {@link BatterySipper} that we should hide and smear the screen usage based on
 * foreground activity time.
 *
 * @param sippers sipper list that need to check and remove
 * @return the total power of the hidden items of {@link BatterySipper}
 * for proportional smearing
 */
public double removeHiddenBatterySippers(List<BatterySipper> sippers) {
    double proportionalSmearPowerMah = 0;
    BatterySipper screenSipper = null;
    for (int i = sippers.size() - 1; i >= 0; i--) {
        final BatterySipper sipper = sippers.get(i);
        if (shouldHideSipper(sipper)) {
            sippers.remove(i);
            if (sipper.drainType != BatterySipper.DrainType.OVERCOUNTED && sipper.drainType != BatterySipper.DrainType.SCREEN && sipper.drainType != BatterySipper.DrainType.UNACCOUNTED && sipper.drainType != BatterySipper.DrainType.BLUETOOTH && sipper.drainType != BatterySipper.DrainType.WIFI && sipper.drainType != BatterySipper.DrainType.IDLE) {
                // Don't add it if it is overcounted, unaccounted, wifi, bluetooth, or screen
                proportionalSmearPowerMah += sipper.totalPowerMah;
            }
        }
        if (sipper.drainType == BatterySipper.DrainType.SCREEN) {
            screenSipper = sipper;
        }
    }
    smearScreenBatterySipper(sippers, screenSipper);
    return proportionalSmearPowerMah;
}
Also used : BatterySipper(com.android.internal.os.BatterySipper)

Example 47 with BatterySipper

use of com.android.internal.os.BatterySipper in project android_packages_apps_Settings by DirtyUnicorns.

the class BatteryEntryTest method createSipperForSystem.

private BatterySipper createSipperForSystem() {
    BatterySipper sipper = new BatterySipper(DrainType.APP, new FakeUid(SYSTEM_UID), 0);
    sipper.packageWithHighestDrain = HIGH_DRAIN_PACKAGE;
    sipper.mPackages = SYSTEM_PACKAGES;
    return sipper;
}
Also used : BatterySipper(com.android.internal.os.BatterySipper)

Example 48 with BatterySipper

use of com.android.internal.os.BatterySipper in project android_packages_apps_Settings by DirtyUnicorns.

the class BatteryEntryTest method createSipperForApp.

private BatterySipper createSipperForApp() {
    BatterySipper sipper = new BatterySipper(DrainType.APP, new FakeUid(APP_UID), 0);
    sipper.packageWithHighestDrain = HIGH_DRAIN_PACKAGE;
    return sipper;
}
Also used : BatterySipper(com.android.internal.os.BatterySipper)

Example 49 with BatterySipper

use of com.android.internal.os.BatterySipper in project android_packages_apps_Settings by DirtyUnicorns.

the class BatteryUtilsTest method createTestSmearBatterySipper.

private BatterySipper createTestSmearBatterySipper(long topTime, double totalPowerMah, int uidCode, boolean isUidNull) {
    final BatterySipper sipper = mock(BatterySipper.class);
    sipper.drainType = BatterySipper.DrainType.APP;
    sipper.totalPowerMah = totalPowerMah;
    doReturn(uidCode).when(sipper).getUid();
    if (!isUidNull) {
        final BatteryStats.Uid uid = mock(BatteryStats.Uid.class, RETURNS_DEEP_STUBS);
        doReturn(topTime).when(mBatteryUtils).getProcessTimeMs(eq(BatteryUtils.StatusType.SCREEN_USAGE), eq(uid), anyInt());
        doReturn(uidCode).when(uid).getUid();
        sipper.uidObj = uid;
    }
    return sipper;
}
Also used : BatterySipper(com.android.internal.os.BatterySipper) BatteryStats(android.os.BatteryStats)

Example 50 with BatterySipper

use of com.android.internal.os.BatterySipper in project android_packages_apps_Settings by DirtyUnicorns.

the class BatteryUtilsTest method testSmearScreenBatterySipper.

@Test
public void testSmearScreenBatterySipper() {
    final BatterySipper sipperNull = createTestSmearBatterySipper(TIME_FOREGROUND_ZERO, BATTERY_APP_USAGE, 0, /* uid */
    true);
    final BatterySipper sipperBg = createTestSmearBatterySipper(TIME_FOREGROUND_ZERO, BATTERY_APP_USAGE, 1, /* uid */
    false);
    final BatterySipper sipperFg = createTestSmearBatterySipper(TIME_FOREGROUND, BATTERY_APP_USAGE, 2, /* uid */
    false);
    final BatterySipper sipperFg2 = createTestSmearBatterySipper(TIME_FOREGROUND, BATTERY_APP_USAGE, 3, /* uid */
    false);
    final List<BatterySipper> sippers = new ArrayList<>();
    sippers.add(sipperNull);
    sippers.add(sipperBg);
    sippers.add(sipperFg);
    sippers.add(sipperFg2);
    mBatteryUtils.smearScreenBatterySipper(sippers, mScreenBatterySipper);
    assertThat(sipperNull.totalPowerMah).isWithin(PRECISION).of(BATTERY_APP_USAGE);
    assertThat(sipperBg.totalPowerMah).isWithin(PRECISION).of(BATTERY_APP_USAGE);
    assertThat(sipperFg.totalPowerMah).isWithin(PRECISION).of(BATTERY_APP_USAGE + BATTERY_SCREEN_USAGE / 2);
    assertThat(sipperFg2.totalPowerMah).isWithin(PRECISION).of(BATTERY_APP_USAGE + BATTERY_SCREEN_USAGE / 2);
}
Also used : BatterySipper(com.android.internal.os.BatterySipper) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Aggregations

BatterySipper (com.android.internal.os.BatterySipper)148 ArrayList (java.util.ArrayList)60 BatteryStats (android.os.BatteryStats)48 VisibleForTesting (android.support.annotation.VisibleForTesting)30 Test (org.junit.Test)29 Anomaly (com.android.settings.fuelgauge.anomaly.Anomaly)18 HashMap (java.util.HashMap)16 UserHandle (android.os.UserHandle)15 ArrayMap (android.util.ArrayMap)10 BatteryStatsHelper (com.android.internal.os.BatteryStatsHelper)10 Map (java.util.Map)10 Drawable (android.graphics.drawable.Drawable)8 SparseArray (android.util.SparseArray)8 DrainType (com.android.internal.os.BatterySipper.DrainType)8 PowerProfile (com.android.internal.os.PowerProfile)8 Bundle (android.os.Bundle)7 SparseLongArray (android.util.SparseLongArray)7 Context (android.content.Context)6 TypedArray (android.content.res.TypedArray)6 PowerUsageData (com.android.settings.fuelgauge.PowerUsageAdvanced.PowerUsageData)6