1 /** 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 * in compliance with the License. You may obtain a copy of the License at 6 * 7 * ``` 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * ``` 10 * 11 * Unless required by applicable law or agreed to in writing, software distributed under the License 12 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 13 * or implied. See the License for the specific language governing permissions and limitations under 14 * the License. 15 */ 16 package com.android.healthconnect.controller.shared 17 18 import android.health.connect.datatypes.ActiveCaloriesBurnedRecord 19 import android.health.connect.datatypes.BasalBodyTemperatureRecord 20 import android.health.connect.datatypes.BasalMetabolicRateRecord 21 import android.health.connect.datatypes.BloodGlucoseRecord 22 import android.health.connect.datatypes.BloodPressureRecord 23 import android.health.connect.datatypes.BodyFatRecord 24 import android.health.connect.datatypes.BodyTemperatureRecord 25 import android.health.connect.datatypes.BodyWaterMassRecord 26 import android.health.connect.datatypes.BoneMassRecord 27 import android.health.connect.datatypes.CervicalMucusRecord 28 import android.health.connect.datatypes.CyclingPedalingCadenceRecord 29 import android.health.connect.datatypes.DistanceRecord 30 import android.health.connect.datatypes.ElevationGainedRecord 31 import android.health.connect.datatypes.ExerciseSessionRecord 32 import android.health.connect.datatypes.FloorsClimbedRecord 33 import android.health.connect.datatypes.HeartRateRecord 34 import android.health.connect.datatypes.HeartRateVariabilityRmssdRecord 35 import android.health.connect.datatypes.HeightRecord 36 import android.health.connect.datatypes.HydrationRecord 37 import android.health.connect.datatypes.IntermenstrualBleedingRecord 38 import android.health.connect.datatypes.LeanBodyMassRecord 39 import android.health.connect.datatypes.MenstruationFlowRecord 40 import android.health.connect.datatypes.MenstruationPeriodRecord 41 import android.health.connect.datatypes.NutritionRecord 42 import android.health.connect.datatypes.OvulationTestRecord 43 import android.health.connect.datatypes.OxygenSaturationRecord 44 import android.health.connect.datatypes.PlannedExerciseSessionRecord 45 import android.health.connect.datatypes.PowerRecord 46 import android.health.connect.datatypes.Record 47 import android.health.connect.datatypes.RespiratoryRateRecord 48 import android.health.connect.datatypes.RestingHeartRateRecord 49 import android.health.connect.datatypes.SexualActivityRecord 50 import android.health.connect.datatypes.SkinTemperatureRecord 51 import android.health.connect.datatypes.SleepSessionRecord 52 import android.health.connect.datatypes.SpeedRecord 53 import android.health.connect.datatypes.StepsCadenceRecord 54 import android.health.connect.datatypes.StepsRecord 55 import android.health.connect.datatypes.TotalCaloriesBurnedRecord 56 import android.health.connect.datatypes.Vo2MaxRecord 57 import android.health.connect.datatypes.WeightRecord 58 import android.health.connect.datatypes.WheelchairPushesRecord 59 import com.android.healthconnect.controller.permissions.data.HealthPermissionType 60 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.ACTIVE_CALORIES_BURNED 61 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BASAL_BODY_TEMPERATURE 62 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BASAL_METABOLIC_RATE 63 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BLOOD_GLUCOSE 64 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BLOOD_PRESSURE 65 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BODY_FAT 66 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BODY_TEMPERATURE 67 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BODY_WATER_MASS 68 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.BONE_MASS 69 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.CERVICAL_MUCUS 70 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.DISTANCE 71 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.ELEVATION_GAINED 72 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.EXERCISE 73 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.FLOORS_CLIMBED 74 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.HEART_RATE 75 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.HEART_RATE_VARIABILITY 76 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.HEIGHT 77 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.HYDRATION 78 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.INTERMENSTRUAL_BLEEDING 79 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.LEAN_BODY_MASS 80 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.MENSTRUATION 81 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.NUTRITION 82 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.OVULATION_TEST 83 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.OXYGEN_SATURATION 84 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.PLANNED_EXERCISE 85 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.POWER 86 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.RESPIRATORY_RATE 87 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.RESTING_HEART_RATE 88 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.SEXUAL_ACTIVITY 89 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.SKIN_TEMPERATURE 90 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.SLEEP 91 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.SPEED 92 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.STEPS 93 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.TOTAL_CALORIES_BURNED 94 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.VO2_MAX 95 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.WEIGHT 96 import com.android.healthconnect.controller.permissions.data.HealthPermissionType.WHEELCHAIR_PUSHES 97 98 object HealthPermissionToDatatypeMapper { 99 private val map = 100 mapOf( 101 STEPS to listOf(StepsRecord::class.java, StepsCadenceRecord::class.java), 102 HEART_RATE to listOf(HeartRateRecord::class.java), 103 BASAL_METABOLIC_RATE to listOf(BasalMetabolicRateRecord::class.java), 104 SPEED to listOf(SpeedRecord::class.java), 105 DISTANCE to listOf(DistanceRecord::class.java), 106 POWER to listOf(PowerRecord::class.java), 107 ACTIVE_CALORIES_BURNED to listOf(ActiveCaloriesBurnedRecord::class.java), 108 TOTAL_CALORIES_BURNED to listOf(TotalCaloriesBurnedRecord::class.java), 109 HEIGHT to listOf(HeightRecord::class.java), 110 BODY_FAT to listOf(BodyFatRecord::class.java), 111 OXYGEN_SATURATION to listOf(OxygenSaturationRecord::class.java), 112 BODY_TEMPERATURE to listOf(BodyTemperatureRecord::class.java), 113 BASAL_BODY_TEMPERATURE to listOf(BasalBodyTemperatureRecord::class.java), 114 WHEELCHAIR_PUSHES to listOf(WheelchairPushesRecord::class.java), 115 RESTING_HEART_RATE to listOf(RestingHeartRateRecord::class.java), 116 RESPIRATORY_RATE to listOf(RespiratoryRateRecord::class.java), 117 HYDRATION to listOf(HydrationRecord::class.java), 118 FLOORS_CLIMBED to listOf(FloorsClimbedRecord::class.java), 119 ELEVATION_GAINED to listOf(ElevationGainedRecord::class.java), 120 BONE_MASS to listOf(BoneMassRecord::class.java), 121 LEAN_BODY_MASS to listOf(LeanBodyMassRecord::class.java), 122 WEIGHT to listOf(WeightRecord::class.java), 123 BLOOD_GLUCOSE to listOf(BloodGlucoseRecord::class.java), 124 NUTRITION to listOf(NutritionRecord::class.java), 125 BLOOD_PRESSURE to listOf(BloodPressureRecord::class.java), 126 VO2_MAX to listOf(Vo2MaxRecord::class.java), 127 EXERCISE to 128 listOf(ExerciseSessionRecord::class.java, CyclingPedalingCadenceRecord::class.java), 129 CERVICAL_MUCUS to listOf(CervicalMucusRecord::class.java), 130 SEXUAL_ACTIVITY to listOf(SexualActivityRecord::class.java), 131 OVULATION_TEST to listOf(OvulationTestRecord::class.java), 132 MENSTRUATION to 133 listOf(MenstruationFlowRecord::class.java, MenstruationPeriodRecord::class.java), 134 SLEEP to listOf(SleepSessionRecord::class.java), 135 BODY_WATER_MASS to listOf(BodyWaterMassRecord::class.java), 136 INTERMENSTRUAL_BLEEDING to listOf(IntermenstrualBleedingRecord::class.java), 137 HEART_RATE_VARIABILITY to listOf(HeartRateVariabilityRmssdRecord::class.java), 138 SKIN_TEMPERATURE to listOf(SkinTemperatureRecord::class.java), 139 PLANNED_EXERCISE to listOf(PlannedExerciseSessionRecord::class.java)) 140 getDataTypesnull141 fun getDataTypes(permissionType: HealthPermissionType): List<Class<out Record>> { 142 return map[permissionType].orEmpty() 143 } 144 getAllDataTypesnull145 fun getAllDataTypes(): Map<HealthPermissionType, List<Class<out Record>>> { 146 return map 147 } 148 } 149