如何使用Android传感器计算旋转角度?

如何使用Android传感器计算旋转角度?,android,orientation,Android,Orientation,我正在做一个Opengl应用程序,如果android设备沿Z轴旋转/倾斜,我必须旋转相机 我尝试了SensorManager.getOrientation(R,orientVals)使用磁性和加速计传感器。但是,这些数值波动很大。 陀螺仪也可在我的设备 因为我正在为相机设置动画(旋转),所以我需要平滑的旋转值 请在这方面为我提供指导。请参阅如何阅读Android软件衍生的传感器,这些传感器结合了来自加速度计、磁强计和(如果可用)陀螺仪的数据 若要平滑值,请使用低通滤波器或(更好但更复杂)滤波器。

我正在做一个Opengl应用程序,如果android设备沿Z轴旋转/倾斜,我必须旋转相机

我尝试了
SensorManager.getOrientation(R,orientVals)使用磁性和加速计传感器。但是,这些数值波动很大。
陀螺仪也可在我的设备

因为我正在为相机设置动画(旋转),所以我需要平滑的旋转值

请在这方面为我提供指导。

请参阅如何阅读Android软件衍生的传感器,这些传感器结合了来自加速度计、磁强计和(如果可用)陀螺仪的数据


若要平滑值,请使用低通滤波器或(更好但更复杂)滤波器。我怀疑Android的软件衍生传感器,如“旋转传感器”,已经使用卡尔曼滤波器来组合来自不同传感器的数据。(你可以搜索源代码…

既然你有陀螺仪,就用它吧。磁性/加速度传感器会产生大量噪音(这是可以补偿的,但回转镜更好)。这里有一段视频解释了更多:陀螺仪产生了优秀、可靠的值,但并不是无处不在。如果你想让你的应用程序在很多设备上运行,你就要坚持现在的方式。我发现一个简单的移动平均线是修正这些值的最好方法。它会引起轻微的延迟,但要平稳得多。