有没有办法检测躺在桌子上的iphone是否正在旋转?我确实意识到加速度计没有报告这种运动,也没有报告 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation方法。
有没有办法检测手机旋转的角度变化?谢谢。
答案 0 :(得分:9)
重力矢量在平台上旋转时将保持不变,因此您不会在加速度计上看到任何内容。您可以按照罗盘方向更改来检测此旋转,但仅限于iPhone 3G S.有关详细信息,请参阅CLLocationManager,查看标题方法。
编辑 - 使用iPhone 4,您可以使用陀螺仪检测旋转。 iOS 4中有一个名为CMMotionManager的新类,用于从陀螺仪中获取rotation rate。
答案 1 :(得分:5)
当手机静止时,加速度矢量的总和应为+1。当手机正在旋转时(假设传感器偏离中心),矢量的总和应该大于1并且(希望)有些恒定。
如果你观察那条曲线的衰减,如果这个形状足够独特,可以用来判断手机是否在旋转,我不会感到惊讶。
alt text http://i39.tinypic.com/14vnztx.png
这是Apple的AccelerometerGraph示例应用。
答案 2 :(得分:4)
如果iPhone有罗盘,我想你可以做到。除此之外,我认为不可能或不可靠。
答案 3 :(得分:2)
这实际上取决于加速度计在设备上的位置,我只是使用2g itouch上的加速度计示例应用程序对此进行了测试,您可以看到x和y轴上的初始加速度(2g没有我猜测设备中心的加速度计。所以从某种意义上说,你可以检测到旋转,但我认为挑战在于将加速度与方向加速度区分开来。如果苹果将加速度计放置在不同型号的不同位置,我相信这些值会发生变化。绝对不会通过shouldAutorotateToInterfaceOrientation进行任何操作,我建议你在sdk中加载accelerometergraph样本应用程序并试验加速度向量,看看你是否可以在多个设备上可靠地隔离旋转向量。