iPhone举行“向上”或正在桌子上

时间:2012-11-28 13:29:34

标签: objective-c ios accelerometer gyroscope

如何在objective-c中使用加速度计/陀螺仪以了解是否...

A)iPhone正好位于用户面前,即它是“向上”或

B)iPhone已放在桌子上,即显示器朝上。

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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]启动

希望有所帮助。

答案 2 :(得分:0)

您需要读取accelerometer的z坐标值。

答案 3 :(得分:0)

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

所以看看:

Why is accelerometer:didAccelerate: deprecated in IOS5?

Simple iPhone motion detect

按照Apple文档中的链接