• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.fuelgauge.batterytip;
18 
19 import android.support.annotation.IntDef;
20 
21 import com.google.common.hash.HashFunction;
22 import com.google.common.hash.Hashing;
23 
24 import java.lang.annotation.Retention;
25 import java.lang.annotation.RetentionPolicy;
26 
27 /**
28  * This class provides all the configs needed if we want to use {@link android.app.StatsManager}
29  */
30 public class StatsManagerConfig {
31     /**
32      * The key that represents the anomaly config.
33      * This value is used in {@link android.app.StatsManager#addConfiguration(long, byte[])}
34      */
35     public static final long ANOMALY_CONFIG_KEY = 1;
36 
37     /**
38      * The key that represents subscriber, which is settings app.
39      */
40     public static final long SUBSCRIBER_ID = 1;
41 
42     @Retention(RetentionPolicy.SOURCE)
43     @IntDef({AnomalyType.NULL,
44             AnomalyType.UNKNOWN_REASON,
45             AnomalyType.EXCESSIVE_WAKELOCK_ALL_SCREEN_OFF,
46             AnomalyType.EXCESSIVE_WAKEUPS_IN_BACKGROUND,
47             AnomalyType.EXCESSIVE_UNOPTIMIZED_BLE_SCAN,
48             AnomalyType.EXCESSIVE_BACKGROUND_SERVICE,
49             AnomalyType.EXCESSIVE_WIFI_SCAN,
50             AnomalyType.EXCESSIVE_FLASH_WRITES,
51             AnomalyType.EXCESSIVE_MEMORY_IN_BACKGROUND,
52             AnomalyType.EXCESSIVE_DAVEY_RATE,
53             AnomalyType.EXCESSIVE_JANKY_FRAMES,
54             AnomalyType.SLOW_COLD_START_TIME,
55             AnomalyType.SLOW_HOT_START_TIME,
56             AnomalyType.SLOW_WARM_START_TIME,
57             AnomalyType.EXCESSIVE_BACKGROUND_SYNCS,
58             AnomalyType.EXCESSIVE_GPS_SCANS_IN_BACKGROUND,
59             AnomalyType.EXCESSIVE_JOB_SCHEDULING,
60             AnomalyType.EXCESSIVE_MOBILE_NETWORK_IN_BACKGROUND,
61             AnomalyType.EXCESSIVE_WIFI_LOCK_TIME,
62             AnomalyType.JOB_TIMED_OUT,
63             AnomalyType.LONG_UNOPTIMIZED_BLE_SCAN,
64             AnomalyType.BACKGROUND_ANR,
65             AnomalyType.BACKGROUND_CRASH_RATE,
66             AnomalyType.EXCESSIVE_ANR_LOOPING,
67             AnomalyType.EXCESSIVE_ANRS,
68             AnomalyType.EXCESSIVE_CRASH_RATE,
69             AnomalyType.EXCESSIVE_CRASH_LOOPING,
70             AnomalyType.NUMBER_OF_OPEN_FILES,
71     })
72     public @interface AnomalyType {
73         /**
74          * This represents an error condition in the anomaly detection.
75          */
76         int NULL = -1;
77 
78         /**
79          * The anomaly type does not match any other defined type.
80          */
81         int UNKNOWN_REASON = 0;
82 
83         /**
84          * The application held a partial (screen off) wake lock for a period of time that
85          * exceeded the threshold with the screen off when not charging.
86          */
87         int EXCESSIVE_WAKELOCK_ALL_SCREEN_OFF = 1;
88 
89         /**
90          * The application exceeded the maximum number of wakeups while in the background
91          * when not charging.
92          */
93         int EXCESSIVE_WAKEUPS_IN_BACKGROUND = 2;
94 
95         /**
96          * The application did unoptimized Bluetooth scans too frequently when not charging.
97          */
98         int EXCESSIVE_UNOPTIMIZED_BLE_SCAN = 3;
99 
100         /**
101          * The application ran in the background for a period of time that exceeded the
102          * threshold.
103          */
104         int EXCESSIVE_BACKGROUND_SERVICE = 4;
105 
106         /**
107          * The application exceeded the maximum number of wifi scans when not charging.
108          */
109         int EXCESSIVE_WIFI_SCAN = 5;
110 
111         /**
112          * The application exceed the maximum number of flash writes
113          */
114         int EXCESSIVE_FLASH_WRITES = 6;
115 
116         /**
117          * The application used more than the maximum memory, while not spending any time
118          * in the foreground.
119          */
120         int EXCESSIVE_MEMORY_IN_BACKGROUND = 7;
121 
122         /**
123          * The application exceeded the maximum percentage of frames with a render rate of
124          * greater than 700ms.
125          */
126         int EXCESSIVE_DAVEY_RATE = 8;
127 
128         /**
129          * The application exceeded the maximum percentage of frames with a render rate
130          * greater than 16ms.
131          */
132         int EXCESSIVE_JANKY_FRAMES = 9;
133 
134         /**
135          * The application exceeded the maximum cold start time - the app has not been
136          * launched since last system start, died or was killed.
137          */
138         int SLOW_COLD_START_TIME = 10;
139 
140         /**
141          * The application exceeded the maximum hot start time - the app and activity are
142          * already in memory.
143          */
144         int SLOW_HOT_START_TIME = 11;
145 
146         /**
147          * The application exceeded the maximum warm start time - the app was already in
148          * memory but the activity wasn’t created yet or was removed from memory.
149          */
150         int SLOW_WARM_START_TIME = 12;
151 
152         /**
153          * The application exceeded the maximum number of syncs while in the background.
154          */
155         int EXCESSIVE_BACKGROUND_SYNCS = 13;
156 
157         /**
158          * The application exceeded the maximum number of gps scans while in the background.
159          */
160         int EXCESSIVE_GPS_SCANS_IN_BACKGROUND = 14;
161 
162         /**
163          * The application scheduled more than the maximum number of jobs while not charging.
164          */
165         int EXCESSIVE_JOB_SCHEDULING = 15;
166 
167         /**
168          * The application exceeded the maximum amount of mobile network traffic while in
169          * the background.
170          */
171         int EXCESSIVE_MOBILE_NETWORK_IN_BACKGROUND = 16;
172 
173         /**
174          * The application held the WiFi lock for more than the maximum amount of time while
175          * not charging.
176          */
177         int EXCESSIVE_WIFI_LOCK_TIME = 17;
178 
179         /**
180          * The application scheduled a job that ran longer than the maximum amount of time.
181          */
182         int JOB_TIMED_OUT = 18;
183 
184         /**
185          * The application did an unoptimized Bluetooth scan that exceeded the maximum
186          * time while in the background.
187          */
188         int LONG_UNOPTIMIZED_BLE_SCAN = 19;
189 
190         /**
191          * The application exceeded the maximum ANR rate while in the background.
192          */
193         int BACKGROUND_ANR = 20;
194 
195         /**
196          * The application exceeded the maximum crash rate while in the background.
197          */
198         int BACKGROUND_CRASH_RATE = 21;
199 
200         /**
201          * The application exceeded the maximum ANR-looping rate.
202          */
203         int EXCESSIVE_ANR_LOOPING = 22;
204 
205         /**
206          * The application exceeded the maximum ANR rate.
207          */
208         int EXCESSIVE_ANRS = 23;
209 
210         /**
211          * The application exceeded the maximum crash rate.
212          */
213         int EXCESSIVE_CRASH_RATE = 24;
214 
215         /**
216          * The application exceeded the maximum crash-looping rate.
217          */
218         int EXCESSIVE_CRASH_LOOPING = 25;
219 
220         /**
221          * The application crashed because no more file descriptors were available.
222          */
223         int NUMBER_OF_OPEN_FILES = 26;
224     }
225 
226 }
227