スタートガイド

ヘルスコネクトのインストールを開始する前に、次のリソースをご覧ください。

リソース

  • Client SDK(Jetpack で入手可能): Health Connect API を使用するには、アプリにこの SDK を組み込みます。
  • ヘルスコネクト APK(Play ストアで入手可能): この APK は Play ストアからインストールします。ヘルスコネクト SDK を使用してアプリから送信されたすべてのリクエストを処理します。
  • API リファレンス: Health Connect API については、Jetpack のリファレンスをご覧ください。
  • GitHub コードサンプル(省略可): 利用方法については、GitHub コードサンプルのリポジトリをご覧ください。

ヘルスコネクトと統合する簡単な手順は次のとおりです。

ステップ 1:

まず、次のことを行います。

ヘルスコネクト SDK への依存関係をモジュールの build.gradle ファイルに追加します。

dependencies {
   …
  implementation 'androidx.health:health-connect-client:1.0.0-alpha03'
}

リリースの最新バージョンを確認する

デバイスにヘルスコネクト APK をインストールします。

こちらでヘルスコネクトのオープンベータ版テスト プログラムに登録します。オープンベータ版のリンク先には、ヘルスコネクト アプリのダウンロード方法も記載されています。登録したら、ヘルスコネクト APK をデバイスにインストールします。

ステップ 2:

AndroidManifest.xml で次の Activity を宣言し、アプリによる権限の使用方法を説明するインテントを処理します。

<application …>
    <activity name=".PermissionsRationaleActivity" exported="true">
        <intent-filter>
            <action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE"/>
        </intent-filter>
        <meta-data android:name="health_permissions"
                android:resource="@array/health_permissions" />
    </activity>

アプリはこのインテントを処理して、ユーザーのデータの使用方法と処理方法を説明したプライバシー ポリシーを表示する必要があります。ユーザーがヘルスコネクトの権限ダイアログで「プライバシー ポリシー」のリンクをクリックすると、このインテントがアプリに送信されます。

ステップ 3: Health Connect API への接続

HealthConnectClient が Health Connect API のエントリ ポイントです。

ここでは、ヘルスコネクトと接続する流れについて順を追って説明します。

  1. AndroidManifest.xml を更新します。

    // Add this to AndroidManifest.xml
    <!-- To check whether healthcore apk is installed or not -->
    <queries>
        <package android:name="com.google.android.apps.healthdata" />
    </queries>
    
  2. MainActivity で、ヘルスコネクトがインストールされているかどうかを確認します。インストールされていれば、HealthConnectClient インスタンスを取得します。

    if (HealthConnectClient.isAvailable(context)) {
      // Health Connect is available and installed.
      val healthConnectClient = HealthConnectClient.getOrCreate(context)
    } else {
      // ...
    }
     ```
    
  3. 次に、クライアント アプリがユーザーに権限をリクエストする必要があります。ユーザーはいつでもクライアント アプリに対して権限を付与または拒否できます。

HealthConnectClient は、基となるストレージ レイヤへの接続を自動的に管理し、すべての IPC や、送信リクエストと受信レスポンスのシリアル化を処理します。

ステップ 4: 権限

アプリで使用する権限を宣言します。res/values/health_permissions.xml に配列リソースを作成します。なお、アプリで使用する権限ごとに行を追加する必要があります。

<resources>
  <array name="health_permissions">
    <item>androidx.health.permission.HeartRate.READ</item>
    <item>androidx.health.permission.HeartRate.WRITE</item>
    <item>androidx.health.permission.Steps.READ</item>
    <item>androidx.health.permission.Steps.WRITE</item>
  </array>
</resources>

アプリ内で権限リクエスト ダイアログを開始するには、まず、必要なデータの種類の権限セットを作成します。このセットの権限も res/values/health_permissions.xml で宣言されていることを確認します。

// build a set of permissions for required data types
val PERMISSIONS =
 setOf(
   Permission.createReadPermission(HeartRateRecord::class),
   Permission.createWritePermission(HeartRateRecord::class),
   Permission.createReadPermission(StepsRecord::class),
   Permission.createWritePermission(StepsRecord::class)
 )

次に、権限をリクエストします。権限のリクエストを開始する前に、権限がすでに付与されているかどうかを確認します。

// Create the permissions launcher.
val requestPermissionActivityContract = healthConnectClient.permissionController.createRequestPermissionActivityContract()

val requestPermissions =
 registerForActivityResult(requestPermissionActivityContract) { granted ->
   if (granted.containsAll(PERMISSIONS)) {
     // Permissions successfully granted
   } else {
     // Lack of required permissions
   }
 }

fun checkPermissionsAndRun(client: HealthConnectClient) {
 lifecycleScope.launch {
   val granted = client.permissionController.getGrantedPermissions(PERMISSIONS)
   if (granted.containsAll(PERMISSIONS)) {
     // Permissions already granted
   } else {
     requestPermissions.launch(PERMISSIONS)
   }
 }
}

これで CRUD 操作を行えるようになりました。