从Android中的加速度计获得的x,y,z值是什么?

时间:2014-05-26 13:45:14

标签: android

起初我想:

  • x - 从左到右倾斜手机,反之亦然
  • y - 倒置,反之亦然
  • z - 上下提起手机

但它似乎不是那样的。如果我错了,任何人都可以纠正我。

我想知道这些值,以便了解手机的角度。是否可以使用这些值来了解它?

2 个答案:

答案 0 :(得分:5)

加速度是一个矢量,即它的大小及其发生方向的重要性。

保持这一点,并且在Nicolai DitlevKroghKrüger提供的链接中看到图像,我们得到的是手机的右侧是正X方向,顶侧是正Y方向,屏幕侧是正Z方向。 / p>

现在强制=质量x加速度

因此加速=力/质量

现在,重力始终作用于您的设备。为了防止它掉落,你必须施加相同的力,但是在“OPPOSITE”方向。

现在,当您将手机放在水平桌面上时,桌子会施加向上的力(从手机背面朝向屏幕),这是正Z方向。因此,此处的加速度是手机在正Z方向上的力/质量。由于手机没有移动,意味着桌子上的力等于重力,并且在任何其他方向上也没有其他力。重力=质量×9.8(约)。因此,对于加速度计的Z参数,您会看到接近+10的值,而其他两个接近于零。

再举一个例子。这次握住手机,使手机右侧向下,左侧向上,并将手机靠近耳机和麦克风(对边)。在这种情况下,您向上施加力以抵抗重力,以防止您的手机在负X方向下降(请记住,在手机正X方向指向手机的右侧)。因此,对于加速度计的X参数,您将看到接近-10的值。

如果用户从水平面以一定角度(例如a)握住手机(假设用户向下倾斜手机的右侧),则重力变为质量x 9.8 x Cos(a),其中'a'在沿着手机的X轴,不是弧度。因此加速度现在变为9.8 x Cos(a)。由于Cos(a)的最大值= 1(在a = 0度),对于任何其他角度,用户将看到加速度计的X参数的值小于9.8。如果角度a = 60度(近似),那么X参数将显示接近5的值,因为Cos(60)= 0.5。

这是加速度计输出值的变化方式。

用户可以使用X,Y&的值。 Z计算设备从任何平面(比如水平面)的实际倾斜角度。

假设X参数显示值6.然后倾斜是aCos(6 / 9.8)(即Cos反向,结果将以弧度表示)。将弧度转换为度数乘以180 / pi。因此,最终倾斜角度'a'= aCos(6 / 9.8)*(180 / pi)度。

这是您如何了解手机的倾斜度并使用它来模拟屏幕上数字对象的力量。更多的倾斜意味着更多的加速度,因此更大的力量。

答案 1 :(得分:1)

将加速度计的值输入mValuesAccel [3]并将重力值输入mValuesMagnet [3]后,执行以下方法。

enter code here
SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel,ValuesMagnet);   
SensorManager.getOrientation(mRotationMatrix, mValuesOrientation);

执行上述方法后,mValuesOrientation中获得的值为:

mValuesOrientation [0]:i)如果-ve X轴朝西,则0度; ii)朝南,然后-90度; iii)面向北方,然后是-180或180度;
iv)朝东,然后90度; 因此,它介于-180度到180度之间 注意:1)将获得的X值转换为度数后,您将获得上述值。 2)X轴将从原点到右侧,您的原点位于手机的左下角。

mValuesOrientation [1]:如果你抬起手机(躺在桌子上),使手机顶部朝向天空,那么你得到-ve值,反之亦然+ ve值 mValuesOrientation [2]:如果你移动你的手机(躺在桌子上),比如把书中的纸张翻到左边,它会给出-ve值,右边则给出+ ve值。