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