헬스 커넥트 데이터 유형 계획 및 검토하기

헬스 커넥트는 건강 및 피트니스 데이터를 저장하고 구조화합니다. 또한 다양한 데이터 유형의 측정 방법도 설명합니다. 이러한 데이터 유형에는 즉시 측정한 심박수, 시간 경과에 따른 걸음 수, 세션에서 측정한 수면 데이터가 포함됩니다.

앱의 요구사항을 계획할 수 있도록 먼저 헬스 커넥트에서 제공하는 데이터 유형과 권한을 이해하는 것이 중요합니다. 따라서 요구사항을 완료하기 전에 데이터 유형을 검토해야 합니다.

데이터 유형 카테고리

헬스 커넥트는 최대한 다양성을 제공하기 위해 대부분의 건강 및 피트니스 앱에서 사용되는 데이터 유형을 지원합니다. 헬스 커넥트는 건강 및 피트니스 데이터를 포괄적으로 확인하고 저장하는 것을 목표로 합니다. 이러한 데이터 유형은 다음과 같은 카테고리로 분류됩니다.

  • 활동: 사용자가 하는 모든 활동을 캡처합니다. 달리기, 수영, 수면과 같은 건강 및 피트니스 활동을 포함할 수 있습니다.
  • 신체 측정: 사용자의 체중 및 기초 대사율과 같이 신체와 관련된 일반적인 데이터를 캡처합니다.
  • 월경 주기 추적: 월경 주기 및 관련 데이터 포인트(예: 배란 테스트의 바이너리 결과)를 캡처합니다.
  • 영양: 수분 섭취 및 영양 데이터 유형을 캡처합니다. 수분 섭취는 사용자가 한 번에 마신 물의 양을 나타냅니다. 영양 데이터 유형에는 칼로리, 당분, 마그네슘과 같은 선택적인 필드가 포함됩니다.
  • 수면: 사용자의 수면 시간 및 유형과 관련된 인터벌 데이터를 캡처합니다.
  • 활력 징후: 사용자의 일반적인 건강에 관한 필수 정보를 캡처합니다. 여기에는 체온, 혈당, 혈압, 혈중 산소 포화도 등의 데이터가 포함됩니다.

데이터 유형 형식

헬스 커넥트의 데이터 유형은 Record의 서브클래스인 객체에 저장됩니다.

각 데이터 유형에는 timezoneOffset와 같이 일반적이거나 title, count, percentage와 같이 특정한 관련 필드가 있습니다. 일부 필드는 간단한 유형(예: long, double, string)을 사용하는 반면, 다른 필드는 InstantZoneOffset와 같은 열거형 및 클래스와 같은 복잡한 유형을 사용합니다. 이 필드의 속성은 필수 또는 선택사항일 수 있습니다. 일부 속성은 읽기 전용이며, 일부 속성은 특정 값 범위로 고정됩니다.

사용할 수 있는 데이터 유형과 필드의 전체 목록은 Jetpack의 클래스를 참고하세요.

추가 데이터 속성

헬스 커넥트 API의 데이터에는 다음 목록에 설명된 메타데이터 속성도 포함됩니다.

  • 헬스 커넥트 ID: 생성 시 각 데이터 포인트에 고유 식별자(UID)가 할당됩니다. 이는 표준 읽기 및 쓰기 작업에 유용합니다. 자세한 내용은 헬스 커넥트 ID를 참고하세요.
  • 최종 수정 시간: 레코드가 업데이트된 마지막 인스턴스의 타임스탬프를 표시합니다. 레코드가 처음 생성될 때 또는 업데이트가 발생할 때마다 자동으로 생성됩니다.
  • 데이터 출처: 헬스 커넥트는 데이터의 출처인 앱에 관한 정보를 저장합니다. 여기에는 생성 시 자동으로 추가되는 해당 출처의 패키지 이름이 포함됩니다.
  • 기기: 헬스 커넥트는 데이터가 발생한 기기에 관한 정보를 저장합니다. 여기에는 개발자가 값을 수동으로 제공하는 해당 기기의 제조업체와 모델이 포함됩니다.
  • 클라이언트 ID: 헬스 커넥트는 클라이언트 앱이 자체 ID를 사용하여 데이터를 참조할 수 있도록 클라이언트 ID를 제공합니다. 이는 충돌 해결에 도움이 되고 동기화를 더 쉽게 해줍니다. 이는 기록에 수동으로 제공됩니다.
  • 클라이언트 레코드 버전: 헬스 커넥트는 클라이언트 ID와 함께 버전 관리를 제공하여 데이터 동기화 중에 변경사항을 추적하는 데 도움이 됩니다. 이는 기록에 수동으로 제공됩니다.
  • 기록 방법: 헬스 커넥트를 사용하면 데이터가 기록되는 방식을 파악할 수 있습니다. 이러한 방법에는 데이터를 수동 (자동)으로 기록하는 앱과 사용자가 능동적으로 또는 수동으로 데이터를 기록하는 앱이 포함됩니다.

헬스 커넥트 ID

헬스 커넥트는 새로 삽입된 데이터 객체에 고유 식별자 (UID)를 할당하여 데이터 객체를 식별하고 다른 객체와 구별합니다. 헬스 커넥트 ID는 읽기 또는 쓰기 요청에 유용합니다. 헬스 커넥트 ID는 클라이언트 ID와 다릅니다. 클라이언트 앱은 클라이언트 ID를 할당하지만 헬스 커넥트는 헬스 커넥트 ID만 할당합니다.

헬스 커넥트 ID로 작업할 때는 다음 사항에 유의하세요.

  • 세션에는 하나의 헬스 커넥트 ID가 있지만 세션 내의 데이터에는 자체 헬스 커넥트 ID가 있습니다.
  • 헬스 커넥트 ID는 타임스탬프와 연결되거나 관련되지 않습니다.
  • 일부 사용 사례에서는 워크플로 중에 특정 헬스 커넥트 ID를 저장해야 할 수 있습니다. 예를 들어 방금 로깅한 데이터 항목을 검색하여 사용자에게 표시하려면 특정 ID가 필요합니다.

헬스 커넥트에서의 시간

헬스 커넥트에 기록되는 모든 데이터는 시간대 오프셋 정보를 지정해야 합니다. 시간대 오프셋을 지정하면 앱이 데이터를 읽고 상용 시간으로 표시할 수 있습니다. 상용 시간은 사용자의 현지 시간으로, 협정세계시 (UTC)가 아닐 수도 있습니다.

드물지만 시간대 오프셋을 사용할 수 없는 경우도 있습니다. Android 14 (API 수준 34)에서 이 문제가 발생하면 헬스 커넥트는 기기의 시스템 기본 시간대를 기준으로 시간대 오프셋을 설정합니다. Android 13 이하 버전(API 수준 33 이하)에서는 영역 오프셋 정보를 지정하지 않고 헬스 커넥트에 쓸 수 있지만 가능하면 피해야 합니다.

시간 및 시간대 설정

데이터를 쓰는 동안 시간대 오프셋 정보를 지정하면 헬스 커넥트에서 데이터를 읽을 때 시간대 정보가 제공됩니다. 하지만 시간대 오프셋이 제공되지 않는 등의 특정 상황에서는 정보가 제공되지 않을 수도 있습니다. 앱은 특정 상황에 맞는 방식으로 두 종류의 데이터를 모두 처리할 준비가 되어 있어야 합니다.

권한

권한을 요청하기 전에 먼저 앱은 매니페스트에서 권한을 선언해야 합니다. 데이터 유형 및 관련 권한에 대한 전체 매핑은 다음 표를 참조하세요.

1.0.0-alpha10 이상

레코드 클래스 유형 읽기 및 쓰기 권한 선언
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
심박 변이도(Rmssd) 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
Power 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
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

1.0.0-alpha09 이하

레코드 클래스 유형 읽기 및 쓰기 권한 선언
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
심박 변이도(Rmssd) 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

데이터 유형 및 권한 검토

데이터 유형 및 권한을 계획했으므로 이제 개발 중에 구현할 수 있습니다.

Play 스토어에 앱을 업로드하기 전에 앱을 검토할 때 앱에 필요한 데이터 유형 및 권한 목록을 다시 확인합니다. 이를 통해 정확하게 앱의 데이터 사용을 선언할 수 있습니다.

Play 스토어에 앱을 게시하면 특별 승인이 필요하므로 앱에서 헬스 커넥트 데이터 유형에 액세스할 수 없다는 오류 메시지가 표시될 수 있습니다. 이 경우 개발자 선언 양식을 통해 데이터 유형 액세스를 요청해야 합니다. 이 프로세스에 관한 자세한 내용은 헬스 커넥트 데이터 유형 액세스 요청을 참고하세요.