Commissioning API を使用すると、アプリは次のいずれかにコミッショニングできます。
- 独自のファブリックと Google ファブリック。
- Google ファブリックのみ。
Matter デバイスをコミッショニングする方法
コミッショニング プロセスは、次の方法で開始できます。
アプリから直接コミッショニングをリクエストする
アプリから直接コミッショニングをリクエストするには、アプリ内のボタンを使用します。次の 2 つの方法があります。
単一のファブリックの場合
コミッショニングをリクエストするには:
アクティビティで
ActivityResultLauncherを初期化します。ユーザーが Google ファブリックでデバイスをコミッショニングした場合、結果には、コミッショニング時にユーザーがデバイスに割り当てた名前が含まれることがあります。private val commissioningLauncher = registerForActivityResult(StartIntentSenderForResult()) { result -> val resultCode = result.resultCode if (resultCode == RESULT_OK) { Log.i("CommissioningActivity", "Commissioning success") val deviceName = CommissioningResult.fromIntentSenderResult(result.resultCode, result.data).deviceName } else { Log.i("CommissioningActivity", "Commissioning failed") } }受信したペイロード データを含む
CommissioningRequestを作成し、 を使用して、デバイスを Google ファブリックにコミッショニングするオプションを設定します。setStoreToGoogleFabricval commissioningRequest = CommissioningRequest.builder() .setOnboardingPayload(payload) .setStoreToGoogleFabric(true) // set all other options that you care about .build()デバイスを Google ファブリックと独自のファブリックの両方にコミッショニングする場合は、コミッショニング サービスを
setCommissioningServiceでCommissioningRequestに設定します。CommissioningClientインスタンスを使用してコミッショニングを開始します。commissioningClient .commissionDevice(commissioningRequest) .addOnSuccessListener { result -> Log.i("CommissioningActivity", "Commissioning success") _commissioningIntentSender.postValue(result) } .addOnFailureListener { error -> Log.i("CommissioningActivity", "Commissioning failed") }ここで、
_commissioningIntentSenderは次のように定義されます。private val _commissioningIntentSender = MutableLiveData<IntentSender?>() val commissioningIntentSender: LiveData<IntentSender?> get() = _commissioningIntentSenderCommissioningClientがインテント送信者を返したら、送信者を起動します。commissioningIntentSender.observe(this) { sender -> if (sender != null) { commissioningLauncher.launch(IntentSenderRequest.Builder(sender).build()) } }
複数のファブリックの場合(マルチ管理者)
デバイスに複数の Matter ファブリックを設定する必要がある場合は、 Android の Commissioning API の マルチ管理者をご覧ください。
ファスト ペアリングまたは QR コード スキャン用の Matter コミッショニング エントリ ポイント(Android のみ)
Android でファスト ペアリングまたは QR コードを使用してコミッショニングをリクエストするには、次の 2 つの方法があります。
単一のファブリックの場合
ACTION_START_COMMISSIONING インテント フィルタ
を使用すると、GHA を必要とせずに、アプリの完全なコミッショニング機能を提供できます。Google ファブリックにコミッショニングする場合、これには、ユーザーがデバイスに名前を割り当てられるようにすることが含まれます。
ACTION_START_COMMISSIONINGGoogle ファブリックのコミッショニングのサポートを示すには、AndroidManifest.xml ファイル内の選択したアクティビティ宣言に次の intent-filter を追加します。
<intent-filter>
<action android:name="com.google.android.gms.home.matter.ACTION_START_COMMISSIONING" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
intent-filter は、Commissioning API の app
picker で、推奨される
Matter アプリのリストにアプリを含めるために使用されます。
アプリが推奨アプリの 1 つでない場合は、[他のアプリを選択] オプションに表示されます。
ユーザーがアプリを選択すると、アプリが起動し、選択した
アクティビティに
ACTION_START_COMMISSIONING
インテントを使用して移動します。
複数のファブリックの場合(マルチ管理者)
マルチ管理者シナリオでは、ファスト ペアリング フローを使用することもできます。 詳しくは、 Android の Commissioning API のマルチ管理者をご覧ください。
受信インテントを処理する
アクティビティが起動したら、既存の ACTION_START_COMMISSIONING インテントを確認し、ペイロードを取得する必要があります。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val payload = if (Matter.ACTION_START_COMMISSIONING.equals(intent.getAction())) {
intent.getStringExtra(Matter.EXTRA_ONBOARDING_PAYLOAD)
} else {
null
}
CommissioningRequest.builder()
.setOnboardingPayload(payload)
.setStoreToGoogleFabric(true)
// set all other options that you care about
startCommissioning(commissioningRequest)
}
ペイロード値が null でない場合は、ユーザーがデバイスの QR コードをスキャンしたか、ペア設定キーを入力したことを示します。null ペイロード値は、コミッショニングを中止する必要があることを意味するものではありません 。
コミッショニング可能な検出通知を抑制する
デフォルトでは、Google Play services は Android を使用します モバイル デバイスの画面の下半分を覆う「ハーフシート」通知を使用して、コミッショニング可能な Matter デバイスが近くにあることをユーザーに積極的に示します。
アプリがフォアグラウンドにあるときに中断されないようにするには、
これらの通知を
suppressHalfSheetNotification()
メソッドを呼び出して抑制します。詳しくは、API ドキュメントをご覧ください。
この API で有効になる抑制は、アプリが 15 分以上フォアグラウンドにあるとタイムアウトします。タイムアウト後に抑制を再度有効にするには、suppressHalfSheetNotification() を再度呼び出します。そうしないと、ハーフシート通知が表示されます。
ファブリック上の Matter デバイスを Google と共有するにはどうすればよいですか?
独自のファブリックにすでに設定したデバイスを Google ファブリックと共有する主な方法として、Commissioning API を使用することを強くおすすめします。Share API には制限があるため、他のユースケースのために予約しておく必要があります。
Share API ではなく Commissioning API を使用する理由
Commissioning API を使用すると、デバイスを Google ファブリックと直接共有できます。これは、可能な場合に推奨される方法です。Share API では、エンドユーザーがより多くの手順を行う必要があります。たとえば、エンドユーザーは GHAをインストールし、プロセス中に GHAを選択して成功させる必要があります。
Commissioning API を使用するには、Matter のセカンダリ コミッショナーとして Commissioning API を使用する方法の説明に従って、コミッショニング ウィンドウを開き、 Commissioning API を呼び出す必要があります。
Share API を使用するタイミング
Share API を使用すると、エンドユーザーは、デバイスを他の Matterエコシステムと汎用的に共有するのに適したアプリケーションを選択できます。