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; 18 19 import static com.android.healthfitness.flags.Flags.FLAG_ACTIVITY_INTENSITY; 20 import static com.android.healthfitness.flags.Flags.FLAG_MINDFULNESS; 21 22 import android.annotation.FlaggedApi; 23 import android.annotation.IntDef; 24 import android.annotation.SystemApi; 25 import android.health.connect.datatypes.ActiveCaloriesBurnedRecord; 26 import android.health.connect.datatypes.BasalMetabolicRateRecord; 27 import android.health.connect.datatypes.DistanceRecord; 28 import android.health.connect.datatypes.ElevationGainedRecord; 29 import android.health.connect.datatypes.HeartRateRecord; 30 import android.health.connect.datatypes.MindfulnessSessionRecord; 31 import android.health.connect.datatypes.PowerRecord; 32 import android.health.connect.datatypes.Record; 33 import android.health.connect.datatypes.SpeedRecord; 34 import android.health.connect.datatypes.StepsRecord; 35 36 import java.lang.annotation.Retention; 37 import java.lang.annotation.RetentionPolicy; 38 39 /** 40 * Represents the permission category of a {@link Record}. A record can only belong to one and only 41 * one {@link HealthPermissionCategory} 42 * 43 * @hide 44 */ 45 @SystemApi 46 public class HealthPermissionCategory { 47 public static final int UNKNOWN = 0; 48 49 // ACTIVITY 50 /** Permission category for {@link ActiveCaloriesBurnedRecord} */ 51 public static final int ACTIVE_CALORIES_BURNED = 1; 52 53 /** Permission category for {@link android.health.connect.datatypes.ActivityIntensityRecord}. */ 54 @FlaggedApi(FLAG_ACTIVITY_INTENSITY) 55 public static final int ACTIVITY_INTENSITY = 42; 56 57 /** Permission category for {@link DistanceRecord} */ 58 public static final int DISTANCE = 2; 59 60 /** Permission category for {@link ElevationGainedRecord} */ 61 public static final int ELEVATION_GAINED = 3; 62 63 /** 64 * Permission category for {@link android.health.connect.datatypes.ExerciseSessionRecord} and 65 * {@link android.health.connect.datatypes.ExerciseLap} 66 */ 67 public static final int EXERCISE = 4; 68 69 /** Permission category for {FloorsClimbedRecord} */ 70 public static final int FLOORS_CLIMBED = 5; 71 72 /** Permission category for {@link StepsRecord} */ 73 public static final int STEPS = 6; 74 75 // BODY_MEASUREMENTS 76 /** Permission category for {@link BasalMetabolicRateRecord} */ 77 public static final int BASAL_METABOLIC_RATE = 9; 78 79 /** Permission category for {BodyFatRecord} */ 80 public static final int BODY_FAT = 10; 81 82 /** Permission category for {BodyWaterMassRecord} */ 83 public static final int BODY_WATER_MASS = 11; 84 85 /** Permission category for {BoneMassRecord} */ 86 public static final int BONE_MASS = 12; 87 88 /** Permission category for {HeightRecord} */ 89 public static final int HEIGHT = 13; 90 91 /** Permission category for {LeanBodyMassRecord} */ 92 public static final int LEAN_BODY_MASS = 15; 93 94 /** Permission category for {@link PowerRecord} */ 95 public static final int POWER = 36; 96 97 /** Permission category for {@link SpeedRecord} */ 98 public static final int SPEED = 37; 99 100 /** Permission category for {TotalCaloriesBurnedRecord} */ 101 public static final int TOTAL_CALORIES_BURNED = 35; 102 103 /** Permission category for {Vo2MaxRecord} */ 104 public static final int VO2_MAX = 7; 105 106 /** Permission category for {WeightRecord} */ 107 public static final int WEIGHT = 17; 108 109 /** Permission category for {WheelChairPushesRecord} */ 110 public static final int WHEELCHAIR_PUSHES = 8; 111 112 // CYCLE_TRACKING 113 /** Permission category for {CervicalMucusRecord} */ 114 public static final int CERVICAL_MUCUS = 18; 115 116 /** Permission category for {IntermenstrualBleedingRecord} */ 117 public static final int INTERMENSTRUAL_BLEEDING = 38; 118 119 /** Permission category for {MenstruationRecord} */ 120 public static final int MENSTRUATION = 20; 121 122 /** Permission category for {OvulationTestRecord} */ 123 public static final int OVULATION_TEST = 21; 124 125 /** Permission category for {SexualActivityRecord} */ 126 public static final int SEXUAL_ACTIVITY = 22; 127 128 // NUTRITION 129 /** Permission category for {HydrationRecord} */ 130 public static final int HYDRATION = 23; 131 132 /** Permission category for {NutritionRecord} */ 133 public static final int NUTRITION = 24; 134 135 // SLEEP 136 /** Permission category for {BasalBodyTemperatureRecord} */ 137 public static final int BASAL_BODY_TEMPERATURE = 33; 138 139 /** Permission category for {SleepRecord} */ 140 public static final int SLEEP = 25; 141 142 // VITALS 143 /** Permission category for {BloodGlucose} */ 144 public static final int BLOOD_GLUCOSE = 26; 145 146 /** Permission category for {BloodPressure} */ 147 public static final int BLOOD_PRESSURE = 27; 148 149 /** Permission category for {BodyTemperature} */ 150 public static final int BODY_TEMPERATURE = 28; 151 152 /** Permission category for {@link HeartRateRecord} */ 153 public static final int HEART_RATE = 29; 154 155 /** Permission category for {HeartRateVariability} */ 156 public static final int HEART_RATE_VARIABILITY = 30; 157 158 /** Permission category for {OxygenSaturation} */ 159 public static final int OXYGEN_SATURATION = 31; 160 161 /** Permission category for {RespiratoryRate} */ 162 public static final int RESPIRATORY_RATE = 32; 163 164 /** Permission category for {RestingHeartRate} */ 165 public static final int RESTING_HEART_RATE = 34; 166 167 /** Permission category for {SkinTemperature} */ 168 @FlaggedApi("com.android.healthconnect.flags.skin_temperature") 169 public static final int SKIN_TEMPERATURE = 39; 170 171 /** Permission category for {PlannedExerciseSession} */ 172 @FlaggedApi("com.android.healthconnect.flags.training_plans") 173 public static final int PLANNED_EXERCISE = 40; 174 175 // WELLNESS 176 /** Permission category for {@link MindfulnessSessionRecord}. */ 177 @FlaggedApi(FLAG_MINDFULNESS) 178 public static final int MINDFULNESS = 41; 179 HealthPermissionCategory()180 private HealthPermissionCategory() {} 181 182 /** @hide */ 183 @IntDef({ 184 UNKNOWN, 185 ACTIVE_CALORIES_BURNED, 186 ACTIVITY_INTENSITY, 187 DISTANCE, 188 ELEVATION_GAINED, 189 EXERCISE, 190 FLOORS_CLIMBED, 191 STEPS, 192 TOTAL_CALORIES_BURNED, 193 VO2_MAX, 194 WHEELCHAIR_PUSHES, 195 POWER, 196 SPEED, 197 BASAL_METABOLIC_RATE, 198 BODY_FAT, 199 BODY_WATER_MASS, 200 BONE_MASS, 201 HEIGHT, 202 LEAN_BODY_MASS, 203 WEIGHT, 204 CERVICAL_MUCUS, 205 MENSTRUATION, 206 OVULATION_TEST, 207 SEXUAL_ACTIVITY, 208 INTERMENSTRUAL_BLEEDING, 209 HYDRATION, 210 NUTRITION, 211 SLEEP, 212 BASAL_BODY_TEMPERATURE, 213 BLOOD_GLUCOSE, 214 BLOOD_PRESSURE, 215 BODY_TEMPERATURE, 216 HEART_RATE, 217 HEART_RATE_VARIABILITY, 218 OXYGEN_SATURATION, 219 RESPIRATORY_RATE, 220 RESTING_HEART_RATE, 221 SKIN_TEMPERATURE, 222 PLANNED_EXERCISE, 223 MINDFULNESS 224 }) 225 @Retention(RetentionPolicy.SOURCE) 226 public @interface Type {} 227 } 228