ヘルスコネクトは、健康とフィットネスに関するデータを保存し、構造化します。また、さまざまな種類のデータの測定方法についても説明します。これらのデータ型には、すぐに測定された心拍数の測定値、経時的な歩数、セッションで取得された睡眠データが含まれます。
アプリの要件を計画できるように、まずヘルスコネクトで提供されるデータ型と権限を理解することが重要です。要件を確定するには、データ型を確認する必要があります。
データ型のカテゴリ
ヘルスコネクトは、可能な限りバリエーションを広げるため、ほとんどの健康やフィットネスのアプリで使用されるデータ型をサポートしています。ヘルスコネクトは、健康とフィットネスのデータを包括的に表示し、保存できるようにすることを目的としています。これらのデータ型は次のカテゴリに分類されます。
- アクティビティ: ユーザーが行ったアクティビティをキャプチャします。ランニングや水泳などの健康とフィットネスに関するアクティビティが該当します。
- 身体測定: 体重や基礎代謝率など、ユーザーの身体に関する一般的なデータをキャプチャします。
- 月経周期の管理: 排卵検査のバイナリ結果など、月経周期および関連するデータポイントをキャプチャします。
- 栄養: 水分摂取と栄養に関するデータ型をキャプチャします。前者は、ユーザーが一度に飲んだ水の量を表します。後者には、カロリー、糖分、マグネシウムなどのオプション フィールドがあります。
- 睡眠: ユーザーの睡眠の長さと種類に関連するデータを継続的にキャプチャします。
- 主な指標: ユーザーの健康全般に関する重要な情報をキャプチャします。体温、血糖値、血圧、血中酸素飽和度などのデータが含まれます。
データ型の形式
ヘルスコネクトのデータ型は、Record
のサブクラスであるオブジェクトに保存されます。
データ型ごとに、time
や zoneOffset
などの汎用フィールドまたは title
、count
、percentage
などの特定のフィールドが関連付けられています。一部のフィールドでは、long、double、string などの単純な型が使用されますが、他のフィールドでは、列挙型やクラス(Instant
や ZoneOffset
など)などの複雑な型が使用されます。これらのフィールドの属性は、必須または省略可能です。一部の属性は読み取り専用で、一部の属性は特定の値の範囲に制限されます。
使用可能なデータ型とそのフィールドの一覧については、Jetpack のクラスをご覧ください。
その他のデータ属性
Health Connect API のデータには、次のリストで説明されているメタデータ属性も含まれます。
- ヘルスコネクト ID: 作成時に、各データポイントに一意の 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 |
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 ストアに公開する準備をする際は、アプリで使用するヘルスコネクトのデータ型へのアクセスを申告してください。そうしないと、特別な承認が必要なヘルスコネクトのデータ型にアプリがアクセスできないため、エラー メッセージが表示されることがあります。