Commissioni basate sull'intenzione per Matter

Sebbene l'SDK Matter fornisca un'API basata su Task per avviare la commissione Matter con parametri variabili, osservando il risultato e, facoltativamente, aggiungendo credenziali, ci sono casi in cui è necessario un punto di ingresso di un solo codice QR. Ad esempio, da un'applicazione di fotocamera generale che vuole fornire una scorciatoia per avviare la messa in servizio quando viene visualizzato un codice QR nel mirino.

Prima di continuare, assicurati che siano stati soddisfatti tutti i prerequisiti.

Codici QR di Matter

I codici QR di Matter hanno il formato generico MT:Y3.13OTB00KA0648G00, dove il prefisso MT: è una costante, mentre il suffisso è una stringa di base con codifica 38 che utilizza l'alfabeto [A-Z0-9.-]. Il suffisso deve essere sempre di almeno 19 caratteri, ma potrebbe essere più lungo.

Determinare se un codice QR rappresenta un codice Matter può essere eseguito con la seguente regex in Java:

fun isMatterQrCode(value: String): Boolean {
  return value.matches(Regex("""MT:[A-Z0-9.-]{19,}"""))
}

Ad esempio, il seguente codice QR rappresenta MT:Y3.13OTB00KA0648G00:

Esempio di codice QR di Matter

Formato intent

Questo formato di codice QR può essere utilizzato come URI per avviare il flusso di commissione inviando un Intent con ACTION_VIEW, l'URI specificato in data e il pacchetto target impostato su Google Play Services:

fun startCommissioning(context: Context, qrCodeString: String): Boolean {
  val intent =
    Intent(Intent.ACTION_VIEW)
      .setData(Uri.parse(qrCodeString))
      .setPackage("com.google.android.gms")

  try {
    context.startActivity(intent)
    return true
  } catch (ex: ActivityNotFoundException) {
    // Supporting Play Services version not available.
    return false
  }
}

App di esempio

Questa app di esempio mostra come avviare la messa in servizio di un dispositivo Matter quando viene rilevato un codice QR compatibile con Matter nel mirino della fotocamera.

Scarica l'app di esempio Commissioni basata sull'intent

Il codice in questa app di esempio utilizza le seguenti librerie Android:

I seguenti documenti sono utili anche per comprendere il codice scritto per questa app di esempio:

Utilizzo

Quando l'app si avvia, l'anteprima della fotocamera viene mostrata sullo schermo. Quando viene rilevato un codice QR per un dispositivo Matter, viene mostrata una finestra di dialogo per confermare se la commissione per quel dispositivo Matter deve essere eseguita:

anteprima fotocamera 1 anteprima della videocamera 2

Se la commissione viene confermata, viene avviato il "Selettore app" supportato dall'SDK Google Home Mobile.

Inizialmente il selettore di app mostra un insieme di applicazioni di commissione predefinite (ad es. l'app Google Home, come mostrato nel primo screenshot). Se una tocca "Scegli un'altra app", vengono visualizzate altre applicazioni che supportano il flusso di commissione dell'SDK Google Home Mobile (vedi il secondo screenshot).

Scegli un'app - GHA Scegli un'app - Altre app

Viene avviata l'applicazione selezionata per eseguire la messa in servizio del dispositivo.