MotionManager 陀螺仪实现方式

it2022-05-09  154

题外话:   权利的游戏开播了,引用一句话:   布兰:一个人如果还把,他还能勇敢么?   奈德:人在害怕时候的勇敢,才是真的勇敢。     回归正题:   说下关于 CMMotionManager 这个场景的应用吧,微信小视频不知道大家用过没,无论你横着录,还是竖着录,或者反着拿手机录视频,都会自动转成 正常录视频的样子(影像不会翻转),这种方式主要是通过陀螺仪的方式来实现。大家可以了解一下陀螺仪的声明方法,来仿照微信做一个腾讯小视频的录制功能。   陀螺仪代码如下:     #import <CoreMotion/CoreMotion.h> CMMotionManager *motionManager = [[ CMMotionManager alloc ] init ]; NSOperationQueue *queue = [[ NSOperationQueue alloc ] 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;    }    else if (acceleration.x <= - 0.75 ) {        orientationNew = UIInterfaceOrientationLandscapeRight;    }    else if (acceleration.y <= - 0.75 ) {        orientationNew = UIInterfaceOrientationPortrait;    }    else if (acceleration.y >= 0.75 ) {        orientationNew = UIInterfaceOrientationPortraitUpsideDown;    }    else {        // Consider same as last time         return ;    }        IDSLOG( @"orientationNew: %ld" , ( long )orientationNew);        if (orientationNew == orientationLast) {        return ;    }        orientationLast = orientationNew; }   明天我会把 腾讯 微视频的代码分享给大家,其中录制方向使用陀螺仪来实现。            

转载于:https://www.cnblogs.com/firstrate/p/7214597.html

相关资源:数据结构—成绩单生成器

最新回复(0)