码迷,mamicode.com
首页 > 其他好文 > 详细

MotionManager 陀螺仪实现方式

时间:2017-07-20 23:50:20      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:rem   data   orm   分享   manage   mon   微信   ==   回归   

 
题外话:
 
权利的游戏开播了,引用一句话:
 
布兰:一个人如果还把,他还能勇敢么?
 
奈德:人在害怕时候的勇敢,才是真的勇敢。
 
 
回归正题:
 
说下关于 CMMotionManager 这个场景的应用吧,微信小视频不知道大家用过没,无论你横着录,还是竖着录,或者反着拿手机录视频,都会自动转成 正常录视频的样子(影像不会翻转),这种方式主要是通过陀螺仪的方式来实现。大家可以了解一下陀螺仪的声明方法,来仿照微信做一个腾讯小视频的录制功能。
 
陀螺仪代码如下:
 
 

#import <CoreMotion/CoreMotion.h>


CMMotionManager *motionManager = [[CMMotionManageralloc] init];
NSOperationQueue *queue = [[NSOperationQueuealloc] init]; //[NSOperationQueue currentQueue]
// 加速计
if (motionManager.accelerometerAvailable) {
    motionManager.accelerometerUpdateInterval =
1.f;
    motionManager.gyroUpdateInterval =
1.f;
    [motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *
_Nullable accelerometerData, NSError * _Nullable error) {
       
if (error) {
            [motionManager stopAccelerometerUpdates];
            NSLog(
@"error: %@", error);
        }
       
else {
            NSLog(
@"x--> %f\n y--> %f\n z--> %f\n",
                  accelerometerData.acceleration.x,
                  accelerometerData.acceleration.y,
                  accelerometerData.acceleration.z);
           
            [
self hanldeAccelertionData:accelerometerData.acceleration];
        }
    }];
}
else {
    NSLog(
@"This device has no accelerometer");
}


- (
void)hanldeAccelertionData:(CMAcceleration)acceleration
{
    UIInterfaceOrientation orientationNew;
   
   
if (acceleration.x >= 0.75) {
        orientationNew = UIInterfaceOrientationLandscapeLeft;
    }
   
elseif (acceleration.x <= -0.75) {
        orientationNew = UIInterfaceOrientationLandscapeRight;
    }
   
elseif (acceleration.y <= -0.75) {
        orientationNew = UIInterfaceOrientationPortrait;
    }
   
elseif (acceleration.y >= 0.75) {
        orientationNew = UIInterfaceOrientationPortraitUpsideDown;
    }
   
else {
       
// Consider same as last time
       
return;
    }
   
    IDSLOG(
@"orientationNew: %ld", (long)orientationNew);
   
   
if (orientationNew == orientationLast) {
       
return;
    }
   
    orientationLast = orientationNew;
}
 
明天我会把 腾讯 微视频的代码分享给大家,其中录制方向使用陀螺仪来实现。
 
 
 
 
 
 

MotionManager 陀螺仪实现方式

标签:rem   data   orm   分享   manage   mon   微信   ==   回归   

原文地址:http://www.cnblogs.com/firstrate/p/7214597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!