0

我如何必须在objective-c中使用加速度计/陀螺仪才能确定是否......

A) 将 iPhone 放在用户面前,即“向上”或

B) 例如,iPhone 已放在桌子上,即显示屏朝上。

4

4 回答 4

5

您需要阅读UIAcceleration 类参考并注意重力始终存在。因此,当 iPhone 垂直(并保持稳定)时,您将沿 y 轴读取 1g。当它平放在桌子上时,您将沿 z 轴读取 1g

于 2012-11-28T13:35:25.963 回答
1

首先符合<UIAccelerometerDelegate>然后你可以使用这些方法:

    #pragma mark --- Acceleration Start and Stop ----------------------------

    -(void)startMeasuringAcceleration{

        NSLog(@"Started Measuring Acceleration");

        [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1];//update interval (1s at moment)
        [[UIAccelerometer sharedAccelerometer] setDelegate:self];

    }

    -(void)stopMeasuringAcceleration{

        [[UIAccelerometer sharedAccelerometer] setDelegate:nil];

    }

    #pragma mark UIAcceleromete Delegate Methods-----------------------------------------------

    - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{

        NSLog(@"%f, %f, %f, %f", acceleration.x, acceleration.y, acceleration.z, acceleration.timestamp);

}

测量 X、Y 和 Z。Z 是屏幕上的轴,Y 从上到下,X 从左到右。

在 viewDidLoad 调用[self startMeasuringAcceleration]开始

希望有帮助。

于 2012-11-28T18:19:41.837 回答
0

您需要读取加速度计的 z 坐标值。

于 2012-11-28T13:35:17.757 回答
0

您不应该使用 UIAccelerometerDelegate,因为它自 iOS 5.0 以来已被弃用。从 iOS 4 开始,它被使用传感器融合的更可靠的 Core Motion 框架所取代。

所以看看:

为什么加速计:didAccelerate:在 IOS5 中已弃用?

简单的 iPhone 运动检测

按照 Apple 文档内部的链接

于 2012-11-29T09:31:23.897 回答