Android 在GDK级别的示例中,SensorManager.getOrientation()是否应该像atan()方法一样工作?

Android 在GDK级别的示例中,SensorManager.getOrientation()是否应该像atan()方法一样工作?,android,google-glass,Android,Google Glass,我正在玩,并试图添加偏航和俯仰指示,以现有的滚动指示。在LevelRenderer.computeOrientation()中,我使用类似的调用Math.atan2()来获得俯仰角,但后来我发现有一个APISensorManager.getOrientation()听起来像是为我做了这个数学运算。然而,当我改为代码来调用该函数时,我得到了所有的零,而不是我所期望的 此方法是否仅在某些情况下有效?我看到他们在inonSensorChanged()中使用了它 谢谢。您是否确保每种方法都使用了正确的传

我正在玩,并试图添加偏航和俯仰指示,以现有的滚动指示。在
LevelRenderer.computeOrientation()
中,我使用类似的调用
Math.atan2()
来获得俯仰角,但后来我发现有一个API
SensorManager.getOrientation()
听起来像是为我做了这个数学运算。然而,当我改为代码来调用该函数时,我得到了所有的零,而不是我所期望的

此方法是否仅在某些情况下有效?我看到他们在in
onSensorChanged()
中使用了它


谢谢。

您是否确保每种方法都使用了正确的传感器?水准仪样本使用
重力
传感器,该传感器为您提供表示重力方向和大小的向量,因此您可以直接从这些值计算反正切。罗盘使用的是
ROTATION\u VECTOR
,需要将其转换为旋转矩阵,然后传递到
getOrientation
。可能就是这样。我传递所有的零作为旋转矩阵,因为我认为这是一个输出参数。同样让我困惑的是
getOrientation()
SensorManager
上是静态的,所以我认为它是由几个不同的传感器合成的。据我所知,静态getOrientation()方法根本不与传感器对话,而只是简单地对矩阵进行数学运算,以提供滚动、俯仰和偏航角度。难道没有一种传感器类型可以为我管理所有这些吗?没错--
getOrientation
只是一个数学助手。传感器
类型_方向
以前用于直接获取这些值,但由于其他传感器更精确,因此已被弃用。最佳实践是像罗盘示例一样使用
类型旋转向量
,并通过调用该向量的数学助手来获取偏航/俯仰/滚动角度。(指南针已经计算了偏航和俯仰,因此获取该代码并修改它以获得横摇应该是一项小任务。)