【问题标题】:How can I detect if an iPhone is rotating while being face up in a table?如何检测 iPhone 面朝上放在桌子上时是否在旋转?
【发布时间】:2010-03-16 23:15:53
【问题描述】:

有没有办法检测面朝上趴在桌子上的 iphone 是否在旋转?我确实意识到加速度计没有报告这种运动,也没有报告给 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 方法。

有没有办法检测以这种方式旋转的手机的角度变化?谢谢。

【问题讨论】:

    标签: iphone orientation detect rotation


    【解决方案1】:

    重力矢量在平板上旋转时将保持不变,因此您不会在加速度计上看到任何东西。您可以按照指南针航向变化来检测这种旋转,但只能在 iPhone 3G S 上进行。有关详细信息,请参阅CLLocationManager,查看航向方法。

    编辑 - 使用 iPhone 4,您可以使用陀螺仪检测旋转。 iOS 4 中有一个名为CMMotionManager 的新类,用于从陀螺仪获取rotation rate

    【讨论】:

      【解决方案2】:

      当手机静止时,加速度矢量之和应为 +1。当手机旋转时(假设传感器偏离中心),向量的总和应该大于 1 并且(希望)有点恒定。

      如果您查看该曲线的衰减,如果该形状足够独特以用于确定手机是否在旋转,我不会感到惊讶。

      这是来自 Apple 的 AccelerometerGraph 示例应用程序。

      【讨论】:

      • 漂亮的图表。有这样的应用吗?
      • 感谢您的意见。我尝试使用该应用程序,然后旋转我的 iPhone,但我没有看到加速度计有任何变化。也许我的传感器在中间?
      • 你旋转它的速度有多快?我把手机放在桌子上,好好地旋转一下。当您更改手机的方向时,您是否看到图表发生了变化?
      • 我的旋转速度很慢。我的手机没有带atm,但我会再试一次。谢谢。
      【解决方案3】:

      如果 iPhone 有指南针,我想你可以做到。除此之外,我认为这是不可能的或可靠的。

      【讨论】:

      • 接近磁极时性能会迅速下降;这将排除几个关键的人口统计数据(企鹅、圣诞老人和玩具制造精灵,仅举几例)。
      【解决方案4】:

      这实际上取决于设备上加速度计的位置,我只是在 2g itouch 上使用 accelerometergraph 示例应用程序对此进行了测试,您可以在 x 和 y 轴上看到初始加速度(2g 没有我猜是设备中心的加速度计)。所以从某种意义上说,你可以检测到旋转,但我认为挑战是将加速度与定向加速度区分开来。而且我确信如果苹果将加速度计放置在不同型号的不同位置,这些值会发生变化。通过 shouldAutorotateToInterfaceOrientation 肯定没有任何方法可以做到这一点,我建议您在 sdk 中加载 accelerometergraph 示例应用程序并尝试使用加速度矢量,看看您是否可以在多个设备上可靠地隔离旋转矢量。

      【讨论】:

      • 这实际上是我尝试使用加速度计图形示例的结果,而这正是我意识到没有任何报告的时候。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 2016-06-17
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多