规范化Android方向传感器(Roll)

时间:2012-03-10 21:40:05

标签: android accelerometer

我正在创建一个类似于Google Sky Map的增强版应用程序,并且当手机平放时需要我的滚动值从-90度,当用户将手机垂直放在地面时需要0度,以及指向手机背面时指向+90度(即摄像机直接指向天空。

我的问题是加速计传感器的值从-90到+90返回,但+90是手机垂直于地面时的值。我不能简单地从值中减去90,因为随着手机开始向后倾斜,值开始减小。基本上,我需要一种了解手机何时超过+90的方法?

很抱歉,如果我没有很好地解释这一点,很难用语言表达。

编辑:12/03/12

我用过这个:http://www.mail-archive.com/android-beginners@googlegroups.com/msg23415.html

3 个答案:

答案 0 :(得分:0)

使用加速计传感器代替方向传感器。不要混淆,不要混淆他们的。

答案 1 :(得分:0)

当z轴上的加速度为负时,滚动值将超出+90的值。因此,您可以使用此事实并相应地校准您的手机。

答案 2 :(得分:0)

通常,您不应该使用 ORIENTATION 传感器,也应该避免使用getOrientation()。相反,您应该将 ACCELEROMETER GRAVITY MAGNETOMETER 结合使用getRotationMatrix(),并为您的应用使用3-d变换。< / p>

您还可以使用 ROTATION 传感器返回一个Quaternion,这很容易转换为变换矩阵。

您希望使用 ORIENTATION 的唯一时间是以人性化的方式显示数值。

有关更详细的答案和示例代码,请参阅https://stackoverflow.com/a/11550241/338479https://stackoverflow.com/a/13895376/338479