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

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

有帮助吗?

解决方案

当它在平坦的桌子上旋转时,重力矢量将保持不变,因此您在加速度计上看不到任何东西。您可以按照罗盘航向的变化来检测这种旋转,但仅限于 iPhone 3G S。请参阅 CL位置管理器 详情请查看标题方法。

编辑 - 使用 iPhone 4,您可以使用陀螺仪检测旋转。iOS 4 中有一个新类叫做 CMMotionManager 为了得到 旋转速度 来自陀螺仪。

其他提示

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

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

alt text

这是 加速度计图 来自 Apple 的示例应用程序。

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

这将真正取决于设备上的加速计的位置,我此使用上一个2G的itouch的accelerometergraph示例应用程序,你可以看到在x和y轴的初始加速度只是测试(2G的不具有加速度计在我想装置)的中心。因此,在某种意义上,你可以检测旋转,但是我觉得面临的挑战将来自差异化方向加速:加速。而且我敢肯定,如果苹果放在加速计在不同型号不同位置的值会改变。将有definitally不会经由shouldAutorotateToInterfaceOrientation做它的任何方式,我建议你在加载SDK和实验用加速度矢量的accelerometergraph示例应用程序来看看是否可以在多个设备上可靠地分离出的旋转矢量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top