Search in sources :

Example 51 with Anomaly

use of com.android.settings.fuelgauge.anomaly.Anomaly in project android_packages_apps_Settings by crdroidandroid.

the class BluetoothScanAnomalyDetector method detectAnomalies.

@Override
public List<Anomaly> detectAnomalies(BatteryStatsHelper batteryStatsHelper, String targetPackageName) {
    final List<BatterySipper> batterySippers = batteryStatsHelper.getUsageList();
    final List<Anomaly> anomalies = new ArrayList<>();
    final int targetUid = mBatteryUtils.getPackageUid(targetPackageName);
    final long elapsedRealtimeMs = SystemClock.elapsedRealtime();
    for (int i = 0, size = batterySippers.size(); i < size; i++) {
        final BatterySipper sipper = batterySippers.get(i);
        final BatteryStats.Uid uid = sipper.uidObj;
        if (uid == null || mBatteryUtils.shouldHideSipper(sipper) || (targetUid != BatteryUtils.UID_NULL && targetUid != uid.getUid())) {
            continue;
        }
        final long bluetoothTimeMs = getBluetoothUnoptimizedBgTimeMs(uid, elapsedRealtimeMs);
        if (bluetoothTimeMs > mBluetoothScanningThreshold) {
            final String packageName = mBatteryUtils.getPackageName(uid.getUid());
            final CharSequence displayName = Utils.getApplicationLabel(mContext, packageName);
            Anomaly anomaly = new Anomaly.Builder().setUid(uid.getUid()).setType(Anomaly.AnomalyType.BLUETOOTH_SCAN).setDisplayName(displayName).setPackageName(packageName).setBluetoothScanningTimeMs(bluetoothTimeMs).build();
            if (mAnomalyUtils.getAnomalyAction(anomaly).isActionActive(anomaly)) {
                anomalies.add(anomaly);
            }
        }
    }
    return anomalies;
}
Also used : BatterySipper(com.android.internal.os.BatterySipper) ArrayList(java.util.ArrayList) Anomaly(com.android.settings.fuelgauge.anomaly.Anomaly) BatteryStats(android.os.BatteryStats)

Example 52 with Anomaly

use of com.android.settings.fuelgauge.anomaly.Anomaly in project android_packages_apps_Settings by SudaMod.

the class BluetoothScanAnomalyDetectorTest method testDetectAnomalies_containsAnomaly_detectIt.

@Test
public void testDetectAnomalies_containsAnomaly_detectIt() {
    doReturn(-1).when(mBatteryUtils).getPackageUid(nullable(String.class));
    final Anomaly anomaly = createBluetoothAnomaly(ANOMALY_UID);
    final Anomaly targetAnomaly = createBluetoothAnomaly(TARGET_UID);
    List<Anomaly> mAnomalies = mBluetoothScanAnomalyDetector.detectAnomalies(mBatteryStatsHelper);
    assertThat(mAnomalies).containsExactly(anomaly, targetAnomaly);
}
Also used : Anomaly(com.android.settings.fuelgauge.anomaly.Anomaly) Test(org.junit.Test)

Example 53 with Anomaly

use of com.android.settings.fuelgauge.anomaly.Anomaly in project android_packages_apps_Settings by SudaMod.

the class WakeupAlarmAnomalyDetector method detectAnomalies.

@Override
public List<Anomaly> detectAnomalies(BatteryStatsHelper batteryStatsHelper, String targetPackageName) {
    final List<BatterySipper> batterySippers = batteryStatsHelper.getUsageList();
    final List<Anomaly> anomalies = new ArrayList<>();
    final double totalRunningHours = mBatteryUtils.calculateRunningTimeBasedOnStatsType(batteryStatsHelper, BatteryStats.STATS_SINCE_CHARGED) / (double) DateUtils.HOUR_IN_MILLIS;
    final int targetUid = mBatteryUtils.getPackageUid(targetPackageName);
    if (totalRunningHours >= 1) {
        for (int i = 0, size = batterySippers.size(); i < size; i++) {
            final BatterySipper sipper = batterySippers.get(i);
            final BatteryStats.Uid uid = sipper.uidObj;
            if (uid == null || mBatteryUtils.shouldHideSipper(sipper) || (targetUid != BatteryUtils.UID_NULL && targetUid != uid.getUid())) {
                continue;
            }
            final int wakeupAlarmCount = (int) (getWakeupAlarmCountFromUid(uid) / totalRunningHours);
            if (wakeupAlarmCount > mWakeupAlarmThreshold) {
                final String packageName = mBatteryUtils.getPackageName(uid.getUid());
                final CharSequence displayName = Utils.getApplicationLabel(mContext, packageName);
                final int targetSdkVersion = mBatteryUtils.getTargetSdkVersion(packageName);
                Anomaly anomaly = new Anomaly.Builder().setUid(uid.getUid()).setType(Anomaly.AnomalyType.WAKEUP_ALARM).setDisplayName(displayName).setPackageName(packageName).setTargetSdkVersion(targetSdkVersion).setBackgroundRestrictionEnabled(mBatteryUtils.isBackgroundRestrictionEnabled(targetSdkVersion, uid.getUid(), packageName)).setWakeupAlarmCount(wakeupAlarmCount).build();
                if (mAnomalyUtils.getAnomalyAction(anomaly).isActionActive(anomaly)) {
                    anomalies.add(anomaly);
                }
            }
        }
    }
    return anomalies;
}
Also used : BatterySipper(com.android.internal.os.BatterySipper) ArrayList(java.util.ArrayList) Anomaly(com.android.settings.fuelgauge.anomaly.Anomaly) BatteryStats(android.os.BatteryStats)

Example 54 with Anomaly

use of com.android.settings.fuelgauge.anomaly.Anomaly in project platform_packages_apps_Settings by BlissRoms.

the class PowerUsageAnomalyDetailsTest method setUp.

@Before
public void setUp() {
    MockitoAnnotations.initMocks(this);
    mContext = RuntimeEnvironment.application;
    mAbnormalListGroup = spy(new PreferenceCategory(mContext));
    mAnomalyList = new ArrayList<>();
    Anomaly anomaly1 = new Anomaly.Builder().setType(Anomaly.AnomalyType.WAKE_LOCK).setPackageName(PACKAGE_NAME_1).setDisplayName(NAME_APP_1).build();
    mAnomalyList.add(anomaly1);
    Anomaly anomaly2 = new Anomaly.Builder().setType(Anomaly.AnomalyType.WAKEUP_ALARM).setPackageName(PACKAGE_NAME_2).setDisplayName(NAME_APP_2).build();
    mAnomalyList.add(anomaly2);
    Anomaly anomaly3 = new Anomaly.Builder().setType(Anomaly.AnomalyType.BLUETOOTH_SCAN).setPackageName(PACKAGE_NAME_3).setDisplayName(NAME_APP_3).build();
    mAnomalyList.add(anomaly3);
    mFragment = spy(new PowerUsageAnomalyDetails());
    mFragment.mAbnormalListGroup = mAbnormalListGroup;
    mFragment.mAnomalies = mAnomalyList;
    mFragment.mBatteryUtils = new BatteryUtils(mContext);
    mFragment.mPackageManager = mPackageManager;
    mFragment.mIconDrawableFactory = mIconDrawableFactory;
    doReturn(mPreferenceManager).when(mFragment).getPreferenceManager();
    doReturn(mContext).when(mPreferenceManager).getContext();
}
Also used : PreferenceCategory(android.support.v7.preference.PreferenceCategory) Anomaly(com.android.settings.fuelgauge.anomaly.Anomaly) Before(org.junit.Before)

Example 55 with Anomaly

use of com.android.settings.fuelgauge.anomaly.Anomaly in project platform_packages_apps_Settings by BlissRoms.

the class PowerUsageSummaryTest method testUpdateAnomalySparseArray.

@Test
public void testUpdateAnomalySparseArray() {
    mFragment.mAnomalySparseArray = new SparseArray<>();
    final List<Anomaly> anomalies = new ArrayList<>();
    final Anomaly anomaly1 = new Anomaly.Builder().setUid(UID).build();
    final Anomaly anomaly2 = new Anomaly.Builder().setUid(UID).build();
    final Anomaly anomaly3 = new Anomaly.Builder().setUid(UID_2).build();
    anomalies.add(anomaly1);
    anomalies.add(anomaly2);
    anomalies.add(anomaly3);
    mFragment.updateAnomalySparseArray(anomalies);
    assertThat(mFragment.mAnomalySparseArray.get(UID)).containsExactly(anomaly1, anomaly2);
    assertThat(mFragment.mAnomalySparseArray.get(UID_2)).containsExactly(anomaly3);
}
Also used : ArrayList(java.util.ArrayList) Anomaly(com.android.settings.fuelgauge.anomaly.Anomaly) Test(org.junit.Test)

Aggregations

Anomaly (com.android.settings.fuelgauge.anomaly.Anomaly)60 ArrayList (java.util.ArrayList)24 BatteryStats (android.os.BatteryStats)18 BatterySipper (com.android.internal.os.BatterySipper)18 Test (org.junit.Test)18 AnomalyPreference (com.android.settings.fuelgauge.anomaly.AnomalyPreference)12 Drawable (android.graphics.drawable.Drawable)6 VisibleForTesting (android.support.annotation.VisibleForTesting)6 Preference (android.support.v7.preference.Preference)6 PreferenceCategory (android.support.v7.preference.PreferenceCategory)6 AnomalyDialogFragment (com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment)6 Before (org.junit.Before)6