相机启用后的特征

设备完成调试后可以使用的特征包括:

OtaSoftwareUpdateRequestor 特征

此特征提供了一个接口,用于监控摄像头设备上的 OTA 软件更新。完成调试后,摄像头会启动更新并向应用报告其状态。应用收到软件更新完成的状态后,摄像头即可开始直播。

以下示例代码和说明演示了如何使用该特征。

withTimeout(OTA_TIMEOUT_MS) {
  device.type(OtaRequestorDevice)
    .mapNotNull { it?.trait(OtaSoftwareUpdateRequestor) }
    .distinctUntilChanged()
    .transformWhile { trait ->
      emit(trait)
      !isTerminalState(trait.updateState)
    }
    .collect { trait ->
      updateState = trait.updateState
      updateStateProgress = trait.updateStateProgress
    }
}
  • 超时:withTimeout 强制执行监控流程的最长持续时间 (OTA_TIMEOUT_MS)。如果更新未在此时间内完成,则会超时。

  • 观察特征变化:.distinctUntilChanged() 运算符可确保链中的后续代码仅在特征状态实际发生变化时做出反应,这比持续轮询更高效。

  • 处理直至完成:只要 OTA updateState 不是最终状态(例如成功或失败),.transformWhile 运算符就会继续处理更新。

  • 收集状态:对于每项状态变更,系统都会执行 .collect 块,以使用特征中的最新值更新 updateStateupdateStateProgress 变量。

如需了解详情,请参阅 OtaSoftwareUpdateRequestor 特征参考文档

ConfigurationDone 特征

此特征不是摄像头激活所必需的,但它允许应用通过将 AppConfigurationComplete 属性设置为 true 来跟踪设备何时完全设置完毕并可供使用。此特征应在 OtaSoftwareUpdateRequestor 特征之后使用。

device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }