令我惊讶的是,在Android 4.0+中,他们决定将线性加速度传感器从可用的软件传感器中移除,并将其放入硬件传感器中,这是在普通手机中很少可用的陀螺仪。我不知道他们为什么这么做,但想象一下,当我交付了在一部廉价的2.3手机上测试过的软件,而在2个月前的手机上,它显示无法实例化直线加速度传感器,这让我感到惊讶。他们为什么要这么做?
为了挽救我的生命,我检查了手机里是否有加速度计,而且确实有。基于,我应该能够用加速度计的数据来计算直线加速度。我检查了代码,并看到一个没有可用声明的变量。
public void onSensorChanged(SensorEvent event){
// In
我正在尝试理解来自安卓Sensor.TYPE_ACCELEROMETER的文档:它给出了这个例子:
显然,为了测量设备的实际加速度,必须消除重力的影响。这可以通过应用高通滤波器来实现。相反,可以使用低通滤波器来隔离重力。
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 ra