我目前正在使用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(给出或取十分之一)我被告知手机之间的这种变化,但这可以写下来。
答案 0 :(得分:3)
我不知道您正在谈论的最大/最小值,但getOrientation将使用以下数据填充向量:
xyz[0]: azimuth [-π,π]
xyz[1]: pitch [-π/2,π/2]
xyz[2]: roll [-π,π]
来自docs:
以上所有三个角都是弧度的,而且是正的 逆时针方向。
另请参阅SensorManager.java:1094类: