基于 intent 的 Matter 调试

而 Matter SDK 提供了一个基于 Task 的 API 来开始进行 Matter 调试 并观察结果,并选择性地添加 凭据,但在有些情况下,只有二维码的入口点 所需的资源。例如,如果一个通用的相机应用想要 提供在 取景器

在继续学习之前, 已满足前提条件

Matter 二维码

Matter 二维码采用通用形式 MT:Y3.13OTB00KA0648G00,其中 MT: 前缀是一个常量,其后缀是 是一个使用字母 [A-Z0-9.-] 的 base 38 编码字符串。后缀必须 始终至少为 19 个字符,但也可以更长。

可以通过 Java 中的以下正则表达式:

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

例如,以下二维码代表 MT:Y3.13OTB00KA0648G00

Matter 二维码示例

intent 格式

此二维码格式可用作 URI 来启动调试流程, 发送带有 ACTION_VIEWIntentdata 中指定的 URI 以及 将目标软件包设置为 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
  }
}

示例应用

此示例应用展示了如何在出现以下情况时开始调试 Matter 设备: 在摄像头的取景器中可以看到符合 Matter 的二维码。

下载 “基于 intent 的调试”示例应用

此示例应用中的代码使用了以下 Android 库:

以下文档也有助于理解为 示例应用:

用法

应用启动时,屏幕上会显示相机预览。二维码 当检测到 Matter 设备时,系统会显示一个对话框,确认 应针对该 Matter 设备进行调试:

相机预览 1 相机预览 2

如果确认已确认调试,则使用“应用选择器”提供支持的 发布了 Google Home Mobile SDK。

应用选择器最初会显示一组默认调试应用(例如第一个屏幕截图中所示的 Google Home 应用)。如果用户点按“选择其他应用”,则会显示支持 Google Home Mobile SDK 调试流程的其他应用(参见第二张屏幕截图)。

选择应用 - GHA 选择应用 - 其他应用

然后,系统会启动所选应用以对设备进行调试。