获取加速度计上getOrientation的最小值和最大值?

时间:2014-10-13 13:19:06

标签: android android-sensors

我目前正在使用Android上的加速度计,并遇到了一个有趣的情况。我需要找出以下内容的最大值,而不要求最终用户在一些复杂的校准程序中翻转手机。我正在寻找的价值是......

@Override
public void onSensorChanged(SensorEvent event) {

    SensorManager.getOrientation(outR, xyz);

    float X, Y, XMax, YMax;

    X = xyz[1];
    Y = xyz[2];

    XMax = ???;
    YMax = ???;
}

我已经在线搜索,但是没有太多运气确定价值会是什么(看起来它在手机之间会发生变化),也没有人提到从某个地方提取价值的方法。

有谁知道如何确定xyz [1]和xyz [2]的最大/最小值?

更新:我的意思是以下内容:

当我直接从xyz [1]报告输出的浮点数,然后一直向前和向后移动我的手机时,我得到以下结果:

报告的最小值:-1.50(给出或取十分之一) 报告的最大值:1.50(给出或取十分之一)

当我左右摇动手机时,我得到以下xyz [2]:

报告的最小值:-3.14(给出或取十分之一) 它报告的最大值:3.14(给出或取十分之一)

我被告知手机之间的这种变化,但这可以写下来。

1 个答案:

答案 0 :(得分:3)

我不知道您正在谈论的最大/最小值,但getOrientation将使用以下数据填充向量:

xyz[0]: azimuth [-π,π]
xyz[1]: pitch [-π/2,π/2]
xyz[2]: roll [-π,π]

来自docs

  

以上所有三个角都是弧度的,而且是正的   逆时针方向。

另请参阅SensorManager.java:1094类:

https://android.googlesource.com/platform/frameworks/base/+/b267554/core/java/android/hardware/SensorManager.java