blob: 153aa408698b5e49bbbe1edea85df143d35c643f [file] [log] [blame]
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.fuelgauge.batterytip;
import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/**
* This class provides all the configs needed if we want to use {@link android.app.StatsManager}
*/
public class StatsManagerConfig {
/**
* The key that represents the anomaly config.
* This value is used in {@link android.app.StatsManager#addConfig(long, byte[])}
*/
public static final long ANOMALY_CONFIG_KEY = 1;
/**
* The key that represents subscriber, which is settings app.
*/
public static final long SUBSCRIBER_ID = 1;
@Retention(RetentionPolicy.SOURCE)
@IntDef({AnomalyType.NULL,
AnomalyType.UNKNOWN_REASON,
AnomalyType.EXCESSIVE_WAKELOCK_ALL_SCREEN_OFF,
AnomalyType.EXCESSIVE_WAKEUPS_IN_BACKGROUND,
AnomalyType.EXCESSIVE_UNOPTIMIZED_BLE_SCAN,
AnomalyType.EXCESSIVE_BACKGROUND_SERVICE,
AnomalyType.EXCESSIVE_WIFI_SCAN,
AnomalyType.EXCESSIVE_FLASH_WRITES,
AnomalyType.EXCESSIVE_MEMORY_IN_BACKGROUND,
AnomalyType.EXCESSIVE_DAVEY_RATE,
AnomalyType.EXCESSIVE_JANKY_FRAMES,
AnomalyType.SLOW_COLD_START_TIME,
AnomalyType.SLOW_HOT_START_TIME,
AnomalyType.SLOW_WARM_START_TIME,
AnomalyType.EXCESSIVE_BACKGROUND_SYNCS,
AnomalyType.EXCESSIVE_GPS_SCANS_IN_BACKGROUND,
AnomalyType.EXCESSIVE_JOB_SCHEDULING,
AnomalyType.EXCESSIVE_MOBILE_NETWORK_IN_BACKGROUND,
AnomalyType.EXCESSIVE_WIFI_LOCK_TIME,
AnomalyType.JOB_TIMED_OUT,
AnomalyType.LONG_UNOPTIMIZED_BLE_SCAN,
AnomalyType.BACKGROUND_ANR,
AnomalyType.BACKGROUND_CRASH_RATE,
AnomalyType.EXCESSIVE_ANR_LOOPING,
AnomalyType.EXCESSIVE_ANRS,
AnomalyType.EXCESSIVE_CRASH_RATE,
AnomalyType.EXCESSIVE_CRASH_LOOPING,
AnomalyType.NUMBER_OF_OPEN_FILES,
AnomalyType.EXCESSIVE_CAMERA_USAGE_IN_BACKGROUND,
AnomalyType.EXCESSIVE_CONTACT_ACCESS,
AnomalyType.EXCESSIVE_AUDIO_IN_BACKGROUND,
AnomalyType.EXCESSIVE_CRASH_ANR_IN_BACKGROUND,
AnomalyType.BATTERY_DRAIN_FROM_UNUSED_APP,
})
public @interface AnomalyType {
/**
* This represents an error condition in the anomaly detection.
*/
int NULL = -1;
/**
* The anomaly type does not match any other defined type.
*/
int UNKNOWN_REASON = 0;
/**
* The application held a partial (screen off) wake lock for a period of time that
* exceeded the threshold with the screen off when not charging.
*/
int EXCESSIVE_WAKELOCK_ALL_SCREEN_OFF = 1;
/**
* The application exceeded the maximum number of wakeups while in the background
* when not charging.
*/
int EXCESSIVE_WAKEUPS_IN_BACKGROUND = 2;
/**
* The application did unoptimized Bluetooth scans too frequently when not charging.
*/
int EXCESSIVE_UNOPTIMIZED_BLE_SCAN = 3;
/**
* The application ran in the background for a period of time that exceeded the
* threshold.
*/
int EXCESSIVE_BACKGROUND_SERVICE = 4;
/**
* The application exceeded the maximum number of wifi scans when not charging.
*/
int EXCESSIVE_WIFI_SCAN = 5;
/**
* The application exceed the maximum number of flash writes
*/
int EXCESSIVE_FLASH_WRITES = 6;
/**
* The application used more than the maximum memory, while not spending any time
* in the foreground.
*/
int EXCESSIVE_MEMORY_IN_BACKGROUND = 7;
/**
* The application exceeded the maximum percentage of frames with a render rate of
* greater than 700ms.
*/
int EXCESSIVE_DAVEY_RATE = 8;
/**
* The application exceeded the maximum percentage of frames with a render rate
* greater than 16ms.
*/
int EXCESSIVE_JANKY_FRAMES = 9;
/**
* The application exceeded the maximum cold start time - the app has not been
* launched since last system start, died or was killed.
*/
int SLOW_COLD_START_TIME = 10;
/**
* The application exceeded the maximum hot start time - the app and activity are
* already in memory.
*/
int SLOW_HOT_START_TIME = 11;
/**
* The application exceeded the maximum warm start time - the app was already in
* memory but the activity wasn’t created yet or was removed from memory.
*/
int SLOW_WARM_START_TIME = 12;
/**
* The application exceeded the maximum number of syncs while in the background.
*/
int EXCESSIVE_BACKGROUND_SYNCS = 13;
/**
* The application exceeded the maximum number of gps scans while in the background.
*/
int EXCESSIVE_GPS_SCANS_IN_BACKGROUND = 14;
/**
* The application scheduled more than the maximum number of jobs while not charging.
*/
int EXCESSIVE_JOB_SCHEDULING = 15;
/**
* The application exceeded the maximum amount of mobile network traffic while in
* the background.
*/
int EXCESSIVE_MOBILE_NETWORK_IN_BACKGROUND = 16;
/**
* The application held the WiFi lock for more than the maximum amount of time while
* not charging.
*/
int EXCESSIVE_WIFI_LOCK_TIME = 17;
/**
* The application scheduled a job that ran longer than the maximum amount of time.
*/
int JOB_TIMED_OUT = 18;
/**
* The application did an unoptimized Bluetooth scan that exceeded the maximum
* time while in the background.
*/
int LONG_UNOPTIMIZED_BLE_SCAN = 19;
/**
* The application exceeded the maximum ANR rate while in the background.
*/
int BACKGROUND_ANR = 20;
/**
* The application exceeded the maximum crash rate while in the background.
*/
int BACKGROUND_CRASH_RATE = 21;
/**
* The application exceeded the maximum ANR-looping rate.
*/
int EXCESSIVE_ANR_LOOPING = 22;
/**
* The application exceeded the maximum ANR rate.
*/
int EXCESSIVE_ANRS = 23;
/**
* The application exceeded the maximum crash rate.
*/
int EXCESSIVE_CRASH_RATE = 24;
/**
* The application exceeded the maximum crash-looping rate.
*/
int EXCESSIVE_CRASH_LOOPING = 25;
/**
* The application crashed because no more file descriptors were available.
*/
int NUMBER_OF_OPEN_FILES = 26;
/**
* The application used an excessive amount of CPU while in a
* background process state.
*/
int EXCESSIVE_CPU_USAGE_IN_BACKGROUND = 27;
/**
* The application kept the camera open for an excessive amount
* of time while in a bckground process state.
*/
int EXCESSIVE_CAMERA_USAGE_IN_BACKGROUND = 28;
/**
* The application has accessed the contacts content provider an
* excessive amount.
*/
int EXCESSIVE_CONTACT_ACCESS = 29;
/**
* The application has played too much audio while in a background
* process state.
*/
int EXCESSIVE_AUDIO_IN_BACKGROUND = 30;
/**
* The application has crashed or ANRed too many times while in a
* background process state.
*/
int EXCESSIVE_CRASH_ANR_IN_BACKGROUND = 31;
/**
* An application which has not been used by the user recently
* was detected to cause an excessive amount of battery drain.
*/
int BATTERY_DRAIN_FROM_UNUSED_APP = 32;
}
}