ヘルスコネクトのデータ型は、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 以前)では、ゾーン オフセット情報を指定せずにヘルスコネクトに書き込むことができますが、可能な限り避ける必要があります。
時刻とゾーンの設定
データの書き込み時にゾーン オフセット情報を指定すると、ヘルスコネクトのデータを読み取った際にタイムゾーン情報が提供されます。ただし、ゾーン オフセットが指定されていない場合など、状況によってはタイムゾーン情報が提供されないことがあります。アプリは、読み取ったデータがどちらであっても、ユーザーの利用に支障のないように準備する必要があります。