Embora o SDK do Matter forneça uma API baseada em Task
para iniciar a ativação da matéria com parâmetros variáveis, observando o resultado e adicionando credenciais, mas há situações em que um ponto de entrada apenas de um código QR é necessário. Por exemplo, de um aplicativo de câmera generalizado que quer
fornecer um atalho para iniciar o comissionamento quando um código QR é visto no
visualizador de telas.
Antes de continuar, verifique se todos os pré-requisitos foram atendidos.
Códigos QR do Matter
Os códigos QR do Matter têm a forma geral MT:Y3.13OTB00KA0648G00
, em que o prefixo MT:
é uma constante e o sufixo é uma string codificada em 38 base usando o alfabeto [A-Z0-9.-]
. O sufixo precisa
ter sempre pelo menos 19 caracteres, mas pode ser mais longo.
Para determinar se um código QR representa um código QR do Matter, faça o seguinte regex no Java:
fun isMatterQrCode(value: String): Boolean { return value.matches(Regex("""MT:[A-Z0-9.-]{19,}""")) }
Por exemplo, o código QR a seguir representa MT:Y3.13OTB00KA0648G00
:
Formato da intent
Esse formato de código QR pode ser usado como URI para iniciar o fluxo de comissionamento
enviando um Intent
com ACTION_VIEW
, o URI especificado em data
e o
pacote de destino definido para o 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 começar a ativar um dispositivo Matter quando um código QR compatível com o Matter é visto no visor da câmera.
Faça o download do app de exemplo de comissão baseado em intents
O código neste app de exemplo usa as seguintes bibliotecas do Android:
Os documentos abaixo 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 é mostrada na tela. Quando um código QR de um dispositivo Matter é detectado, uma caixa de diálogo é mostrada para confirmar se a comissão precisa ser feita:
Se o comissionamento for confirmado, o "Seletor de aplicativos" suportado pelo SDK do Google Home para dispositivos móveis será iniciado.
O seletor de apps mostra inicialmente um conjunto de aplicativos de comissionamento padrão, por exemplo, o app Google Home, como mostra a primeira captura de tela. Se alguém tocar em "Escolher outro app", outros apps compatíveis com o fluxo de comissionamento do SDK do Google Home para dispositivos móveis serão exibidos. Veja a segunda captura de tela.
O aplicativo selecionado é iniciado para executar o comissionamento do dispositivo.