リリース 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,
)
デバイスのタイプ
自動的かつ積極的に記録されたすべてのデータについて、デバイスタイプを指定する必要があります。manufacturer と model も指定できますが、省略可能です。詳しくは、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.0-alpha12 にアップグレードします。 
- ライブラリのビルド時に、新しいメタデータが必要な場所でコンパイル エラーがスローされます。これらのエラーを解決して移行を完了するには、次の変更が行われていることを確認します。 - Recordを構築する際は、記録方法を必ず指定する必要があります。これは、- Metadataで提供されるファクトリー メソッド(- Metadata.manualEntry()や- Metadata.activelyRecorded(device = Device(...))など)のいずれかを使用して行います。
- デバイスで記録されたデータについては、Device.TYPE_WATCHやDevice.TYPE_PHONEなどのデバイスタイプを指定する必要があります。
 
- アプリが拡張デバイスタイプを書き込む場合は、 - FEATURE_EXTENTED_DEVICE_TYPESの背後にゲートを設け、機能が利用できないデバイスで予期しない- TYPE_UNKNOWNが発生しないようにします。
