Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正常化Android方向传感器(滚动)_Android_Accelerometer - Fatal编程技术网

正常化Android方向传感器(滚动)

正常化Android方向传感器(滚动),android,accelerometer,Android,Accelerometer,我正在制作一个类似于Google Sky Map的AR应用程序,当手机放平时,我的滚动值需要从-90度变为0度,当用户手持手机垂直于地面时,需要从0度变为+90度,当手机背面指向天空时(即,相机直接向上) 我的问题是加速计传感器返回的值从-90到+90,但+90是指手机与地面垂直时的值。我不能简单地从值中减去90,因为随着手机开始向后倾斜,值开始减小。因此,基本上,我需要一种方法来知道手机何时超过+90 对不起,如果我没有很好地解释这一点,那很难用语言表达清楚 编辑:12/03/12 我使用了这

我正在制作一个类似于Google Sky Map的AR应用程序,当手机放平时,我的滚动值需要从-90度变为0度,当用户手持手机垂直于地面时,需要从0度变为+90度,当手机背面指向天空时(即,相机直接向上)

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

对不起,如果我没有很好地解释这一点,那很难用语言表达清楚

编辑:12/03/12


我使用了这个:

使用加速计传感器而不是方向传感器。不要混淆,不要混合他们的传感器。

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

一般来说,你不应该使用方向传感器,并且你也应该避免使用
getOrientation()
。相反,你应该使用加速度计或重力与磁强计结合使用
getRotationMatrix()
,并为你的应用程序使用三维变换

还可以使用旋转传感器返回四元数,这很容易转换为变换矩阵

只有在以友好的方式显示数值时,才需要使用方向


有关更详细的答案和示例代码,请参见和。

稍后您想对滚动做什么?无论如何,我不会使用滚动。您可以对旋转矩阵执行与欧拉角相同的任何操作。顺便说一句,我想您指的是“俯仰”,而不是“滚动”