| /* |
| * 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; |
| } |
| |
| } |