Mise en service basée sur l'intention pour Matter

Bien que le SDK Matter fournisse une API basée sur Task pour démarrer la mise en service de Matter avec des paramètres variables, observer le résultat et éventuellement ajouter des identifiants, il existe des situations où un point d'entrée ne comportant qu'un code QR est nécessaire. Par exemple, à partir d'une application d'appareil photo généralisée qui souhaite fournir un raccourci pour lancer la mise en service lorsqu'un code QR s'affiche dans le viseur.

Avant de continuer, assurez-vous que toutes les conditions préalables sont remplies.

Codes QR Matter

Les codes QR Matter ont la forme générale MT:Y3.13OTB00KA0648G00, où le préfixe MT: est une constante et le suffixe est une chaîne encodée en base 38 à l'aide de l'alphabet [A-Z0-9.-]. Le suffixe doit toujours comporter au moins 19 caractères, mais il peut être plus long.

Vous pouvez déterminer si un code QR représente un code QR Matter à l'aide de l'expression régulière suivante en Java:

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

Par exemple, le code QR suivant représente MT:Y3.13OTB00KA0648G00:

Exemple de code QR Matter

Format d'intent

Ce format de code QR peut être utilisé comme URI pour démarrer le flux de mise en service en envoyant un Intent avec ACTION_VIEW, l'URI spécifié dans data et le package cible défini sur les services Google Play:

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
 
}
}

Application exemple

Cet exemple d'application montre comment commencer à mettre en service un appareil Matter lorsqu'un code QR conforme à Matter s'affiche dans le viseur de l'appareil photo.

Télécharger l'exemple d'application de mise en service basée sur les intents

Le code de cet exemple d'application exploite les bibliothèques Android suivantes:

Les documents suivants sont également utiles pour comprendre le code écrit pour cet exemple d'application:

Utilisation

Lorsque l'application démarre, l'aperçu de l'appareil photo s'affiche à l'écran. Lorsqu'un code QR pour un appareil Matter est détecté, une boîte de dialogue s'affiche pour confirmer si la mise en service de cet appareil Matter doit être effectuée:

aperçu de l'appareil photo 1 aperçu de l'appareil photo 2

Si la mise en service est confirmée, le sélecteur d'applications compatible avec le SDK Google Home Mobile est lancé.

Le sélecteur d'applications affiche initialement un ensemble d'applications de mise en service par défaut (par exemple, l'application Google Home, comme indiqué sur la première capture d'écran). Si l'utilisateur appuie sur "Choisir une autre application", d'autres applications compatibles avec le flux de mise en service du SDK Google Home Mobile s'affichent (voir la deuxième capture d'écran).

Choisir une application - GHA Choisir une application - Autres applications

L'application sélectionnée est ensuite lancée pour effectuer la mise en service de l'appareil.