メタデータの要件

このガイドは、Health Connect バージョン 1.1.0-alpha12 以降に対応しています。

リリース 1.1.0-alpha12 以降にアップグレードするデベロッパー向けに、ヘルスコネクトのメタデータが変更されています。

ライブラリ情報

Google Maven Android Gradle プラグインのアーティファクト ID は、アップグレードする必要があるヘルスコネクト ライブラリを識別します。ヘルスコネクト SDK の依存関係をモジュール レベルの build.gradle ファイルに追加します。

dependencies {
  implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}

メタデータの変更

バージョン 1.1.0-alpha12 以降の Health Connect Jetpack SDK に、エコシステム内に有用な追加のメタデータが存在することを確認するための 2 つのメタデータ変更が導入されました。

録音方法を指定する

Record() 型のオブジェクトがインスタンス化されるたびに、メタデータの詳細を指定する必要があります。

ヘルスコネクトにデータを書き込む場合は、対応するファクトリー メソッドのいずれかを使用して Metadata をインスタンス化し、4 つの記録方法のうちの 1 つを指定する必要があります。

録画方法 説明
RECORDING_METHOD_UNKNOWN 録音方法を確認できません。
RECORDING_METHOD_MANUAL_ENTRY ユーザーがデータを入力しました。
RECORDING_METHOD_AUTOMATICALLY_RECORDED デバイスまたはセンサーがデータを記録した。
RECORDING_METHOD_ACTIVELY_RECORDED ユーザーがデバイスで録画セッションの開始または終了を開始した。

次に例を示します。

StepsRecord(
    startTime = Instant.ofEpochMilli(1234L),
    startZoneOffset = null,
    endTime = Instant.ofEpochMilli(1236L),
    endZoneOffset = null,
    metadata = Metadata.manualEntry(),
    Count = 10,
)

デバイスのタイプ

自動的かつ積極的に記録されたすべてのデータについて、デバイスタイプを指定する必要があります。manufacturermodel も指定できますが、省略可能です。詳しくは、Jetpack ドキュメントの Device クラスをご覧ください。現在のデバイスタイプは次のとおりです。

デバイスのタイプ 説明
TYPE_UNKNOWN デバイスの種類が不明です。
TYPE_WATCH デバイスのタイプはスマートウォッチです。
TYPE_PHONE デバイスの種類はスマートフォンです。
TYPE_SCALE デバイスタイプが体重計である。
TYPE_RING デバイスの種類はリングです。
TYPE_HEAD_MOUNTED デバイスのタイプはヘッドマウント デバイスです。
TYPE_FITNESS_BAND デバイスの種類はフィットネス バンドです。
TYPE_CHEST_STRAP デバイスの種類はチェスト ストラップです。
TYPE_SMART_DISPLAY デバイスタイプはスマートディスプレイです。

Device.type の値の中には、Health Connect の新しいバージョンでのみ使用できるものもあります。拡張デバイスタイプ機能が利用できない場合、これらのタイプは Device.TYPE_UNKNOWN として扱われます。

拡張デバイスタイプ 説明
TYPE_CONSUMER_MEDICAL_DEVICE デバイスの種類は医療機器です。
TYPE_GLASSES デバイスタイプがスマート グラスまたはアイウェアである。
TYPE_HEARABLE デバイスの種類がヒアラブル デバイスである。
TYPE_FITNESS_MACHINE デバイスの種類は固定式マシンです。
TYPE_FITNESS_EQUIPMENT デバイスの種類はフィットネス機器です。
TYPE_PORTABLE_COMPUTER デバイスの種類はポータブル コンピュータです。
TYPE_METER デバイスタイプは測定メーターです。
ユーザーのデバイスがヘルスコネクトの拡張デバイスタイプをサポートしているかどうかを判断するには、クライアントで FEATURE_EXTENDED_DEVICE_TYPES の可用性を確認します。

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}
詳しくは、機能の提供状況を確認するをご覧ください。

可能な場合は、デバイスの種類に加えて、デバイスのメーカーとモデルも提供してください。次に例を示します。

private val TEST_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel Watch",
    type = Device.TYPE_WATCH
)

スニペットを更新しました

新しいメタデータ要件に準拠するために新しいスニペットが必要な場合は、ヘルスコネクト ガイドが更新されています。例については、データの書き込みページをご覧ください。

新しいメタデータ メソッド

メタデータを直接インスタンス化できなくなったため、ファクトリ メソッドのいずれかを使用してメタデータの新しいインスタンスを取得します。ファクトリー メソッドは、デバイスまたはセンサーを使用してデータを記録したときにデバイス情報が提供されたことを確認します。手動で入力したデータの場合、デバイス情報の提供は引き続き任意です。各関数には 3 つのシグネチャ バリアントがあります。

  • activelyRecorded

    • fun activelyRecorded(device: Device): Metadata.
    • fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun activelyRecordedWithId(id: String, device: Device): Metadata
  • autoRecorded

    • fun autoRecorded(device: Device): Metadata
    • fun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun autoRecordedWithId(id: String, device: Device): Metadata
  • manualEntry

    • fun manualEntry(device: Device? = null): Metadata
    • fun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun manualEntryWithId(id: String, device: Device? = null): Metadata
  • unknownRecordingMethod

    • fun unknownRecordingMethod(device: Device? = null): Metadata
    • fun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata

詳しくは、Android オープンソース プロジェクトをご覧ください。

テストデータ

テスト ライブラリMetadataTestHelper を使用して、想定されるメタデータ値をモックします。

private val TEST_METADATA =
    Metadata.unknownRecordingMethod(
        clientRecordId = "clientId",
        clientRecordVersion = 1L,
        device = Device(type = Device.TYPE_UNKNOWN),
    ).populatedWithTestValues(id = "test")

これは、レコードの挿入時にこれらの値を自動的に設定するヘルスコネクトの実装の動作をシミュレートします。

テスト ライブラリの場合は、このヘルスコネクト SDK の依存関係をモジュール レベルの build.gradle ファイルに追加する必要があります。

dependencies {
  testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}

ライブラリをアップグレードする

主な手順は次のとおりです。

  1. ライブラリを 1.1.0-alpha12 にアップグレードします。

  2. ライブラリのビルド時に、新しいメタデータが必要な場所でコンパイル エラーがスローされます。これらのエラーを解決して移行を完了するには、次の変更が行われていることを確認します。

    • Record を構築する際は、記録方法を必ず指定する必要があります。これは、Metadata で提供されるファクトリー メソッド(Metadata.manualEntry()Metadata.activelyRecorded(device = Device(...)) など)のいずれかを使用して行います。
    • デバイスで記録されたデータについては、Device.TYPE_WATCHDevice.TYPE_PHONE などのデバイスタイプを指定する必要があります。
  3. アプリが拡張デバイスタイプを書き込む場合は、FEATURE_EXTENTED_DEVICE_TYPES の背後にゲートを設け、機能が利用できないデバイスで予期しない TYPE_UNKNOWN が発生しないようにします。