CoreMotion框架中加速度计使用简明教程
来源:互联网 发布:java算法技术手册 编辑:程序博客网 时间:2024/05/16 10:18
前言
之前有人通过iPhone的加速度计做出一个手机防盗APP,而且正是通过这个防盗APP拿到天使投资。从此以后华丽转身,公司发展的有声有色。虽然这个项目最后不怎么样,但是,确实是一个不错的想法。
也许你不知道,每一台iPhone都内置的有加速度计。这样当用户操作手机的的时候,比如旋转手机,内置的加速度计就会做出反应。
在iOS4之前加速度计是由UIAccelerometer
来采集数据的,现在都是用CoreMotion
来处理。两种使用都比较简单,相对来说UIAccelerometer
更简单一些。本文将分享两者的用法。
加速度计原理
来自网络
iPhone的加速度计有三个轴,分别是x轴、y轴、z轴,如上图所示。这是一个三维立体空间,可以捕获用户每一个角度的操作。通过这三个轴可以计算iPhone倾斜的角度,从而计算出加速度。
UIAccelerometer使用
UIAccelerometer
的使用比较简单,需要实现UIAccelerometerDelegate
的代理方法,具体代码如下:
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];accelerometer.delegate = self;accelerometer.updateInterval = 0.1;
实现UIAccelerometerDelegate
代理方法:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration NS_DEPRECATED_IOS(2_0, 5_0){ NSLog(@"x -> %f y - > %f z -> %f",accelerometer.x,accelerometer.y,accelerometer.z);}
CoreMotion加速度计
首先需要引入#import <CoreMotion/CoreMotion.h>
,直接通过block
回调,然后处理三个轴的数据。代码如下:
CMMotionManager *motionManager = [[CMMotionManager alloc] init];NSOperationQueue *queue = [[NSOperationQueue alloc] init];//加速计if (motionManager.accelerometerAvailable) { motionManager.accelerometerUpdateInterval = 0.1; [motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData,NSError *error){ if (error) { [motionManager stopAccelerometerUpdates]; NSLog(@"error"); }else{ NSLog(@"x -> %f y - > %f z -> %f",accelerometerData.acceleration.x,accelerometerData.acceleration.y,accelerometerData.acceleration.z); } }];}else{ NSLog(@"This device has no accelerometer");}
以上就是关于UIAccelerometer
和CoreMotion
的使用,加速度计确实是iPhone手机的亮点功能。具体用途,需要我们发散思维,说不定哪一天你也有一个很牛的创意。屌丝逆袭也许就在下一刻。
0 0
- CoreMotion框架中加速度计使用简明教程
- CoreMotion框架中加速度计使用简明教程
- CoreMotion框架
- ios中陀螺仪CoreMotion的使用
- ios中陀螺仪CoreMotion的使用
- ios中陀螺仪CoreMotion的使用
- Python 中使用SQlite 数据库简明教程
- 实用知识:CoreMotion框架使用(加速计方法使用)
- Wax框架简明教程(3)开始使用Wax
- Wax框架简明教程(3)开始使用Wax
- iOS之 CoreMotion 框架
- J2ME简明教程 中
- bcg 简明使用教程
- Git使用简明教程
- map使用简明教程
- Git 简明使用教程
- 事务使用简明教程
- Markdown简明使用教程
- HDU 1711 Number Sequence
- MySQL数据库游标
- 从本地JSON文件中读取数据
- html学习笔记(8)
- STM32时钟讲解(内部构架说明)
- CoreMotion框架中加速度计使用简明教程
- mysql日志详细解析
- 删除某目录下的文件夹和文件
- Android Socket开发 注意事项
- HDU 1301:Jungle Roads【Prim】
- 中文版、免费的项目管理工具:teambition worktile
- java邮件发送和短信发送(二)
- javax.mail 调用企业邮箱发送邮件,调用个人邮箱发送邮件
- 大数据时代:内存数据网格逐步成为主流