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 la frecuencia cardíaca que se toman de inmediato, el recuento de pasos tomado a lo largo del tiempo y los 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. Dicho esto, debes revisar los tipos de datos antes de 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 actividad física. Estos tipos de datos se clasifican en las siguientes categorías:

  • Actividad: Captura cualquier actividad que realice el usuario. Puede incluir actividades de salud y fitness, como correr, nadar y dormir.
  • Medidas corporales: Captura datos comunes relacionados con el cuerpo, como el peso de un usuario y su tasa metabólica basal.
  • 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 bebida. 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 temperatura corporal, glucemia, presión arterial y saturación de oxígeno en sangre.

Formato del tipo de datos

Los tipos de datos de 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 los tipos largo, doble o string, mientras que otros usan tipos complejos, como enumeraciones y clases, como Instant y ZoneOffset. Los atributos de estos campos pueden ser opcionales o obligatorios. Algunos atributos son de solo lectura y otros se restringen a un rango de valores específico.

Para obtener la lista completa de los tipos de datos disponibles y sus campos, consulta las clases de 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 las 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 o en 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 cuando se crea.
  • Dispositivo: Health Connect almacena información sobre el dispositivo del que provienen los datos. Contiene el fabricante y el modelo de ese dispositivo, y 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 de 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 registran 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 (UID) a los objetos de datos insertados recientemente, que identifican los objetos de datos y los distinguen de otros. Los IDs de Health Connect son útiles en solicitudes de lectura o escritura. Los IDs de Health Connect no son idénticos 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 los 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.
  • Algunos casos de uso pueden requerir almacenar un ID de Health Connect específico durante un flujo de trabajo. Por ejemplo, se requiere un ID específico para recuperar y mostrar a un 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. Especificar el desplazamiento de zona permite que las apps lean 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, el desfase de zona puede no estar disponible. Cuando esto ocurre en Android 14 (nivel de API 34), Health Connect establece el desplazamiento de la zona en función de la zona horaria predeterminada del sistema del dispositivo. En Android 13 y versiones anteriores (nivel de API 33 y anteriores), es posible escribir en Health Connect sin especificar ninguna información de desfase de zona, lo que debe evitarse 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
Masa de agua corporal 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
VariabilityRmssd_Frecuencia_corazón android.permission.health.READ_HEART_RATE_VARIABILITY
android.permission.health.WRITE_HEART_RATE_VARIABILITY
Altura 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
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
SleepSession android.permission.health.READ_SLEEP
android.permission.health.WRITE_SLEEP
Velocidad android.permission.health.READ_SPEED
android.permission.health.WRITE_SPEED
StepsCadence android.permission.health.READ_STEPS
android.permission.health.WRITE_STEPS
Pasos 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
Masa de agua corporal 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
VariabilityRmssd_Frecuencia_corazón androidx.health.permission.HeartRateVariabilityRmssd.READ
androidx.health.permission.HeartRateVariabilityRmssd.WRITE
Altura 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
Alimentación 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
Velocidad androidx.health.permission.Speed.READ
androidx.health.permission.Speed.WRITE
StepsCadence androidx.health.permission.StepsCadence.READ
androidx.health.permission.StepsCadence.WRITE
Pasos 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 planificaste los tipos de datos y permisos, puedes implementarlos durante el desarrollo.

Cuando revises tu app antes de subirla a Play Store, vuelve a verificar la lista de tipos de datos y permisos que requiere tu app. Esto te permite declarar con precisión el uso de datos de tu app.

Después de publicar tu app en Play Store, es posible que aparezca un mensaje de error en el que se indique que la app no puede acceder a los tipos de datos de Health Connect porque requieren una aprobación especial. En ese caso, debes solicitar acceso al tipo de datos a través del Formulario de declaración para desarrolladores. Para obtener más información sobre este proceso, consulta Cómo solicitar acceso a los tipos de datos de Health Connect.