用途:为 Meta Wearables DAT SDK 的 Android(Kotlin)开发提供统一约定,覆盖会话建立、能力挂载、错误处理与无硬件测试。
模块划分:mwdat-core 负责注册、权限、设备与会话创建;mwdat-camera 提供相机能力、视频帧与拍照;mwdat-display 提供显示能力及相关 UI 组件;mwdat-mockdevice 提供 MockDeviceKit 以便无硬件测试。
主要能力与用法:入口为 Wearables.initialize(context),随后 Wearables.createSession(AutoDeviceSelector()) 得到 DeviceSession。DeviceSession.start() 是 fire-and-forget,返回 Unit;只有会话状态为 DeviceSessionState.STARTED 后才能调用 addCamera(...) 或 addDisplay()。通过 StateFlow/Flow 观察 session.state 与 session.errors。处理帧的重任务应移出主线程。
错误处理:使用 DatResult 做类型化成功/失败处理,优先 fold、onSuccess 和两参数 onFailure { error, cause -> },后者可获得带 description 的 DatError;getOrElse { } 只拿到原始 Throwable,无法读取 description。面向用户的示例避免 getOrThrow()。权限检查可用 Wearables.checkPermissionStatus(Permission.CAMERA)。
命名约定:DeviceSession 管理连接生命周期,Camera/Display 为会话能力,Stream 为相机视频流,*Selector 用于设备定位(如 AutoDeviceSelector、SpecificDeviceSelector),*Error 为类型化失败面。
测试:MockDeviceKit.getInstance(context) 后 enable(),再 pairGlasses(GlassesModel.RAYBAN_META) 等,可在无实体硬件下驱动注册、设备可用性、流媒体与权限场景。
常用命令:./gradlew assembleDebug、./gradlew test、./gradlew installDebug、./gradlew lint。
限制与注意:初始化前不得调用 SDK API;start() 后需等待 STARTED 再挂载能力;会话不自动包含流或显示访问;不可忽略 createSession、start、addCamera、addDisplay、capturePhoto 的 DatResult 失败;不可复用已终止的会话、相机或流。需要最新文档时可通过远程 MCP 服务器 https://mcp.developer.meta.com/wearables 使用 search_dat_docs,该公开服务器无需鉴权;仅支持静态参考时使用 llms.txt。