Comissionamento baseado em intenção para o Matter

Embora o SDK do Matter forneça uma API baseada em Task para iniciar a ativação do Matter com parâmetros variados, observando o resultado e, opcionalmente, adicionando credenciais, há situações em que um ponto de entrada de apenas um código QR é necessário. Por exemplo, de um aplicativo de câmera generalizado que queira fornecer um atalho para iniciar a ativação quando um código QR for visto no visor.

Antes de continuar, verifique se todos os pré-requisitos foram atendidos.

QR codes do Matter

Os códigos QR do Matter têm a forma geral de MT:Y3.13OTB00KA0648G00, em que o prefixo MT: é uma constante, e o sufixo é uma string codificada em base 38 usando o alfabeto [A-Z0-9.-]. O sufixo precisa ser sempre de pelo menos 19 caracteres, mas pode ser mais longo.

É possível determinar se um QR code representa um QR code do Matter com o seguinte regex em Java:

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

Por exemplo, o seguinte código QR representa MT:Y3.13OTB00KA0648G00:

Exemplo de QR code do Matter

Formato da intent

Esse formato de código QR pode ser usado como um URI para iniciar o fluxo de comissionamento enviando um Intent com ACTION_VIEW, o URI especificado no data e o pacote de destino definido como 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 de exemplo

Este app de exemplo mostra como iniciar a comissionamento de um dispositivo Matter quando um código QR compatível com o Matter aparece no visor da câmera.

Faça o download do app de amostra de comissionamento baseado em intent

O código neste app de exemplo usa as seguintes bibliotecas do Android:

Os documentos a seguir também são úteis para entender o código escrito para este app de exemplo:

Uso

Quando o app é iniciado, a visualização da câmera aparece na tela. Quando um QR code para um dispositivo Matter é detectado, uma caixa de diálogo é mostrada para confirmar se a ativação para esse dispositivo Matter precisa ser realizada:

visualização da câmera 1 visualização da câmera 2

Se a ativação for confirmada, o "App Picker" compatível com o SDK para dispositivos móveis do Google Home será iniciado.

O seletor de apps mostra inicialmente um conjunto de aplicativos de ativação padrão (por exemplo, o app Google Home, conforme mostrado na primeira captura de tela). Se você tocar em "Escolher outro app", outros aplicativos compatíveis com o fluxo de comissionamento do SDK para dispositivos móveis do Google Home serão mostrados (veja a segunda captura de tela).

Escolha um app: GHA Escolher um app: outros apps

O aplicativo selecionado é iniciado para realizar a comissionamento do dispositivo.