网站布局分析,wordpress 不能发布,微信怎样开公众号,网站解析需要什么CoreMotion是iOS系统目前用于处理加速度计#xff0c;陀螺仪#xff0c;计步器和环境相关事件。 Core Motion的报告来自iOS设备的板载硬件的运动和环境相关数据#xff0c;包括加速度计和陀螺仪#xff0c;以及计步器#xff0c;磁力计和气压计。
为了以特定的时间间隔接…CoreMotion是iOS系统目前用于处理加速度计陀螺仪计步器和环境相关事件。 Core Motion的报告来自iOS设备的板载硬件的运动和环境相关数据包括加速度计和陀螺仪以及计步器磁力计和气压计。
为了以特定的时间间隔接收运动数据应用程序调用一个“start”方法该方法接受一个操作队列(NSOperationQueue的实例)和一个特定类型的块处理程序来处理这些更新。运动数据被传递到块处理程序。更新频率由“interval”属性的值决定。
Accelerometer加速度计使用方式
设置accelerometerUpdateInterval属性以指定更新间隔。调用startAccelerometerUpdates(to queue, withHandler handler)方法传入一个CMAccelerometerHandler类型的块。加速度计数据作为CMAccelerometerData对象传递到块。
Gyroscope陀螺仪使用方式
设置gyroUpdateInterval属性以指定更新间隔。调用startGyroUpdates(to queue, withHandler handler)方法传入一个类型CMGyroHandler的块。旋转速率数据作为CMGyroData对象传递到块中。
Magnetometer磁强计使用方式
设置magnetometerUpdateInterval属性以指定一个更新间隔。调用startMagnetometerUpdates(to queue, withHandler handler)方法传递一个CMMagnetometerHandler类型的块。磁场数据作为CMMagnetometerData对象传递到块中。
Device motion设备运动使用方式
设置deviceMotionUpdateInterval属性以指定更新间隔。调用startDeviceMotionUpdates(to queue, withHandler handler) 或startDeviceMotionUpdates(using referenceFrame) 或 startDeviceMotionUpdates(using referenceFrame, to queue, withHandler handler)方法传入一个CMDeviceMotionHandler类型的块。motion数据作为CMDeviceMotion对象传递到块中。
检查服务的可用性
属性类型作用accelerometerAvailableBOOL设备上是否有加速度计gyroAvailableBOOL设备上是否有陀螺仪magnetometerAvailableBOOL设备上是否有磁强计deviceMotionAvailableBOOL动作服务在设备上是否可用
检查功能的活跃状态
属性类型作用accelerometerActiveBOOL当前是否正在进行加速度计更新gyroActiveBOOL确定当前是否正在进行陀螺仪更新magnetometerActiveBOOL确定当前是否正在进行磁力计更新deviceMotionActiveBOOL确定应用程序是否从设备动作服务接收更新
更新间隔
属性类型作用accelerometerUpdateIntervalTimeInterval加速度计更新间隔gyroUpdateIntervalTimeInterval陀螺仪更新间隔magnetometerUpdateIntervalTimeInterval磁力计更新间隔deviceMotionUpdateIntervalTimeInterval设备动作服务接收更新间隔
CMDeviceMotion属性介绍
attitude通俗来讲就是告诉你手机在当前空间的位置和姿势。gravity重力信息其本质是重力加速度矢量在当前设备的参考坐标系中的表达。userAcceleration加速度信息。rotationRate计时的旋转速率是陀螺仪的输出。
if (motionManager.isDeviceMotionAvailable) {motionManager.startDeviceMotionUpdates(to: OperationQueue.main, withHandler: { (motion, error) in//翻滚let roll motion!.attitude.rolllet rollDegrees roll * 180 / Double.pi//偏航let yaw motion!.attitude.yawlet yawDegrees yaw * 180 / Double.pi//俯仰let pitch motion!.attitude.pitchlet pitchDegrees pitch * 180 / Double.piprint(Roll:%.2f, rollDegrees)print(Yaw:%.2f, yawDegrees)print(Pitch:%.2f, pitchDegrees)//重力加速度在各个方向的分量let gX motion!.gravity.x;let gY motion!.gravity.y;let gZ motion!.gravity.z;print(重力X%f -- Y%f -- Z%f, gX, gY, gZ);//检测到晃动let x motion!.userAcceleration.xlet y motion!.userAcceleration.ylet z motion!.userAcceleration.zif (fabs(x)2.0 || fabs(y)2.0 || fabs(z)2.0) {print(检测到晃动);}//带方向的晃动if (data.userAcceleration.x -1.5f) {// 往左晃动}if (data.userAcceleration.x 1.5f) {// 往右晃动}if (data.userAcceleration.y -1.5f) {// 往上晃动}if (data.userAcceleration.y 1.5f) {// 往下晃动}})
}