SuperAPI AI 工具集

core-motion

智能体与模型

查看项目

更新于 10-16 09:11

技能介绍

CoreMotion 技能用于在 iOS 和 watchOS 上读取设备传感器数据,包括加速度计、陀螺仪、磁力计、计步器和活动识别。CoreMotion 将原始传感器输入融合为处理后的设备运动数据,并提供计步器与活动 API,面向健身和导航等使用场景。目标平台为 Swift 6.3 / iOS 26+。

一、用途 该技能适用于读取设备传感器数据、统计步数、识别用户活动状态(静止、步行、跑步、骑行、乘车)以及获取高度数据等场景。

二、主要能力

  1. CMMotionManager:读取加速度计、陀螺仪等原始传感器数据,支持回调更新与轮询两种模式。
  2. 处理后的设备运动(CMDeviceMotion):融合加速度计、陀螺仪和磁力计,提供姿态(roll、pitch、yaw)、去除重力的用户加速度、重力、旋转速率和校准后的磁场,并可选择姿态参考坐标系。
  3. CMPedometer:提供步数、距离、配速、步频和楼层数,支持历史查询与实时更新。
  4. CMMotionActivityManager:识别静止、步行、跑步、骑行、乘车等活动类型,支持实时更新与历史查询,并提供置信度。
  5. CMAltimeter:提供相对高度与气压数据,以及基于 GPS 的绝对高度数据。

三、使用方式

  1. 在 Info.plist 中添加 NSMotionUsageDescription,并提供面向用户的说明字符串;缺少该键时应用首次访问会崩溃。
  2. 计步与活动 API 使用 CMAuthorizationStatus 检查授权状态;传感器 API 不需要显式授权,但需要上述说明键。
  3. 每个应用只创建一个 CMMotionManager 实例,多个实例会降低传感器更新速率。
  4. 启动更新前检查传感器可用性(如 isAccelerometerAvailable、isGyroAvailable、isDeviceMotionAvailable)。
  5. 设置更新间隔,并在生命周期对应方法中停止更新。
  6. 设备运动可选择姿态参考坐标系,如 .xArbitraryZVertical、.xArbitraryCorrectedZVertical、.xMagneticNorthZVertical、.xTrueNorthZVertical,使用前可检查可用坐标系。
  7. 计步器与活动管理器提供可用性检查方法,如 isStepCountingAvailable、isDistanceAvailable、isFloorCountingAvailable、isPaceAvailable、isCadenceAvailable、isActivityAvailable。

四、适用场景 适用于需要读取设备运动传感器、统计步数与距离、识别用户活动状态、获取高度数据的 iOS 与 watchOS 应用,例如健身追踪、导航、游戏中的倾斜控制等。

五、限制与注意事项

  1. 更新频率越高,电量消耗越大;应使用满足需求的最低频率。CMMotionManager 单次采样上限为 100 Hz,更高频率需在 watchOS/iOS 17+ 使用 CMBatchedSensorManager。
  2. 不要创建多个 CMMotionManager 实例。
  3. 不要跳过传感器可用性检查,否则在缺少相应硬件的设备上可能崩溃。
  4. 不要忘记停止更新,否则会持续耗电。
  5. 不要使用不必要的高更新频率。
  6. CMMotionActivity 的多个属性可能同时为真,应结合 confidence 判断。
  7. 更新处理器应分派到合适的队列,避免阻塞主线程进行重处理。
  8. 应在更新处理器中检查错误参数。
  9. 姿态参考坐标系应根据实际需要选择,不要不必要地默认使用真北。

六、审查清单 包括:Info.plist 中存在 NSMotionUsageDescription 并有清晰说明;全应用共享单个 CMMotionManager 实例;启动更新前检查传感器可用性;计步/活动 API 前检查授权状态;更新间隔设为可接受的最低频率;所有 startUpdates 调用在生命周期对应方法中有匹配的 stopUpdates;处理器分派到合适队列;根据 confidence 判断活动类型;检查更新处理器中的错误参数;根据实际需要选择姿态参考坐标系。

七、参考 扩展模式(SwiftUI 集成、批量传感器管理器、耳机运动)见 references/motion-patterns.md,以及 CoreMotion 框架、CMMotionManager、CMPedometer、CMMotionActivityManager、CMDeviceMotion、CMAltimeter、CMBatchedSensorManager 等官方文档。