Matchmaking API

Health Connect Matchmaking API のガイド。

概要

Matchmaking API を使用すると、アプリが読み取り権限を持つ健康データを書き込むことができる他のアプリやデバイスを検出できます。これにより、ユーザーは好みのデータソースをアプリに簡単に接続できます。

マッチング画面で、ヘルスコネクトに対応するアプリとデバイスが検出されます。次に、アプリに必要な読み取り権限と、それらのアプリやデバイスの書き込み機能を相互参照します。この画面には、アプリが読み取りを許可されている指定されたレコードタイプの少なくとも 1 つについて、書き込み権限を宣言しているが、まだ付与されていないアプリとデバイスが表示されます。

始める前に

このガイドは、アプリでヘルスコネクトをすでに構成しており、HealthConnectClient のインスタンスが利用可能であることを前提としています。

ベータ版の設定

マッチング API は、製品版デバイスに段階的にロールアウトされるヘルスコネクトのアップデートを通じて利用可能になります。2026 年 6 月上旬までに 100% の利用が可能になる予定です。このアップデートが広く利用可能になる前にマッチング機能をテストするには、テストデバイスを Android ベータ版プログラムに登録して、早期アクセスを利用してください。

ヘルスコネクトを利用できるか確認する

ヘルスコネクト アプリを使用する前に、ユーザーのデバイスでヘルスコネクトが利用可能であることを確認する必要があります。ヘルスコネクトがユーザーのデバイスにインストールされていないか、無効になっている可能性があります。

HealthConnectClient.getSdkStatus() を使用して、可用性を確認します。ヘルスコネクトが利用できない場合は、Google Play ストアからヘルスコネクトをインストールまたは更新するようユーザーに促します。

使用できる機能を確認する

ユーザーのデバイスがヘルスコネクトのマッチングに対応しているかどうかを判断するには、FEATURE_MATCHMAKING の利用可否を確認します。

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

// Feature is available
} else {
// Feature isn't available
}

実装

マッチング フローは MatchmakingRequest を使用して開始されます。このリクエストでは、アプリで収集するレコード タイプを定義し、アプリやデバイスなどの特定のデータソースを含めるか除外するかを指定できます。

  • recordTypes: StepsRecord::class などの Record クラスのセット。空の場合、フローはアプリが読み取り権限を持つすべてのレコードタイプを考慮します。
  • includedDataSources: 除外する DataOrigin オブジェクトのセット。
  • excludedDataSources: 除外する DataOrigin オブジェクトのセット。

Matchmaking API をアプリケーションに統合する手順は次のとおりです。

マッチングが可能かどうかを確認する

マッチング エントリ ポイントを表示する前に、checkIfMatchmakingIsPossible() を使用して、リクエストされたレコード タイプに関連するマッチング アプリやデバイスがあるかどうかを判断します。

suspend fun checkMatchmakingPossible(healthConnectClient: HealthConnectClient) {
    val request = MatchmakingRequest(recordTypes = setOf(StepsRecord::class))
    val response = healthConnectClient.checkIfMatchmakingIsPossible(request)

    if (response.isMatchmakingPossible) {
        // Relevant apps or devices found. Show entry point to launch flow.
    } else {
        // Handle case where no new data sources are available
    }
}

マッチングが可能かどうかを継続的に確認することをおすすめします。ユーザーは後で追加のアプリをインストールしたり、相互に互換性のあるデータ型を持つデバイスを接続したりする可能性があります。一般的な方法は、アプリの起動時に毎回確認することです。true が返された場合は、マッチング フローを開始するエントリ ポイントを表示します。

マッチング フローを起動する

マッチングが可能な場合は、createMatchmakingIntent() を使用して Intent を取得し、ヘルスコネクト フローを起動してから、Activity Result API を使用して起動します。

// Create the matchmaking launcher
val matchmakingLauncher = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()
) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        // Matchmaking finished successfully.
        // User successfully granted at least one permission.
    } else {
        // User canceled flow or didn't grant permissions.
    }
}

fun launchMatchmaking(healthConnectClient: HealthConnectClient) {
    val request = MatchmakingRequest(recordTypes = setOf(StepsRecord::class))
    val intent = healthConnectClient.createMatchmakingIntent(request)
    matchmakingLauncher.launch(intent)
}

このインテントを起動すると、ヘルスコネクトに画面が表示され、ユーザーは互換性のあるアプリやデバイスを確認し、それらを接続してアプリとデータを共有できます。