• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 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 android.health.connect.datatypes;
18 
19 import static android.health.connect.datatypes.validation.ValidationUtils.validateIntDefValue;
20 
21 import android.annotation.IntDef;
22 import android.health.connect.HealthConnectManager;
23 
24 import java.lang.annotation.Retention;
25 import java.lang.annotation.RetentionPolicy;
26 import java.util.Set;
27 
28 /**
29  * Class to represent aggregation types in {@link Record} classes.
30  *
31  * <p>New objects of this class cannot be created.
32  *
33  * <p>Pre-created (defined in health {@link Record} types) objects of this class can be used to
34  * query and fetch aggregate results using aggregate APIs in {@link HealthConnectManager}
35  *
36  * @see HealthConnectManager#aggregate
37  */
38 public final class AggregationType<T> {
39     /** @hide */
40     public static final int MAX = 0;
41 
42     /** @hide */
43     public static final int MIN = 1;
44 
45     /** @hide */
46     public static final int AVG = 2;
47 
48     /** @hide */
49     public static final int SUM = 3;
50 
51     /** @hide */
52     public static final int COUNT = 4;
53 
54     @AggregationTypeIdentifier.Id private final int mId;
55     @AggregateOperationType private final int mType;
56     @RecordTypeIdentifier.RecordType private final int mApplicableRecordTypeId;
57     private final Class<T> mClass;
58 
59     /** @hide */
AggregationType( @ggregationTypeIdentifier.Id int id, @AggregateOperationType int type, @RecordTypeIdentifier.RecordType int applicableRecordTypeId, Class<T> templateClass)60     AggregationType(
61             @AggregationTypeIdentifier.Id int id,
62             @AggregateOperationType int type,
63             @RecordTypeIdentifier.RecordType int applicableRecordTypeId,
64             Class<T> templateClass) {
65         validateIntDefValue(
66                 id,
67                 AggregationTypeIdentifier.IDENTIFIER_VALID_TYPES,
68                 AggregationTypeIdentifier.class.getSimpleName());
69         validateIntDefValue(
70                 type, OPERATION_VALID_TYPES, AggregateOperationType.class.getSimpleName());
71 
72         mId = id;
73         mType = type;
74         mApplicableRecordTypeId = applicableRecordTypeId;
75         mClass = templateClass;
76     }
77 
78     /** @hide */
79     @AggregationTypeIdentifier.Id
getAggregationTypeIdentifier()80     public int getAggregationTypeIdentifier() {
81         return mId;
82     }
83 
84     /** @hide */
85     @RecordTypeIdentifier.RecordType
getApplicableRecordTypeId()86     public int getApplicableRecordTypeId() {
87         return mApplicableRecordTypeId;
88     }
89 
90     /** @hide */
91     @AggregateOperationType
getAggregateOperationType()92     public int getAggregateOperationType() {
93         return mType;
94     }
95 
96     /** @hide */
getAggregateResultClass()97     public Class<T> getAggregateResultClass() {
98         return mClass;
99     }
100 
101     /**
102      * Identifier for each aggregate type, as returned by {@link
103      * AggregationType#getAggregationTypeIdentifier()}. This is used at various places to determine
104      * operations to perform on aggregate type.
105      *
106      * @hide
107      */
108     public @interface AggregationTypeIdentifier {
109         int HEART_RATE_RECORD_BPM_MAX = 0;
110         int HEART_RATE_RECORD_BPM_MIN = 1;
111         int STEPS_RECORD_COUNT_TOTAL = 2;
112         int ACTIVE_CALORIES_BURNED_RECORD_ACTIVE_CALORIES_TOTAL = 3;
113         int BMR_RECORD_BASAL_CALORIES_TOTAL = 4;
114         int DISTANCE_RECORD_DISTANCE_TOTAL = 5;
115         int ELEVATION_RECORD_ELEVATION_GAINED_TOTAL = 6;
116         int HEART_RATE_RECORD_BPM_AVG = 7;
117         int POWER_RECORD_POWER_MIN = 8;
118         int POWER_RECORD_POWER_MAX = 9;
119         int POWER_RECORD_POWER_AVG = 10;
120         int HYDRATION_RECORD_VOLUME_TOTAL = 11;
121         int FLOORS_CLIMBED_RECORD_FLOORS_CLIMBED_TOTAL = 12;
122         int NUTRITION_RECORD_BIOTIN_TOTAL = 13;
123         int NUTRITION_RECORD_CAFFEINE_TOTAL = 14;
124         int NUTRITION_RECORD_CALCIUM_TOTAL = 15;
125         int NUTRITION_RECORD_CHLORIDE_TOTAL = 16;
126         int NUTRITION_RECORD_CHOLESTEROL_TOTAL = 17;
127         int NUTRITION_RECORD_CHROMIUM_TOTAL = 18;
128         int NUTRITION_RECORD_COPPER_TOTAL = 19;
129         int NUTRITION_RECORD_DIETARY_FIBER_TOTAL = 20;
130         int NUTRITION_RECORD_ENERGY_TOTAL = 21;
131         int NUTRITION_RECORD_ENERGY_FROM_FAT_TOTAL = 22;
132         int NUTRITION_RECORD_FOLATE_TOTAL = 23;
133         int NUTRITION_RECORD_FOLIC_ACID_TOTAL = 24;
134         int NUTRITION_RECORD_IODINE_TOTAL = 25;
135         int NUTRITION_RECORD_IRON_TOTAL = 26;
136         int NUTRITION_RECORD_MAGNESIUM_TOTAL = 27;
137         int NUTRITION_RECORD_MANGANESE_TOTAL = 28;
138         int NUTRITION_RECORD_MOLYBDENUM_TOTAL = 29;
139         int NUTRITION_RECORD_MONOUNSATURATED_FAT_TOTAL = 30;
140         int NUTRITION_RECORD_NIACIN_TOTAL = 31;
141         int NUTRITION_RECORD_PANTOTHENIC_ACID_TOTAL = 32;
142         int NUTRITION_RECORD_PHOSPHORUS_TOTAL = 33;
143         int NUTRITION_RECORD_POLYUNSATURATED_FAT_TOTAL = 34;
144         int NUTRITION_RECORD_POTASSIUM_TOTAL = 35;
145         int NUTRITION_RECORD_PROTEIN_TOTAL = 36;
146         int NUTRITION_RECORD_RIBOFLAVIN_TOTAL = 37;
147         int NUTRITION_RECORD_SATURATED_FAT_TOTAL = 38;
148         int NUTRITION_RECORD_SELENIUM_TOTAL = 39;
149         int NUTRITION_RECORD_SODIUM_TOTAL = 40;
150         int NUTRITION_RECORD_SUGAR_TOTAL = 41;
151         int NUTRITION_RECORD_THIAMIN_TOTAL = 42;
152         int NUTRITION_RECORD_TOTAL_CARBOHYDRATE_TOTAL = 43;
153         int NUTRITION_RECORD_TOTAL_FAT_TOTAL = 44;
154         int NUTRITION_RECORD_UNSATURATED_FAT_TOTAL = 45;
155         int NUTRITION_RECORD_VITAMIN_A_TOTAL = 46;
156         int NUTRITION_RECORD_VITAMIN_B12_TOTAL = 47;
157         int NUTRITION_RECORD_VITAMIN_B6_TOTAL = 48;
158         int NUTRITION_RECORD_VITAMIN_C_TOTAL = 49;
159         int NUTRITION_RECORD_VITAMIN_D_TOTAL = 50;
160         int NUTRITION_RECORD_VITAMIN_E_TOTAL = 51;
161         int NUTRITION_RECORD_VITAMIN_K_TOTAL = 52;
162         int NUTRITION_RECORD_ZINC_TOTAL = 53;
163         int HEIGHT_RECORD_HEIGHT_AVG = 54;
164         int HEIGHT_RECORD_HEIGHT_MAX = 55;
165         int HEIGHT_RECORD_HEIGHT_MIN = 56;
166         int RESTING_HEART_RATE_RECORD_BPM_MAX = 57;
167         int RESTING_HEART_RATE_RECORD_BPM_MIN = 58;
168         int TOTAL_CALORIES_BURNED_RECORD_ENERGY_TOTAL = 59;
169         int WEIGHT_RECORD_WEIGHT_AVG = 60;
170         int WEIGHT_RECORD_WEIGHT_MAX = 61;
171         int WEIGHT_RECORD_WEIGHT_MIN = 62;
172         int WHEEL_CHAIR_PUSHES_RECORD_COUNT_TOTAL = 63;
173         int HEART_RATE_RECORD_MEASUREMENTS_COUNT = 64;
174         int RESTING_HEART_RATE_RECORD_BPM_AVG = 65;
175         int SLEEP_SESSION_DURATION_TOTAL = 66;
176         int EXERCISE_SESSION_DURATION_TOTAL = 67;
177         int BLOOD_PRESSURE_RECORD_DIASTOLIC_AVG = 68;
178         int BLOOD_PRESSURE_RECORD_DIASTOLIC_MAX = 69;
179         int BLOOD_PRESSURE_RECORD_DIASTOLIC_MIN = 70;
180         int BLOOD_PRESSURE_RECORD_SYSTOLIC_AVG = 71;
181         int BLOOD_PRESSURE_RECORD_SYSTOLIC_MAX = 72;
182         int BLOOD_PRESSURE_RECORD_SYSTOLIC_MIN = 73;
183         int NUTRITION_RECORD_TRANS_FAT_TOTAL = 74;
184         int CYCLING_PEDALING_CADENCE_RECORD_RPM_AVG = 75;
185         int CYCLING_PEDALING_CADENCE_RECORD_RPM_MIN = 76;
186         int CYCLING_PEDALING_CADENCE_RECORD_RPM_MAX = 77;
187         int SPEED_RECORD_SPEED_AVG = 78;
188         int SPEED_RECORD_SPEED_MIN = 79;
189         int SPEED_RECORD_SPEED_MAX = 80;
190         int STEPS_CADENCE_RECORD_RATE_AVG = 81;
191         int STEPS_CADENCE_RECORD_RATE_MIN = 82;
192         int STEPS_CADENCE_RECORD_RATE_MAX = 83;
193         int SKIN_TEMPERATURE_RECORD_DELTA_AVG = 84;
194         int SKIN_TEMPERATURE_RECORD_DELTA_MIN = 85;
195         int SKIN_TEMPERATURE_RECORD_DELTA_MAX = 86;
196         int MINDFULNESS_SESSION_DURATION_TOTAL = 87;
197         int ACTIVITY_INTENSITY_MODERATE_DURATION_TOTAL = 88;
198         int ACTIVITY_INTENSITY_VIGOROUS_DURATION_TOTAL = 89;
199         int ACTIVITY_INTENSITY_DURATION_TOTAL = 90;
200         int ACTIVITY_INTENSITY_MINUTES_TOTAL = 91;
201 
202         /**
203          * Valid set of values for this IntDef. Update this set when add new type or deprecate
204          * existing type.
205          *
206          * @hide
207          */
208         Set<Integer> IDENTIFIER_VALID_TYPES =
209                 Set.of(
210                         HEART_RATE_RECORD_BPM_MAX,
211                         HEART_RATE_RECORD_BPM_MIN,
212                         STEPS_RECORD_COUNT_TOTAL,
213                         ACTIVE_CALORIES_BURNED_RECORD_ACTIVE_CALORIES_TOTAL,
214                         BMR_RECORD_BASAL_CALORIES_TOTAL,
215                         DISTANCE_RECORD_DISTANCE_TOTAL,
216                         ELEVATION_RECORD_ELEVATION_GAINED_TOTAL,
217                         HEART_RATE_RECORD_BPM_AVG,
218                         POWER_RECORD_POWER_MIN,
219                         POWER_RECORD_POWER_MAX,
220                         POWER_RECORD_POWER_AVG,
221                         HYDRATION_RECORD_VOLUME_TOTAL,
222                         FLOORS_CLIMBED_RECORD_FLOORS_CLIMBED_TOTAL,
223                         CYCLING_PEDALING_CADENCE_RECORD_RPM_AVG,
224                         CYCLING_PEDALING_CADENCE_RECORD_RPM_MIN,
225                         CYCLING_PEDALING_CADENCE_RECORD_RPM_MAX,
226                         NUTRITION_RECORD_BIOTIN_TOTAL,
227                         NUTRITION_RECORD_CAFFEINE_TOTAL,
228                         NUTRITION_RECORD_CALCIUM_TOTAL,
229                         NUTRITION_RECORD_CHLORIDE_TOTAL,
230                         NUTRITION_RECORD_CHOLESTEROL_TOTAL,
231                         NUTRITION_RECORD_CHROMIUM_TOTAL,
232                         NUTRITION_RECORD_COPPER_TOTAL,
233                         NUTRITION_RECORD_DIETARY_FIBER_TOTAL,
234                         NUTRITION_RECORD_ENERGY_TOTAL,
235                         NUTRITION_RECORD_ENERGY_FROM_FAT_TOTAL,
236                         NUTRITION_RECORD_FOLATE_TOTAL,
237                         NUTRITION_RECORD_FOLIC_ACID_TOTAL,
238                         NUTRITION_RECORD_IODINE_TOTAL,
239                         NUTRITION_RECORD_IRON_TOTAL,
240                         NUTRITION_RECORD_MAGNESIUM_TOTAL,
241                         NUTRITION_RECORD_MANGANESE_TOTAL,
242                         NUTRITION_RECORD_MOLYBDENUM_TOTAL,
243                         NUTRITION_RECORD_MONOUNSATURATED_FAT_TOTAL,
244                         NUTRITION_RECORD_NIACIN_TOTAL,
245                         NUTRITION_RECORD_PANTOTHENIC_ACID_TOTAL,
246                         NUTRITION_RECORD_PHOSPHORUS_TOTAL,
247                         NUTRITION_RECORD_POLYUNSATURATED_FAT_TOTAL,
248                         NUTRITION_RECORD_POTASSIUM_TOTAL,
249                         NUTRITION_RECORD_PROTEIN_TOTAL,
250                         NUTRITION_RECORD_RIBOFLAVIN_TOTAL,
251                         NUTRITION_RECORD_SATURATED_FAT_TOTAL,
252                         NUTRITION_RECORD_SELENIUM_TOTAL,
253                         NUTRITION_RECORD_SODIUM_TOTAL,
254                         NUTRITION_RECORD_SUGAR_TOTAL,
255                         NUTRITION_RECORD_THIAMIN_TOTAL,
256                         NUTRITION_RECORD_TOTAL_CARBOHYDRATE_TOTAL,
257                         NUTRITION_RECORD_TOTAL_FAT_TOTAL,
258                         NUTRITION_RECORD_TRANS_FAT_TOTAL,
259                         NUTRITION_RECORD_UNSATURATED_FAT_TOTAL,
260                         NUTRITION_RECORD_VITAMIN_A_TOTAL,
261                         NUTRITION_RECORD_VITAMIN_B12_TOTAL,
262                         NUTRITION_RECORD_VITAMIN_B6_TOTAL,
263                         NUTRITION_RECORD_VITAMIN_C_TOTAL,
264                         NUTRITION_RECORD_VITAMIN_D_TOTAL,
265                         NUTRITION_RECORD_VITAMIN_E_TOTAL,
266                         NUTRITION_RECORD_VITAMIN_K_TOTAL,
267                         NUTRITION_RECORD_ZINC_TOTAL,
268                         HEIGHT_RECORD_HEIGHT_AVG,
269                         HEIGHT_RECORD_HEIGHT_MAX,
270                         HEIGHT_RECORD_HEIGHT_MIN,
271                         RESTING_HEART_RATE_RECORD_BPM_MAX,
272                         RESTING_HEART_RATE_RECORD_BPM_MIN,
273                         TOTAL_CALORIES_BURNED_RECORD_ENERGY_TOTAL,
274                         WEIGHT_RECORD_WEIGHT_AVG,
275                         WEIGHT_RECORD_WEIGHT_MAX,
276                         WEIGHT_RECORD_WEIGHT_MIN,
277                         WHEEL_CHAIR_PUSHES_RECORD_COUNT_TOTAL,
278                         HEART_RATE_RECORD_MEASUREMENTS_COUNT,
279                         RESTING_HEART_RATE_RECORD_BPM_AVG,
280                         SLEEP_SESSION_DURATION_TOTAL,
281                         EXERCISE_SESSION_DURATION_TOTAL,
282                         BLOOD_PRESSURE_RECORD_DIASTOLIC_AVG,
283                         BLOOD_PRESSURE_RECORD_DIASTOLIC_MAX,
284                         BLOOD_PRESSURE_RECORD_DIASTOLIC_MIN,
285                         BLOOD_PRESSURE_RECORD_SYSTOLIC_AVG,
286                         BLOOD_PRESSURE_RECORD_SYSTOLIC_MAX,
287                         BLOOD_PRESSURE_RECORD_SYSTOLIC_MIN,
288                         SPEED_RECORD_SPEED_AVG,
289                         SPEED_RECORD_SPEED_MIN,
290                         SPEED_RECORD_SPEED_MAX,
291                         STEPS_CADENCE_RECORD_RATE_AVG,
292                         STEPS_CADENCE_RECORD_RATE_MIN,
293                         STEPS_CADENCE_RECORD_RATE_MAX,
294                         SKIN_TEMPERATURE_RECORD_DELTA_AVG,
295                         SKIN_TEMPERATURE_RECORD_DELTA_MIN,
296                         SKIN_TEMPERATURE_RECORD_DELTA_MAX,
297                         MINDFULNESS_SESSION_DURATION_TOTAL,
298                         ACTIVITY_INTENSITY_MODERATE_DURATION_TOTAL,
299                         ACTIVITY_INTENSITY_VIGOROUS_DURATION_TOTAL,
300                         ACTIVITY_INTENSITY_DURATION_TOTAL,
301                         ACTIVITY_INTENSITY_MINUTES_TOTAL);
302 
303         /** @hide */
304         @IntDef({
305             HEART_RATE_RECORD_BPM_MAX,
306             HEART_RATE_RECORD_BPM_MIN,
307             STEPS_RECORD_COUNT_TOTAL,
308             ACTIVE_CALORIES_BURNED_RECORD_ACTIVE_CALORIES_TOTAL,
309             BMR_RECORD_BASAL_CALORIES_TOTAL,
310             DISTANCE_RECORD_DISTANCE_TOTAL,
311             ELEVATION_RECORD_ELEVATION_GAINED_TOTAL,
312             HEART_RATE_RECORD_BPM_AVG,
313             POWER_RECORD_POWER_MIN,
314             POWER_RECORD_POWER_MAX,
315             POWER_RECORD_POWER_AVG,
316             HYDRATION_RECORD_VOLUME_TOTAL,
317             FLOORS_CLIMBED_RECORD_FLOORS_CLIMBED_TOTAL,
318             NUTRITION_RECORD_BIOTIN_TOTAL,
319             NUTRITION_RECORD_CAFFEINE_TOTAL,
320             NUTRITION_RECORD_CALCIUM_TOTAL,
321             NUTRITION_RECORD_CHLORIDE_TOTAL,
322             NUTRITION_RECORD_CHOLESTEROL_TOTAL,
323             NUTRITION_RECORD_CHROMIUM_TOTAL,
324             NUTRITION_RECORD_COPPER_TOTAL,
325             NUTRITION_RECORD_DIETARY_FIBER_TOTAL,
326             NUTRITION_RECORD_ENERGY_TOTAL,
327             NUTRITION_RECORD_ENERGY_FROM_FAT_TOTAL,
328             NUTRITION_RECORD_FOLATE_TOTAL,
329             NUTRITION_RECORD_FOLIC_ACID_TOTAL,
330             NUTRITION_RECORD_IODINE_TOTAL,
331             NUTRITION_RECORD_IRON_TOTAL,
332             NUTRITION_RECORD_MAGNESIUM_TOTAL,
333             NUTRITION_RECORD_MANGANESE_TOTAL,
334             NUTRITION_RECORD_MOLYBDENUM_TOTAL,
335             NUTRITION_RECORD_MONOUNSATURATED_FAT_TOTAL,
336             NUTRITION_RECORD_NIACIN_TOTAL,
337             NUTRITION_RECORD_PANTOTHENIC_ACID_TOTAL,
338             NUTRITION_RECORD_PHOSPHORUS_TOTAL,
339             NUTRITION_RECORD_POLYUNSATURATED_FAT_TOTAL,
340             NUTRITION_RECORD_POTASSIUM_TOTAL,
341             NUTRITION_RECORD_PROTEIN_TOTAL,
342             NUTRITION_RECORD_RIBOFLAVIN_TOTAL,
343             NUTRITION_RECORD_SATURATED_FAT_TOTAL,
344             NUTRITION_RECORD_SELENIUM_TOTAL,
345             NUTRITION_RECORD_SODIUM_TOTAL,
346             NUTRITION_RECORD_SUGAR_TOTAL,
347             NUTRITION_RECORD_THIAMIN_TOTAL,
348             NUTRITION_RECORD_TOTAL_CARBOHYDRATE_TOTAL,
349             NUTRITION_RECORD_TOTAL_FAT_TOTAL,
350             NUTRITION_RECORD_UNSATURATED_FAT_TOTAL,
351             NUTRITION_RECORD_VITAMIN_A_TOTAL,
352             NUTRITION_RECORD_VITAMIN_B12_TOTAL,
353             NUTRITION_RECORD_VITAMIN_B6_TOTAL,
354             NUTRITION_RECORD_VITAMIN_C_TOTAL,
355             NUTRITION_RECORD_VITAMIN_D_TOTAL,
356             NUTRITION_RECORD_VITAMIN_E_TOTAL,
357             NUTRITION_RECORD_VITAMIN_K_TOTAL,
358             NUTRITION_RECORD_ZINC_TOTAL,
359             HEIGHT_RECORD_HEIGHT_AVG,
360             HEIGHT_RECORD_HEIGHT_MAX,
361             HEIGHT_RECORD_HEIGHT_MIN,
362             RESTING_HEART_RATE_RECORD_BPM_MAX,
363             RESTING_HEART_RATE_RECORD_BPM_MIN,
364             TOTAL_CALORIES_BURNED_RECORD_ENERGY_TOTAL,
365             WEIGHT_RECORD_WEIGHT_AVG,
366             WEIGHT_RECORD_WEIGHT_MAX,
367             WEIGHT_RECORD_WEIGHT_MIN,
368             WHEEL_CHAIR_PUSHES_RECORD_COUNT_TOTAL,
369             HEART_RATE_RECORD_MEASUREMENTS_COUNT,
370             RESTING_HEART_RATE_RECORD_BPM_AVG,
371             SLEEP_SESSION_DURATION_TOTAL,
372             EXERCISE_SESSION_DURATION_TOTAL,
373             NUTRITION_RECORD_TRANS_FAT_TOTAL,
374             CYCLING_PEDALING_CADENCE_RECORD_RPM_AVG,
375             CYCLING_PEDALING_CADENCE_RECORD_RPM_MIN,
376             CYCLING_PEDALING_CADENCE_RECORD_RPM_MAX,
377             BLOOD_PRESSURE_RECORD_DIASTOLIC_AVG,
378             BLOOD_PRESSURE_RECORD_DIASTOLIC_MAX,
379             BLOOD_PRESSURE_RECORD_DIASTOLIC_MIN,
380             BLOOD_PRESSURE_RECORD_SYSTOLIC_AVG,
381             BLOOD_PRESSURE_RECORD_SYSTOLIC_MAX,
382             BLOOD_PRESSURE_RECORD_SYSTOLIC_MIN,
383             SPEED_RECORD_SPEED_AVG,
384             SPEED_RECORD_SPEED_MIN,
385             SPEED_RECORD_SPEED_MAX,
386             STEPS_CADENCE_RECORD_RATE_AVG,
387             STEPS_CADENCE_RECORD_RATE_MIN,
388             STEPS_CADENCE_RECORD_RATE_MAX,
389             SKIN_TEMPERATURE_RECORD_DELTA_AVG,
390             SKIN_TEMPERATURE_RECORD_DELTA_MIN,
391             SKIN_TEMPERATURE_RECORD_DELTA_MAX,
392             MINDFULNESS_SESSION_DURATION_TOTAL,
393             ACTIVITY_INTENSITY_MODERATE_DURATION_TOTAL,
394             ACTIVITY_INTENSITY_VIGOROUS_DURATION_TOTAL,
395             ACTIVITY_INTENSITY_DURATION_TOTAL,
396             ACTIVITY_INTENSITY_MINUTES_TOTAL
397         })
398         @Retention(RetentionPolicy.SOURCE)
399         @interface Id {}
400     }
401 
402     /**
403      * Valid set of values for this IntDef. Update this set when add new type or deprecate existing
404      * type.
405      *
406      * @hide
407      */
408     public static final Set<Integer> OPERATION_VALID_TYPES = Set.of(MAX, MIN, AVG, SUM, COUNT);
409 
410     /** @hide */
411     @IntDef({MAX, MIN, AVG, SUM, COUNT})
412     @Retention(RetentionPolicy.SOURCE)
413     public @interface AggregateOperationType {}
414 }
415