このガイドは、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()
型のオブジェクトがインスタンス化されるたびに、メタデータの詳細を指定する必要があります。
ヘルスコネクトにデータを書き込む際は、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,
)
デバイスのタイプ
自動的かつ積極的に記録されたすべてのデータについて、デバイスタイプを指定する必要があります。現在のデバイスタイプは次のとおりです。
デバイスのタイプ | 説明 |
---|---|
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 オープンソース プロジェクトをご覧ください。
テストデータ
テスト ライブラリを使用して、想定されるメタデータ値をモックします。
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()
型のオブジェクトがインスタンス化されるたびに、必要なメタデータの変更を実装してください。これで移行が完了します。アプリが拡張デバイスタイプを書き込む場合は、
FEATURE_EXTENTED_DEVICE_TYPES
の背後にゲートを設け、機能が利用できないデバイスで予期しないTYPE_UNKNOWN
が発生しないようにします。