SuperAPI AI 工具集

session-lifecycle

智能体与模型

查看项目

更新于 10-16 05:07

技能介绍

用途:在 Meta Wearables DAT Android SDK 集成中管理会话与流的状态。通过 Wearables.createSession(...) 创建 DeviceSession,调用 start() 启动,待会话进入 STARTED 后再附加摄像头等能力。会话生命周期与能力生命周期相关但相互独立。

会话状态:IDLE(已创建未启动,需调用 session.start())、STARTING(连接设备,显示加载 UI)、STARTED(可添加或使用能力)、PAUSED(临时挂起,保留状态等待恢复或停止)、STOPPING(正在关闭,停止用户工作并等待)、STOPPED(终态,释放资源,如需连接须重新创建会话)。STOPPED 为终态,不能重启,需再次调用 Wearables.createSession(...)。

观察状态:start() 与 stop() 均为同步 fire-and-forget,返回 Unit。应在调用 start() 前订阅 state 与 errors,避免遗漏状态转换,并将 session.errors 作为 start() 的失败通道。示例中通过 session.state.collect 处理 STARTED、PAUSED、STOPPED,通过 session.errors.collect 显示错误。在 onStarted(session) 中添加能力;会话仍为 IDLE 时调用 session.addCamera(...) 会失败并返回 DeviceSessionError.SESSION_IDLE,STOPPED 后调用则返回 DeviceSessionError.SESSION_ALREADY_STOPPED。

流状态:添加摄像头后,摄像头流有独立状态流:STOPPED -> STARTING -> STARTED -> STREAMING -> STOPPING -> STOPPED。CLOSED 为流的终态;设备暂停流(例如单次帽触轻点)时报告 PAUSED,并可自行恢复。可通过 camera.stream.state.collect 响应流状态变化。

常见转换:SDK 可能在另一体验接管设备、用户摘下或折叠眼镜、蓝牙连接中断、用户注销应用或撤销所需权限时暂停或停止会话。

暂停与恢复:会话暂停时设备连接可能仍保持活动,已附加能力停止有效工作;应用应等待下一次观察到的会话状态,而非强制重启。

设备可用性:通过 Wearables.devices.collect 更新可用设备列表,结合设备元数据判断停止后何时适合创建新会话。

检查清单:处理关注的 DeviceSessionState 值;单独观察流状态与会话状态;仅在 stop 或 close 后释放资源;终态停止后重建会话而非复用已死会话;暴露类型化的 DeviceSessionError 与 StreamError 失败。