您的位置:首页 > 其它

CoreMotion初探及问题总结

2014-09-12 16:20 155 查看
Core Motion Framework介绍(翻译自苹果官方文档)

Core Motion框架能让您的应用从设备硬件接收运动数据和处理数据.这个框架支持访问未经处理的和处理的加速器数据通过基于块的接口.对于设备内置的陀螺仪,可以检索原始陀螺数据以及处理数据反映设备的方向和旋转速度.您可以使用加速度计和光线陀螺运动游戏或其他应用程序使用的数据作为输入或作为一种提高整体用户体验.

Core Motion Framework的使用

我们使用CMMotionManager来获取各个加速器的数据

_motionManager = [[CMMotionManager
alloc]init];

创建CMMotionManager对象

[_motionManager setAccelerometerUpdateInterval:0.01];

设置CMMotionManager更新数据的频率

[_motionManager
startAccelerometerUpdatesToQueue:[NSOperationQueue
mainQueue] withHandler:^(CMAccelerometerData *accelerometerData,
NSError *error) {
//write your code;

}];

push方式

[_motionManager
startAccelerometerUpdates];

pull方式

开启加速度器的更新

[_motionManager stopAccelerometerUpdates];
停止加速度器的更新
其他加速器的使用方法与加速度器相同,只是调用不同的方法
遇到的问题
1.官方文档说明,CMMotionManager应该只创建一个单例,官方API没有提供创建单例的方法,需要自己创建;如果不创建单例,使用时要把CMMotionManager设置成全局变量,设置成局部变量会没有效果
2.传感器最大的频率为100Hz
3.Queue:属性设置为[NSOperationQueue mainQueue]
4.如果不能获取数据,可以通过_motionManager.isAccelerometerAvailable查看加速器是否可用,_motionManager.isAccelerometerActive查看加速器是否开启
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: