Comisiones para asuntos basados en la intención

Si bien el SDK de Matter proporciona una API basada en Task para iniciar la puesta en marcha de Matter con parámetros variables, observar el resultado y, de manera opcional, agregar credenciales, hay situaciones en las que se necesita un punto de entrada de solo un código QR. Por ejemplo, de una aplicación de cámara generalizada que desea proporcionar un acceso directo para comenzar a poner en marcha cuando se ve un código QR en el visor.

Antes de continuar, asegúrate de que se hayan cumplido todos los requisitos.

Códigos QR de Matter

Los códigos QR de Matter toman la forma general de MT:Y3.13OTB00KA0648G00, en la que el prefijo MT: es una constante, y el sufijo es una string codificada en base 38 que usa el alfabeto [A-Z0-9.-]. El sufijo siempre debe tener al menos 19 caracteres, pero también puede ser más largo.

Para determinar si un código QR representa un código QR de Matter, se puede realizar con la siguiente regex en Java:

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

Por ejemplo, el siguiente código QR representa MT:Y3.13OTB00KA0648G00:

Ejemplo de código QR de Matter

Formato del intent

Este formato de código QR se puede usar como URI para iniciar el flujo de comisión mediante el envío de un Intent con ACTION_VIEW, el URI especificado en data y el paquete de destino establecido en Servicios de 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
  }
}

App de ejemplo

En esta app de ejemplo, se muestra cómo comenzar a poner en marcha un dispositivo Matter cuando se ve un código QR compatible con Matter en el visor de la cámara.

Descarga la app de ejemplo de comisión basada en intents

El código de esta app de ejemplo aprovecha las siguientes bibliotecas de Android:

Los siguientes documentos también son útiles para comprender el código escrito para esta app de muestra:

Uso

Cuando la app se inicia, la vista previa de la cámara se muestra en la pantalla. Cuando se detecta un código QR de un dispositivo Matter, se muestra un cuadro de diálogo para confirmar si se deben realizar las comisiones de ese dispositivo Matter:

vista previa de la cámara 1 vista previa de la cámara 2

Si se confirma la puesta en marcha, se inicia el "Selector de apps" compatible con el SDK de Google Home para dispositivos móviles.

El selector de apps muestra inicialmente un conjunto de aplicaciones de puesta en marcha predeterminada (por ejemplo, la app de Google Home como se muestra en la primera captura de pantalla). Si presionas "Elegir otra app", se mostrarán otras que sean compatibles con el flujo de comisión del SDK de Google Home para dispositivos móviles (consulta la segunda captura de pantalla).

Elija una aplicación (GHA) Elegir una app - Otras apps

Luego, se inicia la aplicación seleccionada para que el dispositivo se encargue.