Messa in servizio basata sull'intent per Matter

Sebbene l'SDK Matter fornisca un'API basata su Task per avviare la messa in servizio Matter con parametri diversi, osservare il risultato e, facoltativamente, aggiungere credenziali, in alcune situazioni è necessario un punto di contatto costituito solo da un codice QR. Ad esempio, da un'applicazione della fotocamera generica che vuole fornire una scorciatoia per avviare la messa in servizio quando viene visualizzato un codice QR nel mirino.

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

Codici QR Matter

I codici QR Matter hanno la forma generale MT:Y3.13OTB00KA0648G00, dove il prefisso MT: è una costante e il suffisso è una stringa codificata in base 38 che utilizza l'alfabeto [A-Z0-9.-]. Il suffisso deve essere sempre composto da almeno 19 caratteri, ma può essere anche più lungo.

Per determinare se un codice QR rappresenta un codice QR Matter, puoi utilizzare 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 Matter

Formato intent

Questo formato di codice QR può essere utilizzato come URI per avviare il flusso di messa in servizio inviando un Intent con ACTION_VIEW, l'URI specificato nel data e il pacchetto di destinazione 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 nel mirino della fotocamera viene visualizzato un codice QR conforme a Matter.

Scarica l'app di esempio per la messa in servizio basata sugli intent

Il codice di questa app di esempio sfrutta 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, sullo schermo viene visualizzata l'anteprima della fotocamera. Quando viene rilevato un codice QR per un dispositivo Matter, viene visualizzata una finestra di dialogo per confermare se deve essere eseguita la messa in servizio del dispositivo Matter:

anteprima fotocamera 1 anteprima fotocamera 2

Se la messa in servizio viene confermata, viene lanciato il "Selettore di app" supportato dall'SDK mobile Google Home.

Inizialmente, il selettore di app mostra un insieme di applicazioni di messa in servizio predefinite (ad esempio l'app Google Home, come mostrato nel primo screenshot). Se si tocca "Scegli un'altra app", vengono mostrate altre applicazioni che supportano il flusso di messa in servizio dell'SDK mobile di Google Home (vedi il secondo screenshot).

Scegliere un'app - GHA Scegliere un'app - Altre app

L'applicazione selezionata viene quindi avviata per eseguire la messa in servizio del dispositivo.