android:检测设备倾斜角度的主要概率

时间:2014-12-22 19:39:34

标签: java android android-sensors

对于一个项目,我需要检测Android设备的倾斜度(音高)。为此,我使用加速度传感器和磁场传感器,一切正常。该装置能够在摆锤上前后移动。如果我有摆锤/设备的角度,我可以计算加速度。问题是:所有这些只能静止不动。如果设备位于正在移动的汽车中,则它不再起作用。当汽车制动时,摆锤向前移动并且倾斜度发生变化,但是装置无法检测到这种情况,因为力仍沿着y轴“向下”作用。

在这种情况下是否可以检测到倾斜角度?

不确定我是否清楚地解释了我的问题。我需要的是由设备传感器检测到的移动摆的角度。

<<编辑>>

我需要的是摆锤的正确测量角度,即使它在移动的汽车内(请查看我的Dropbox中的pdf): https://dl.dropboxusercontent.com/u/5655235/sensors.pdf

正如您在图像上看到的那样,如果盒子正在加速,则测得的角度不正确。

这是我的代码:

if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
        acc = event.values;
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
        mag = event.values;

if (acc != null && mag != null) {
    float R[] = new float[9];
    float I[] = new float[9];
    boolean success = SensorManager.getRotationMatrix(R, I, acc, mag);
    if (success) {
      float orientation[] = new float[3];
      SensorManager.getOrientation(R, orientation);

      phiRad = orientation[1];
      phi = Math.toDegrees(phiRad);
    }
}

1 个答案:

答案 0 :(得分:0)

我希望我能正确理解你的问题!!因此,您想要检测设备在移动车辆中时的倾斜度......

首先,当你说:

  

当汽车制动时,摆锤向前移动并且倾斜度发生变化,但是设备无法检测到这种情况,因为力仍沿着y轴“向下”移动。

你确定该设备是垂直的吗?

因此,当汽车移动时,摆锤将获得汽车前进方向的加速度。这里,向前并不意味着它指向设备的x轴,而是指向汽车/表面的x轴。根据我的理解,你试图检查钟摆向x轴的运动,但你应该检查设备的位置。如果我理解你的问题,希望它有所帮助。