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

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

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

データ型のカテゴリ

ヘルスコネクトは、可能な限りバリエーションを広げるため、ほとんどの健康やフィットネスのアプリで使用されるデータ型をサポートしています。ヘルスコネクトは、健康とフィットネスのデータを包括的に表示し、保存できるようにすることを目的としています。これらのデータ型は次のカテゴリに分類されます。

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

データ型の形式

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

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

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

その他のデータ属性

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

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

ヘルスコネクト ID

ヘルスコネクトは、新しく挿入されたデータ オブジェクトに一意の識別子(UID)を割り当てます。これにより、データ オブジェクトを識別して他のオブジェクトと区別します。ヘルスコネクト ID は、読み取りリクエストや書き込みリクエストに役立ちます。ヘルスコネクト ID はクライアント ID と同一ではありません。クライアント アプリはクライアント ID を割り当てますが、ヘルスコネクトはヘルスコネクト ID のみを割り当てます。

ヘルスコネクト ID を使用する際は、次の点に注意してください

  • セッションには 1 つのヘルスコネクト 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
PlannedExercise android.permission.health.READ_PLANNED_EXERCISE
android.permission.health.WRITE_PLANNED_EXERCISE
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
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

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 ストアにアプリを公開する準備をする際に、アプリで使用するヘルスコネクトのデータ型へのアクセスを宣言します。そうしないと、特別な承認が必要なヘルスコネクトのデータ型にアプリがアクセスできないため、エラー メッセージが表示されることがあります。