在运行时检查 AI 眼镜的设备可用性

用户在日常生活中使用 AI 眼镜时,眼镜可能会与主机设备(例如用户的手机)断开连接,或者用户摘下眼镜后,眼镜可能会暂时无法使用。为了应对设备可用性方面的此类变化,您的应用可以使用 XR 设备可用性 API,该 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 状态表示设备不再被佩戴,因此停止这些进程对于防止不必要的耗电和保护用户隐私至关重要。