有没有办法检测趴在桌子上的 iPhone 是否正在旋转?我确实意识到加速度计没有报告这种运动,也没有报告给 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 方法。
有没有办法检测手机以这种方式旋转的角度变化?谢谢你。
有没有办法检测趴在桌子上的 iPhone 是否正在旋转?我确实意识到加速度计没有报告这种运动,也没有报告给 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 方法。
有没有办法检测手机以这种方式旋转的角度变化?谢谢你。
重力矢量在平板上旋转时将保持不变,因此您不会在加速度计上看到任何东西。您可以按照指南针航向变化来检测这种旋转,但只能在 iPhone 3G S 上。有关详细信息,请参阅CLLocationManager,查看航向方法。
编辑- 使用 iPhone 4,您可以使用陀螺仪检测旋转。iOS 4 中有一个名为CMMotionManager的新类,用于从陀螺仪获取旋转速率。
当手机静止时,加速度矢量之和应为 +1。当手机旋转时(假设传感器偏离中心),向量的总和应该大于 1 并且(希望)有点恒定。
如果您查看该曲线的衰减,如果该形状足够独特以用于确定手机是否在旋转,我不会感到惊讶。
这是来自 Apple的AccelerometerGraph示例应用程序。
如果 iPhone 有指南针,我想你可以做到。除此之外,我认为这不可能或不可靠。
这实际上取决于设备上加速度计的位置,我只是在 2g itouch 上使用 accelerometergraph 示例应用程序对此进行了测试,您可以在 x 和 y 轴上看到初始加速度(2g 没有加速度计在我猜是设备的中心)。所以从某种意义上说,你可以检测到旋转,但我认为挑战是将加速度与定向加速度区分开来。而且我确信如果苹果将加速度计放置在不同型号的不同位置,这些值会发生变化。肯定没有任何方法可以通过 shouldAutorotateToInterfaceOrientation 来实现,我建议您在 sdk 中加载 accelerometergraph 示例应用程序并尝试使用加速度矢量,看看您是否可以在多个设备上可靠地隔离旋转矢量。