Planifica y revisa los tipos de datos de Health Connect

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.