ヘルスコネクトは、健康とフィットネスに関するデータを保存し、構造化します。また、さまざまなデータ型の測定方法も考慮します。これらのデータの種類には、すぐに測定された心拍数測定、時間の経過に伴って測定された歩数、セッションで測定された睡眠データが含まれます。
アプリの要件を計画するには、まずヘルスコネクトで提供されるデータの種類と権限を理解することが重要です。そのため、要件を確定する前にデータ型を確認する必要があります。
データ型のカテゴリ
ヘルスコネクトは、できるだけ多くの種類のデータを提供するために、ほとんどの健康&フィットネス アプリで使用されるデータ型をサポートしています。ヘルスコネクトは、健康とフィットネスのデータの包括的なビューと保存を提供することを目的としています。これらのデータ型は、次のカテゴリに分類されます。
- アクティビティ: ユーザーが行ったアクティビティをキャプチャします。ランニングや水泳、睡眠などの健康とフィットネスに関するアクティビティが該当します。
- 身体測定: ユーザーの体重や基礎代謝率など、身体に関連する一般的なデータをキャプチャします。
- 月経周期の管理: 排卵検査のバイナリ結果など、月経周期および関連するデータポイントをキャプチャします。
- 栄養: 水分摂取と栄養に関するデータ型をキャプチャします。前者は、ユーザーが 1 回の飲み物で消費する水の量を表します。後者には、カロリー、砂糖、マグネシウムなどのオプション フィールドがあります。
- 睡眠: ユーザーの睡眠の長さと種類に関連するデータを継続的にキャプチャします。
- 主な指標: ユーザーの健康全般に関する重要な情報をキャプチャします。体温、血糖、血圧、血中酸素飽和度などのデータが含まれます。
データ型の形式
ヘルスコネクトのデータ型は、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)を割り当てます。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 ストアに公開すると、特別な承認が必要なためアプリからヘルスコネクトのデータ型にアクセスできないというエラー メッセージが表示されることがあります。その場合は、デベロッパー申告フォームを使用してデータ型へのアクセスをリクエストする必要があります。このプロセスの詳細については、ヘルスコネクトのデータ型に対するアクセス権をリクエストするをご覧ください。