Health Connect almacena y estructura los datos de salud y actividad física. También tiene en cuenta cómo se miden los diferentes tipos de datos. Estos tipos de datos incluyen mediciones de frecuencia cardíaca tomadas de inmediato, recuento de pasos a lo largo del tiempo y datos de sueño tomados en sesiones.
Es importante comprender primero qué tipos de datos y permisos ofrece Health Connect para que puedas planificar los requisitos de tu app. Con eso, debes revisar tus tipos de datos antes de poder finalizar los requisitos.
Categorías de tipos de datos
Health Connect admite tipos de datos que se usan en la mayoría de las apps de salud y fitness para proporcionar la mayor variedad posible. El objetivo de Health Connect es ofrecer una vista integral y el almacenamiento de datos de salud y fitness. Estos tipos de datos se dividen en las siguientes categorías:
- Actividad: Captura cualquier actividad que realice el usuario. Puede incluir actividades de salud y fitness, como correr y nadar.
- Medidas corporales: Captura datos comunes relacionados con el cuerpo, como el peso y la tasa metabólica basal del usuario.
- Seguimiento del ciclo: Registra los ciclos menstruales y los datos relacionados, como el resultado binario de una prueba de ovulación.
- Nutrición: Captura los tipos de datos de hidratación y nutrición. El primero representa cuánta agua consume un usuario en una sola toma. El último incluye campos opcionales, como calorías, azúcar y magnesio.
- Sueño: Captura los datos en intervalos relacionados con la duración y el tipo de sueño de un usuario.
- Datos vitales: Registra información esencial sobre la salud general del usuario. Incluye datos como la temperatura corporal, la glucemia, la presión arterial y la saturación de oxígeno en sangre.
Formato del tipo de datos
Los tipos de datos en Health Connect se almacenan en objetos que son subclases de Record
.
Para cada tipo de datos, hay campos asociados que son genéricos, como time
y zoneOffset
, o específicos, como title
, count
y percentage
.
Algunos campos usan tipos simples, como long, double o string, mientras que otros usan tipos complejos, como enumeraciones y clases, como Instant
y ZoneOffset
. Los atributos de estos campos pueden ser obligatorios o opcionales. Algunos atributos son de solo lectura y otros se limitan a un rango específico de valores.
Para obtener la lista completa de los tipos de datos disponibles y sus campos, consulta las clases en Jetpack.
Atributos de datos adicionales
Los datos de la API de Health Connect también incluyen atributos de metadatos que se describen en la siguiente lista:
- ID de Health Connect: A cada dato se le asigna un identificador único (UID) cuando lo creas. Esto es útil para operaciones de lectura y escritura estándar. Consulta ID de Health Connect para obtener más detalles.
- Hora de última modificación: Indica la marca de tiempo de la última instancia en la que un registro tiene una actualización. Se genera automáticamente en la primera creación del registro y al momento de cada actualización.
- Origen de los datos: Health Connect almacena información sobre la app de la que provienen los datos. Contiene el nombre del paquete de ese origen, que se agrega automáticamente al momento de la creación.
- Dispositivo: Health Connect almacena información sobre el dispositivo del que provienen los datos. Contiene el fabricante y el modelo de ese dispositivo, en el que proporcionas el valor de forma manual.
- ID de cliente: Health Connect proporciona IDs de cliente para que las apps cliente puedan consultar los datos con sus propios IDs, lo que ayuda con la resolución de conflictos y facilita la sincronización. Esto se suministra al registro de forma manual.
- Versión del registro del cliente: Junto con el ID de cliente, Health Connect proporciona un control de versiones para ayudar a realizar un seguimiento de los cambios durante la sincronización de datos. Esto se suministra al registro de forma manual.
- Método de grabación: Health Connect te permite comprender cómo se graban los datos. Estos métodos incluyen apps que registran datos de forma pasiva (automática) y usuarios que registran datos de forma activa o manual.
ID de Health Connect
Health Connect asigna identificadores únicos (UIDs) a los objetos de datos insertados recientemente, que los identifican y los distinguen de otros. Los IDs de Health Connect son útiles en las solicitudes de lectura o escritura. Los IDs de Health Connect no son iguales a los IDs de cliente. Una app cliente asigna IDs de cliente, mientras que Health Connect asigna exclusivamente IDs de Health Connect.
Ten en cuenta las siguientes notas cuando trabajes con IDs de Health Connect:
- Las sesiones tienen un solo ID de Health Connect, pero los datos dentro de ellas tienen sus propios IDs de Health Connect.
- Los IDs de Health Connect no están vinculados ni relacionados con marcas de tiempo.
- Es posible que algunos casos de uso requieran almacenar un ID de Health Connect específico durante un flujo de trabajo. Por ejemplo, se requiere un ID específico para recuperar y mostrarle al usuario la entrada de datos que acaba de registrar.
La hora en Health Connect
Todos los datos que se escriban en Health Connect deben especificar la información de desfase de zona. De esta manera, las apps pueden leer los datos para representarlos en hora civil. La hora civil es la hora local y relevante para el usuario, no necesariamente en la hora universal coordinada (UTC).
En muy pocas circunstancias, es posible que el desfase de zona no esté disponible. Cuando esto ocurre en Android 14 (nivel de API 34), Health Connect establece la compensación de zona según la zona horaria predeterminada del sistema del dispositivo. En Android 13 y versiones anteriores (nivel de API 33 y versiones anteriores), es posible escribir en Health Connect sin especificar información de desplazamiento de zona, lo que se debe evitar siempre que sea posible.
Configuración de la hora y la zona
Especificar la información de desfase de zona mientras se escriben datos permite contar con información de zona horaria cuando se leen datos en Health Connect. Sin embargo, podría no suceder en ciertas situaciones, como cuando no se proporciona el desfase de zona. Tu app debe estar preparada para manejar ambos tipos de datos de una manera que tenga sentido en tus circunstancias específicas.
Permisos
Antes de solicitar permisos, tu app debe declararlos en el manifiesto. Consulta las siguientes tablas para ver la asignación completa de los tipos de datos y sus permisos.
Para 1.0.0-alpha10 y versiones posteriores
Tipo de clase de registro | Declaración de permisos de lectura y escritura |
---|---|
ActiveCaloriesBurned |
android.permission.health.READ_ACTIVE_CALORIES_BURNED
android.permission.health.WRITE_ACTIVE_CALORIES_BURNED |
BasalBodyTemperature |
android.permission.health.READ_BASAL_BODY_TEMPERATURE
android.permission.health.WRITE_BASAL_BODY_TEMPERATURE |
BasalMetabolicRate |
android.permission.health.READ_BASAL_METABOLIC_RATE
android.permission.health.WRITE_BASAL_METABOLIC_RATE |
BloodGlucose |
android.permission.health.READ_BLOOD_GLUCOSE
android.permission.health.WRITE_BLOOD_GLUCOSE |
BloodPressure |
android.permission.health.READ_BLOOD_PRESSURE
android.permission.health.WRITE_BLOOD_PRESSURE |
BodyFat |
android.permission.health.READ_BODY_FAT
android.permission.health.WRITE_BODY_FAT |
BodyTemperature |
android.permission.health.READ_BODY_TEMPERATURE
android.permission.health.WRITE_BODY_TEMPERATURE |
BodyWaterMass |
android.permission.health.READ_BODY_WATER_MASS
android.permission.health.WRITE_BODY_WATER_MASS |
BoneMass |
android.permission.health.READ_BONE_MASS
android.permission.health.WRITE_BONE_MASS |
CervicalMucus |
android.permission.health.READ_CERVICAL_MUCUS
android.permission.health.WRITE_CERVICAL_MUCUS |
CyclingPedalingCadence |
android.permission.health.READ_EXERCISE
android.permission.health.WRITE_EXERCISE |
Distance |
android.permission.health.READ_DISTANCE
android.permission.health.WRITE_DISTANCE |
ElevationGained |
android.permission.health.READ_ELEVATION_GAINED
android.permission.health.WRITE_ELEVATION_GAINED |
ExerciseSession |
android.permission.health.READ_EXERCISE
android.permission.health.WRITE_EXERCISE |
FloorsClimbed |
android.permission.health.READ_FLOORS_CLIMBED
android.permission.health.WRITE_FLOORS_CLIMBED |
HeartRate |
android.permission.health.READ_HEART_RATE
android.permission.health.WRITE_HEART_RATE |
HeartRateVariabilityRmssd |
android.permission.health.READ_HEART_RATE_VARIABILITY
android.permission.health.WRITE_HEART_RATE_VARIABILITY |
Height |
android.permission.health.READ_HEIGHT
android.permission.health.WRITE_HEIGHT |
Hydration |
android.permission.health.READ_HYDRATION
android.permission.health.WRITE_HYDRATION |
IntermenstrualBleeding |
android.permission.health.READ_INTERMENSTRUAL_BLEEDING
android.permission.health.WRITE_INTERMENSTRUAL_BLEEDING |
LeanBodyMass |
android.permission.health.READ_LEAN_BODY_MASS
android.permission.health.WRITE_LEAN_BODY_MASS |
MenstruationFlow |
android.permission.health.READ_MENSTRUATION
android.permission.health.WRITE_MENSTRUATION |
MenstruationPeriod |
android.permission.health.READ_MENSTRUATION
android.permission.health.WRITE_MENSTRUATION |
Nutrition |
android.permission.health.READ_NUTRITION
android.permission.health.WRITE_NUTRITION |
OvulationTest |
android.permission.health.READ_OVULATION_TEST
android.permission.health.WRITE_OVULATION_TEST |
OxygenSaturation |
android.permission.health.READ_OXYGEN_SATURATION
android.permission.health.WRITE_OXYGEN_SATURATION |
PlannedExercise |
android.permission.health.READ_PLANNED_EXERCISE
android.permission.health.WRITE_PLANNED_EXERCISE |
Alimentación |
android.permission.health.READ_POWER
android.permission.health.WRITE_POWER |
RespiratoryRate |
android.permission.health.READ_RESPIRATORY_RATE
android.permission.health.WRITE_RESPIRATORY_RATE |
RestingHeartRate |
android.permission.health.READ_RESTING_HEART_RATE
android.permission.health.WRITE_RESTING_HEART_RATE |
SexualActivity |
android.permission.health.READ_SEXUAL_ACTIVITY
android.permission.health.WRITE_SEXUAL_ACTIVITY |
SkinTemperature |
androidx.health.permission.SkinTemperature.READ
androidx.health.permission.SkinTemperature.WRITE |
SleepSession |
android.permission.health.READ_SLEEP
android.permission.health.WRITE_SLEEP |
Speed |
android.permission.health.READ_SPEED
android.permission.health.WRITE_SPEED |
StepsCadence |
android.permission.health.READ_STEPS
android.permission.health.WRITE_STEPS |
Steps |
android.permission.health.READ_STEPS
android.permission.health.WRITE_STEPS |
TotalCaloriesBurned |
android.permission.health.READ_TOTAL_CALORIES_BURNED
android.permission.health.WRITE_TOTAL_CALORIES_BURNED |
Vo2Max |
android.permission.health.READ_VO2_MAX
android.permission.health.WRITE_VO2_MAX |
Weight |
android.permission.health.READ_WEIGHT
android.permission.health.WRITE_WEIGHT |
WheelchairPushes |
android.permission.health.READ_WHEELCHAIR_PUSHES
android.permission.health.WRITE_WHEELCHAIR_PUSHES |
Para 1.0.0-alpha09 y versiones anteriores
Tipo de clase de registro | Declaración de permisos de lectura y escritura |
---|---|
ActiveCaloriesBurned |
androidx.health.permission.ActiveCaloriesBurned.READ
androidx.health.permission.ActiveCaloriesBurned.WRITE |
BasalBodyTemperature |
androidx.health.permission.BasalBodyTemperature.READ
androidx.health.permission.BasalBodyTemperature.WRITE |
BasalMetabolicRate |
androidx.health.permission.BasalMetabolicRate.READ
androidx.health.permission.BasalMetabolicRate.WRITE |
BloodGlucose |
androidx.health.permission.BloodGlucose.READ
androidx.health.permission.BloodGlucose.WRITE |
BloodPressure |
androidx.health.permission.BloodPressure.READ
androidx.health.permission.BloodPressure.WRITE |
BodyFat |
androidx.health.permission.BodyFat.READ
androidx.health.permission.BodyFat.WRITE |
BodyTemperature |
androidx.health.permission.BodyTemperature.READ
androidx.health.permission.BodyTemperature.WRITE |
BodyWaterMass |
androidx.health.permission.BodyWaterMass.READ
androidx.health.permission.BodyWaterMass.WRITE |
BoneMass |
androidx.health.permission.BoneMass.READ
androidx.health.permission.BoneMass.WRITE |
CervicalMucus |
androidx.health.permission.CervicalMucus.READ
androidx.health.permission.CervicalMucus.WRITE |
CyclingPedalingCadence |
androidx.health.permission.CyclingPedalingCadence.READ
androidx.health.permission.CyclingPedalingCadence.WRITE |
Distance |
androidx.health.permission.Distance.READ
androidx.health.permission.Distance.WRITE |
ElevationGained |
androidx.health.permission.ElevationGained.READ
androidx.health.permission.ElevationGained.WRITE |
ExerciseSession |
androidx.health.permission.ExerciseSession.READ
androidx.health.permission.ExerciseSession.WRITE |
FloorsClimbed |
androidx.health.permission.FloorsClimbed.READ
androidx.health.permission.FloorsClimbed.WRITE |
HeartRate |
androidx.health.permission.HeartRate.READ
androidx.health.permission.HeartRate.WRITE |
HeartRateVariabilityRmssd |
androidx.health.permission.HeartRateVariabilityRmssd.READ
androidx.health.permission.HeartRateVariabilityRmssd.WRITE |
Height |
androidx.health.permission.Height.READ
androidx.health.permission.Height.WRITE |
Hydration |
androidx.health.permission.Hydration.READ
androidx.health.permission.Hydration.WRITE |
IntermenstrualBleeding |
androidx.health.permission.IntermenstrualBleeding.READ
androidx.health.permission.IntermenstrualBleeding.WRITE |
LeanBodyMass |
androidx.health.permission.LeanBodyMass.READ
androidx.health.permission.LeanBodyMass.WRITE |
MenstruationFlow |
androidx.health.permission.MenstruationFlow.READ
androidx.health.permission.MenstruationFlow.WRITE |
Nutrition |
androidx.health.permission.Nutrition.READ
androidx.health.permission.Nutrition.WRITE |
OvulationTest |
androidx.health.permission.OvulationTest.READ
androidx.health.permission.OvulationTest.WRITE |
OxygenSaturation |
androidx.health.permission.OxygenSaturation.READ
androidx.health.permission.OxygenSaturation.WRITE |
Power |
androidx.health.permission.Power.READ
androidx.health.permission.Power.WRITE |
RespiratoryRate |
androidx.health.permission.RespiratoryRate.READ
androidx.health.permission.RespiratoryRate.WRITE |
RestingHeartRate |
androidx.health.permission.RestingHeartRate.READ
androidx.health.permission.RestingHeartRate.WRITE |
SexualActivity |
androidx.health.permission.SexualActivity.READ
androidx.health.permission.SexualActivity.WRITE |
SleepSession |
androidx.health.permission.SleepSession.READ
androidx.health.permission.SleepSession.WRITE |
Speed |
androidx.health.permission.Speed.READ
androidx.health.permission.Speed.WRITE |
StepsCadence |
androidx.health.permission.StepsCadence.READ
androidx.health.permission.StepsCadence.WRITE |
Steps |
androidx.health.permission.Steps.READ
androidx.health.permission.Steps.WRITE |
TotalCaloriesBurned |
androidx.health.permission.TotalCaloriesBurned.READ
androidx.health.permission.TotalCaloriesBurned.WRITE |
Vo2Max |
androidx.health.permission.Vo2Max.READ
androidx.health.permission.Vo2Max.WRITE |
Weight |
androidx.health.permission.Weight.READ
androidx.health.permission.Weight.WRITE |
WheelchairPushes |
androidx.health.permission.WheelchairPushes.READ
androidx.health.permission.WheelchairPushes.WRITE |
Revisa tus tipos de datos y permisos
Ahora que tienes planificados los tipos de datos y los permisos, puedes implementarlos durante el desarrollo.
Cuando revises tu app antes de subirla a Play Store, verifica la lista de tipos de datos y permisos que requiere. Esto te permite declarar con precisión el uso de datos de tu app.
Cuando te prepares para publicar tu app en Play Store, declara el acceso a los tipos de datos de Health Connect que usa tu app. De lo contrario, es posible que se les muestre a los usuarios un mensaje de error en el que se indique que tu app no puede acceder a los tipos de datos de Health Connect porque requieren una aprobación especial.