我目前正在开发一个与Android加速计传感器相关的应用程序 . 我想基于加速度计数据监控Android设备的移动 . 但我真的很沮丧,因为加速计传感器提供的数据对我没有任何意义 . 例如,我将android设备放在桌面上并从左到右一直推动它 . 因此,X轴的值应至少为负值,并且当力从左到右时保持为负(我已经摆脱了对加速度计数据的重力影响) . 然而,我得到的数据显示正值和负值,这对我来说是如此奇怪,因为力是一个方向所以加速度肯定只是负值 . 这是我的代码:

final float alpha = 0.8f;
    // Isolate the force of gravity with the low-pass filter.
    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];

    // Remove the gravity contribution with the high-pass filter.
    linear_acceleration[0] = event.values[0] - gravity[0];
    linear_acceleration[1] = event.values[1] - gravity[1];
    linear_acceleration[2] = event.values[2] - gravity[2];

    dbManager.insertAccData(String.valueOf(primaryKey++),                    
    String.valueOf(linear_acceleration[0]),
    String.valueOf(linear_acceleration[1]),
    String.valueOf(linear_acceleration[2]));

我按照之前的描述进行了移动,并将linear_acceleration数据放入SQLliteDatabase进行进一步分析 . 下图是我从SQLliteDatabase获得的数据 .

I export the linear_acceleration data to Excel and create this graphy

正如我们所看到的,有两条曲线显示正数,但有一条显示负值,这是不合理的,因为我不认为当我从左向右推动设备时会产生任何相反的力,所以我我是如此挣扎着这两条 Value 高于0的曲线 . 任何人都可以帮助我,并拯救我的生命 . 非常感谢您的到来!