Android getOrientation()方位角结果与文档不匹配

时间:2019-10-16 18:37:08

标签: java android

因此,我正在尝试确定手机与磁北之间的方位角。像这样:

float[] rotation = new float[9];
SensorManager.getRotationMatrix(rotation, null, lastMag, lastAcc);

float[] orientation = new float[3];
SensorManager.getOrientation(rotation, orientation);

if (System.currentTimeMillis() / 1000 - lastTime / 1000 > 0) {
    Log.d("MonitorService", "Current azimuth: " + String.valueOf(orientation[0]));
    lastTime = System.currentTimeMillis();
}

我正在阅读getOrientation()的文档,发现这个方位角的定义来自orientation[0]

  

values [0]:方位角,围绕-z轴的旋转角度。该值表示设备的y轴和磁性北极之间的角度。朝北时,此角度为0,当朝南时,此角度为π。同样,当面向东方时,该角度为π/ 2,而面向西方时,该角度为-π/ 2。值的范围是-π到π。

文档清楚地指出,当Y轴指向东时,我应该看到值,当指向西轴时,我应该看到值。 / p>

但是,我所看到的行为恰恰相反!当我将手机的Y轴指向东方时(例如,屏幕向上,屏幕顶部指向东,或屏幕向下,屏幕顶部指向东),我会得到方位角值!

我是否正在正确考虑?有人可以在这里解释我的逻辑错在哪里吗?

是的,我知道这里有一个相关的问题:Android getOrientation() returns azimuth, positive or negative?

但是,我认为我的问题很独特,因为:

  • 问题来自2013年,根据问题引用文档的方式,看来文档是在这段时间内被重写的。
  • 文档已被重写,以提供输出的特定示例,在我的经验中显示为错误的示例

0 个答案:

没有答案