在執行階段檢查 AI 眼鏡的裝置可用性

使用者在日常生活中可能會與主機 (例如手機) 失去連線,或是摘下 AI 眼鏡,導致眼鏡暫時無法使用。為因應這類裝置可用性變化,應用程式可使用 XR 裝置可用性 API,將裝置可用性信號整合至標準 Android Lifecycle.State 值。這個 API 可協助管理音訊轉送、啟動字詞啟動,以及根據 AI 眼鏡的可用時間,瞭解何時會收到使用者輸入內容。

瞭解生命週期狀態

下表列出裝置供應情形信號如何對應至 Lifecycle.State 值。

生命週期狀態

裝置狀態

說明

INITIALIZED

建立時間

生命週期物件已建立,但尚未觀察。

CREATED

已停用

服務已連線,但使用者未配戴裝置。

STARTED

有效

使用者佩戴裝置。

DESTROYED

已中斷連線

裝置已中斷連線,或服務連線中斷。

查看及監控裝置供應情形

如要檢查及監控裝置的可用性,您可以使用預測的內容和生命週期狀態,判斷應用程式應如何處理每種情況:

    val xrDevice = XrDevice.getCurrentDevice(projectedContext)

    xrDevice.getLifecycle().currentStateFlow
        .takeWhile { it != Lifecycle.State.DESTROYED }
        .collect { state ->
            when (state) {
                Lifecycle.State.STARTED -> { /* Device is ACTIVE (worn) */ }
                Lifecycle.State.CREATED -> { /* Device is INACTIVE (not worn) */ }
                else -> { /* Handle other states */ }
            }
        }
}

程式碼重點

  • 檢查連線:存取裝置生命週期前,請呼叫 ProjectedContext.isProjectedDeviceConnected,確認投影裝置已連線至主機。
  • 取得 ProjectedContext:請只在驗證連線後呼叫 ProjectedContext.createProjectedDeviceContext,並確保將這個內容傳遞至 XrDevice 執行個體。
  • 處理內容失效:每當投影裝置連線時,系統都會產生新的 deviceId。狀態達到 DESTROYED 後,目前的 ProjectedContext 就無效。請立即停止使用,並等待新的連線。
  • 提升電池和資源使用效率:根據生命週期狀態妥善處理應用程式功能,以保留系統資源並減少電池耗電量。舉例來說,當狀態從 STARTED 轉換回 CREATED 時,您應釋出眼鏡專屬資源,例如相機資料串流。CREATED 狀態表示裝置已取下,因此必須停止這些程序,以免不必要地耗用電池電量,並維護使用者隱私。