题外话:
权利的游戏开播了,引用一句话:
布兰:一个人如果还把,他还能勇敢么?
奈德:人在害怕时候的勇敢,才是真的勇敢。
回归正题:
说下关于 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
相关资源:数据结构—成绩单生成器