【问题标题】:iPhone held "upwards" or is laying on a tableiPhone“向上”或放在桌子上
【发布时间】:2012-11-28 13:29:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: objective-c ios accelerometer gyroscope


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      首先符合<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] 开始

      希望对您有所帮助。

      【讨论】:

      • 非常感谢,亚当!结合彼得斯的回答(见下文),这正是我想要的! PS:由于示例源代码,我只能将一个答案标记为“已接受的答案”,因此我投票支持您的答案。然而,彼得也应该得到一些学分;-)
      • 没问题。乐于助人(就像 Stack Overflow 经常对我做的那样!)。
      【解决方案3】:

      需要读取accelerometer的z坐标值。

      【讨论】:

      • 应该是Z,X在平面上,好像你在看设备屏幕,左右摇摆手臂。
      【解决方案4】:

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

      所以看看:

      Why is accelerometer:didAccelerate: deprecated in IOS5?

      Simple iPhone motion detect

      点击 Apple 文档中的链接

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-25
        • 1970-01-01
        • 2013-02-26
        • 1970-01-01
        相关资源
        最近更新 更多