ヘルスコネクトのデータ型を計画して確認する

ヘルスコネクトは、健康とフィットネスに関するデータを保存し、構造化します。また、さまざまなデータ型の測定方法も考慮します。これらのデータの種類には、すぐに測定された心拍数測定、時間の経過に伴って測定された歩数、セッションで測定された睡眠データが含まれます。

アプリの要件を計画するには、まずヘルスコネクトで提供されるデータの種類と権限を理解することが重要です。そのため、要件を確定する前にデータ型を確認する必要があります。

データ型のカテゴリ

ヘルスコネクトは、できるだけ多くの種類のデータを提供するために、ほとんどの健康&フィットネス アプリで使用されるデータ型をサポートしています。ヘルスコネクトは、健康とフィットネスのデータの包括的なビューと保存を提供することを目的としています。これらのデータ型は、次のカテゴリに分類されます。

  • アクティビティ: ユーザーが行ったアクティビティをキャプチャします。ランニングや水泳、睡眠などの健康とフィットネスに関するアクティビティが該当します。
  • 身体測定: ユーザーの体重や基礎代謝率など、身体に関連する一般的なデータをキャプチャします。
  • 月経周期の管理: 排卵検査のバイナリ結果など、月経周期および関連するデータポイントをキャプチャします。
  • 栄養: 水分摂取と栄養に関するデータ型をキャプチャします。前者は、ユーザーが 1 回の飲み物で消費する水の量を表します。後者には、カロリー、砂糖、マグネシウムなどのオプション フィールドがあります。
  • 睡眠: ユーザーの睡眠の長さと種類に関連するデータを継続的にキャプチャします。
  • 主な指標: ユーザーの健康全般に関する重要な情報をキャプチャします。体温、血糖、血圧、血中酸素飽和度などのデータが含まれます。

データ型の形式

ヘルスコネクトのデータ型は、Record のサブクラスであるオブジェクトに格納されます。

データ型ごとに、汎用フィールド(timezoneOffset など)と固有のフィールド(titlecountpercentage など)が関連付けられています。long、double、string などの単純な型を使用するフィールドもあれば、InstantZoneOffset などの列挙型やクラスなどの複雑な型を使用するフィールドもあります。これらのフィールドの属性は、必須または任意です。読み取り専用の属性もあれば、特定の値範囲に制限される属性もあります。

使用可能なデータ型とそのフィールドの完全なリストについては、Jetpack のクラスをご覧ください。

その他のデータ属性

Health Connect API のデータには、次のリストで説明されているメタデータ属性も含まれます。

  • ヘルスコネクト ID: 作成時に、各データポイントに一意の ID(UID)が割り当てられます。これは、標準の読み取り / 書き込みオペレーションに役立ちます。詳しくは、ヘルスコネクト ID をご覧ください。
  • 最終更新日時: レコードが最後に更新されたときのタイムスタンプ。レコードの初回作成時または更新時に自動的に生成されます。
  • データの生成元: ヘルスコネクトには、データの送信元のアプリに関する情報が保存されます。これにはそのオリジンのパッケージ名が含まれ、作成時に自動的に追加されます。
  • デバイス: ヘルスコネクトには、データソースのデバイスに関する情報が保存されます。これには、そのデバイスのメーカーとモデルが含まれ、値を手動で指定します。
  • クライアント ID: ヘルスコネクトでは、クライアント アプリが独自の ID を使用してデータを参照できるように、クライアント ID が用意されています。これにより、競合の解決や同期が容易になります。この情報は手動でレコードに入力します。
  • クライアント レコードのバージョン: ヘルスコネクトには、データ同期中の変更を追跡できるように、クライアント ID に加えてバージョニングも用意されています。この情報は手動でレコードに入力します。
  • 記録方法: ヘルスコネクトでは、データがどのように記録されているかを確認できます。これらの方法には、データをパッシブに(自動的に)記録するアプリと、ユーザーが能動的にまたは手動でデータを記録するアプリが含まれます。

ヘルスコネクト ID

ヘルスコネクトは、新しく挿入されたデータ オブジェクトに一意の識別子(UID)を割り当てます。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
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
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
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

データの種類と権限を確認する

データ型と権限について計画したら、開発中に実装できます。

Google Play ストアにアップロードする前にアプリを確認する際は、アプリに必要なデータの種類と権限のリストを再確認してください。これにより、アプリのデータ使用量を正確に宣言できます。

アプリを Google Play ストアに公開すると、特別な承認が必要なためアプリからヘルスコネクトのデータ型にアクセスできないというエラー メッセージが表示されることがあります。その場合は、デベロッパー申告フォームを使用してデータ型へのアクセスをリクエストする必要があります。このプロセスの詳細については、ヘルスコネクトのデータ型に対するアクセス権をリクエストするをご覧ください。