Search in sources :

Example 16 with Anomaly

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

the class PowerUsageAnomalyDetails method onPreferenceTreeClick.

@Override
public boolean onPreferenceTreeClick(Preference preference) {
    if (preference instanceof AnomalyPreference) {
        AnomalyPreference anomalyPreference = (AnomalyPreference) preference;
        final Anomaly anomaly = anomalyPreference.getAnomaly();
        AnomalyDialogFragment dialogFragment = AnomalyDialogFragment.newInstance(anomaly, MetricsProto.MetricsEvent.FUELGAUGE_ANOMALY_DETAIL);
        dialogFragment.setTargetFragment(this, REQUEST_ANOMALY_ACTION);
        dialogFragment.show(getFragmentManager(), TAG);
        return true;
    }
    return super.onPreferenceTreeClick(preference);
}
Also used : AnomalyPreference(com.android.settings.fuelgauge.anomaly.AnomalyPreference) AnomalyDialogFragment(com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment) Anomaly(com.android.settings.fuelgauge.anomaly.Anomaly)

Example 17 with Anomaly

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

the class PowerUsageAnomalyDetails method refreshUi.

void refreshUi() {
    mAbnormalListGroup.removeAll();
    for (int i = 0, size = mAnomalies.size(); i < size; i++) {
        final Anomaly anomaly = mAnomalies.get(i);
        Preference pref = new AnomalyPreference(getPrefContext(), anomaly);
        pref.setSummary(mBatteryUtils.getSummaryResIdFromAnomalyType(anomaly.type));
        Drawable icon = getBadgedIcon(anomaly.packageName, UserHandle.getUserId(anomaly.uid));
        if (icon != null) {
            pref.setIcon(icon);
        }
        mAbnormalListGroup.addPreference(pref);
    }
}
Also used : AnomalyPreference(com.android.settings.fuelgauge.anomaly.AnomalyPreference) Preference(android.support.v7.preference.Preference) AnomalyPreference(com.android.settings.fuelgauge.anomaly.AnomalyPreference) Drawable(android.graphics.drawable.Drawable) Anomaly(com.android.settings.fuelgauge.anomaly.Anomaly)

Example 18 with Anomaly

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

the class PowerUsageSummary method updateAnomalySparseArray.

@VisibleForTesting
void updateAnomalySparseArray(List<Anomaly> anomalies) {
    mAnomalySparseArray.clear();
    for (int i = 0, size = anomalies.size(); i < size; i++) {
        final Anomaly anomaly = anomalies.get(i);
        if (mAnomalySparseArray.get(anomaly.uid) == null) {
            mAnomalySparseArray.append(anomaly.uid, new ArrayList<>());
        }
        mAnomalySparseArray.get(anomaly.uid).add(anomaly);
    }
}
Also used : Anomaly(com.android.settings.fuelgauge.anomaly.Anomaly) VisibleForTesting(android.support.annotation.VisibleForTesting)

Example 19 with Anomaly

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

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 20 with Anomaly

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

the class WakeLockAnomalyDetector method detectAnomalies.

@Override
public List<Anomaly> detectAnomalies(BatteryStatsHelper batteryStatsHelper, String targetPackageName) {
    final List<BatterySipper> batterySippers = batteryStatsHelper.getUsageList();
    final List<Anomaly> anomalies = new ArrayList<>();
    final long rawRealtime = SystemClock.elapsedRealtime();
    final int targetUid = mBatteryUtils.getPackageUid(targetPackageName);
    // Check the app one by one
    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 currentDurationMs = getCurrentDurationMs(uid, rawRealtime);
        final long backgroundDurationMs = getBackgroundTotalDurationMs(uid, rawRealtime);
        if (backgroundDurationMs > mWakeLockThresholdMs && currentDurationMs != 0) {
            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.WAKE_LOCK).setDisplayName(displayName).setPackageName(packageName).setWakeLockTimeMs(backgroundDurationMs).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)

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