拍摄照片时,计算iPhone相机的视线角度(相对于北方)

时间:2015-04-02 13:51:01

标签: ios camera

当使用iPhone(而不是设备移动的地方)拍摄照片时,如何获得相机视线角度(相对于北,以度为单位,零为北,180为南)?

例如,我向北走(0度),向右拍照(90度),我想要90度作为我的结果,因为那是iPhone的视线相对于北方的角度。

+/- 20度范围内的准确结果很好。

2 个答案:

答案 0 :(得分:0)

您可以在ios中使用陀螺仪API。

请参阅此tuto例如:http://ios-programming.blogspot.fr/2011/11/gyroscope-accelerometer-ios-sdk.html

答案 1 :(得分:0)

使用CMMotionManager类接收动作数据。不要忘记包含CoreMotion框架。

#import <CoreMotion/CoreMotion.h>

- (void)startProcess
{
    CMMotionManager *motionManager = [CMMotionManager new];
    motionManager.deviceMotionUpdateInterval = .2;

    if (motionManager.deviceMotionAvailable ) {
        NSOperationQueue *motionQueue = [[NSOperationQueue alloc] init];
        CMAttitudeReferenceFrame attitudeFrame = CMAttitudeReferenceFrameXTrueNorthZVertical;
        [motionManager startDeviceMotionUpdatesUsingReferenceFrame:attitudeFrame
                                                           toQueue:motionQueue
                                                       withHandler:^ (CMDeviceMotion *newMotionData, NSError *newError) {
                                                    CMAcceleration gravity = motionData.gravity;
                                                    CGFloat rotation = [self rotationForGravity:gravity];
                                                });          
                                           }];
    }

- (CGFloat)rotationForGravity:(CMAcceleration)customGravity
{
    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;

    if(orientation == UIInterfaceOrientationLandscapeLeft)
        return customGravity.y;
    else
        return -customGravity.y;
}