CoreMotion框架中加速度计使用简明教程
前言
之前有人通过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手机的亮点功能。
详细用途,须要我们发散思维,说不定哪一天你也有一个非常牛的创意。
屌丝逆袭或许就在下一刻。