用途:Motion 是 iOS 平台上面向已连接可穿戴设备的实验性惯性传感器流式传输能力,用于获取加速度计、陀螺仪、磁力计与姿态(方向)采样,供应用做运动感知或姿态相关处理。
主要能力:支持以 5、10、15、24、30、60 Hz 的采样率获取数据,默认 10 Hz,速率越高占用带宽与电量越多。每个采样包含可选的时间戳(基于设备单调时钟,单位纳秒)、加速度计(m/s²)、陀螺仪(rad/s)、磁力计(µT)与方向数据,并以 source 字段区分眼镜、Neural Band 或未知来源。采样流内部缓冲最新 256 个样本。
使用方式:需先在 Wearables Developer Center 为应用启用 Motion 能力(没有运行时 Permission 值)。仅在 DeviceSession 达到 .started 后添加 Motion;与 Inputs 不同,Motion 返回时处于停止状态,须先注册观察者再调用 start()。代码示例中通过 session.addMotion(configuration: MotionConfiguration(samplingRate: .hz30)) 创建实例,使用 for await 遍历 motion.samples 消费采样,并在流式传输期间保留该任务。可通过 statePublisher 观察生命周期更新,通过 errorPublisher 观察传感器、连接与关闭失败。高开销处理应移出主 actor。停止时调用 motion.stop() 可暂停并允许再次启动;调用 session.removeMotion() 前需先取消采样任务,移除为终态操作。
测试:可使用 MockDeviceKit 在流式传输前或过程中通过 glasses.services.motion.setMotionFeed(samples) 或 CSV 文件 URL 配置确定性回放;isStreaming 仅用于断言模拟行为,应用逻辑应观察 SDK 的 Motion 状态。
适用场景:需要从可穿戴设备读取惯性运动数据用于开发或 Beta 测试的 iOS 应用。
限制:Motion 为实验性能力,可用于开发与 Beta 测试,但尚不能发布到生产发布渠道。各传感器字段均为可选,读取时只应使用样本中实际存在的值。