XZ_CoreMotion框架获取数据的两种方式
2016-03-01 21:13
267 查看
CoreMotion(CM)跟运动相关的都保存在这个框架中,使用时需要引入 #import <CoreMotion/CoreMotion.h>头文件
CoreMotion的框架结构:CoreMotionManager、CMAccelerometerData、CMDeviceMotion、CMGyroData.
Push:实时采集所有数据(采集频率高),UIAccelerometer方式是push方式
Pull:在有需要的时候,再主动去采集数据
![](https://img-blog.csdn.net/20161115230710356?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Push使用步骤:
1.创建运动管理者对象
2.判断加速计是否可用(最好判断)
3.设置采样间隔
4.开始采样(采样到数据就会调用handler,handler会在queue中执行)
// 1.创建运动管理者对象
self.mgr=
[[CMMotionManageralloc]init];
// 2.判断加速计是否可用(最好判断)
if
(self.mgr.isAccelerometerAvailable)
{
// 3.设置采样间隔
self.mgr.accelerometerUpdateInterval=
1
/
30.0;
// 4.开始采样方式一:Push(采集加速度数据)
//
(采样到数据就会调用handler,handler会在queue中执行)
[self.mgrstartAccelerometerUpdatesToQueue:[NSOperationQueuemainQueue]withHandler:^(CMAccelerometerData*
_Nullable
accelerometerData,
NSError
*
_Nullable
error) {
NSLog(@"%f,%f,%f",accelerometerData.acceleration.x,accelerometerData.acceleration.y,accelerometerData.acceleration.z);
//
如果在Block中要执行较耗时的操作,queue最好不是主队列,会阻塞主线程
//
如果在block中要刷新UI界面,queue最好是主队列
}];
}else{
NSLog(@"加速计不可用");
}
Pull使用步骤:
1.创建运动管理者对象
2.判断加速计是否可用(最好判断)
3.开始采样
//
使用步骤:
// 1.创建运动管理者对象
self.mgr=
[[CMMotionManageralloc]init];
// 2.判断加速计是否可用(最好判断)
if
(self.mgr.isAccelerometerAvailable)
{
// 3.开始采样Pull
[selfpull];
}else{
NSLog(@"加速计不可用");
}
// pull:在有需要的时候,再主动去采集数据
- (void)pull {
[self.mgrstartAccelerometerUpdates];
}
- (void)touchesBegan:(NSSet<UITouch*>
*)touches withEvent:(UIEvent*)event {
CMAccelerationacceleration =
self.mgr.accelerometerData.acceleration;
NSLog(@"%f,%f,%f",acceleration.x,acceleration.y,acceleration.z);
}
CoreMotion的框架结构:CoreMotionManager、CMAccelerometerData、CMDeviceMotion、CMGyroData.
Push:实时采集所有数据(采集频率高),UIAccelerometer方式是push方式
Pull:在有需要的时候,再主动去采集数据
Push使用步骤:
1.创建运动管理者对象
2.判断加速计是否可用(最好判断)
3.设置采样间隔
4.开始采样(采样到数据就会调用handler,handler会在queue中执行)
// 1.创建运动管理者对象
self.mgr=
[[CMMotionManageralloc]init];
// 2.判断加速计是否可用(最好判断)
if
(self.mgr.isAccelerometerAvailable)
{
// 3.设置采样间隔
self.mgr.accelerometerUpdateInterval=
1
/
30.0;
// 4.开始采样方式一:Push(采集加速度数据)
//
(采样到数据就会调用handler,handler会在queue中执行)
[self.mgrstartAccelerometerUpdatesToQueue:[NSOperationQueuemainQueue]withHandler:^(CMAccelerometerData*
_Nullable
accelerometerData,
NSError
*
_Nullable
error) {
NSLog(@"%f,%f,%f",accelerometerData.acceleration.x,accelerometerData.acceleration.y,accelerometerData.acceleration.z);
//
如果在Block中要执行较耗时的操作,queue最好不是主队列,会阻塞主线程
//
如果在block中要刷新UI界面,queue最好是主队列
}];
}else{
NSLog(@"加速计不可用");
}
Pull使用步骤:
1.创建运动管理者对象
2.判断加速计是否可用(最好判断)
3.开始采样
//
使用步骤:
// 1.创建运动管理者对象
self.mgr=
[[CMMotionManageralloc]init];
// 2.判断加速计是否可用(最好判断)
if
(self.mgr.isAccelerometerAvailable)
{
// 3.开始采样Pull
[selfpull];
}else{
NSLog(@"加速计不可用");
}
// pull:在有需要的时候,再主动去采集数据
- (void)pull {
[self.mgrstartAccelerometerUpdates];
}
- (void)touchesBegan:(NSSet<UITouch*>
*)touches withEvent:(UIEvent*)event {
CMAccelerationacceleration =
self.mgr.accelerometerData.acceleration;
NSLog(@"%f,%f,%f",acceleration.x,acceleration.y,acceleration.z);
}
相关文章推荐
- codeforces 628D Magic Numbers
- 进程和线程
- 软链接和硬链接的区别
- 进程操作
- Java--OOP细节(二)
- 【C/C++学院】0906-递归转栈/二叉树实现
- Unix/Linux环境C编程新手教程(22) C/C++怎样获取程序的执行时间
- MapReduce之单词计数
- 针对铁定浏览器的css选择符
- 在ubuntu下安装ns2-allinone-2.35.tar.gz
- 哈理工oj 1739 sort problem【思维、水题】
- 各种Demo下载网址
- XPath 解析xml文档简单实用例子
- 经典算法学习——单链表实现冒泡排序(带头结点)
- uva11137
- 什么是用户态?什么是内核态?如何区分?
- 什么是用户态?什么是内核态?如何区分?
- HTTP中的Host字段
- C语言main函数的参数及其返回值详细解析
- 什么是用户态?什么是内核态?如何区分?