如何在objective-c中使用加速度计/陀螺仪以了解是否...
A)iPhone正好位于用户面前,即它是“向上”或
B)iPhone已放在桌子上,即显示器朝上。
答案 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?
按照Apple文档中的链接