攝影機上線後的特徵

裝置委派後可使用的特徵包括:

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) }