每次移动设备时,加速度计值都会变为0

时间:2016-05-21 14:24:11

标签: android accelerometer sensor

我想弄清楚加速计传感器的工作原理。我有一个由我的MainActivity启动的服务,并将传感器的数据记录在控制台中。我遵循docs建议(消除了传感器读数中的“重力”)。现在,我每次移动设备时都会观察到奇怪的行为。假设它正躺在桌子上,我将它垂直移动,设备顶部朝上,就像那样

enter image description here

并且读数从全零(XYZ)变为: enter image description here

正如您从加速度计的读数中看到的那样,只要我将设备保持在上述位置时,读数就会恢复为零。有人可以解释这种行为。为什么X,Y和Z值返回零(假设我持有设备窃取)。

这是我记录数据的服务代码:

@Override
public void onSensorChanged(SensorEvent event) {
    // alpha is calculated as t / (t + dT)
    // with t, the low-pass filter's time-constant
    // and dT, the event delivery rate

    final float alpha = (float) 0.8;


    gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];
    gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];
    gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];

    linear_acceleration[0] = event.values[0] - gravity[0];
    linear_acceleration[1] = event.values[1] - gravity[1];
    linear_acceleration[2] = event.values[2] - gravity[2];




    double x = Math.abs(Math.round(linear_acceleration[0]));
    double y = Math.abs(Math.round(linear_acceleration[1]));;
    double z = Math.abs(Math.round(linear_acceleration[2]));

    Log.d(TAG, "TimeStamp: " + event.timestamp + " X: " + x + " Y: " + y + " Z: " + z);

}

0 个答案:

没有答案