в моем коде я использую Fsensor Libary (https://github.com/KalebKE/FSensor) для реализации LowPassFilter и LinearAccelerationFilter для фильтрации данных акселерометра:
lowPassFilter = new LowPassFilter();
linearAccelerationFilter = new LinearAcceleration(lowPassFilter) {
@Override
public float[] getGravity() {
return new float[0];
}
};
lowPassFilter.setTimeConstant(5);
фильтры используются в onSensorChanged:
Sensor mySensor = sensorEvent.sensor;
//if Sensor is Accelerator
if (mySensor.getType() == Sensor.TYPE_ACCELEROMETER) {
try{
//filtering the acceleration
System.arraycopy(sensorEvent.values, 0, acceleration, 0, sensorEvent.values.length);
filteredAcceleration = lowPassFilter.filter(acceleration);
filteredAcceleration = linearAccelerationFilter.filter(filteredAcceleration);
}catch (Exception e){
Log.e("Low Pass Filter", ""+e);
}
Каждый раз, когда вызывается onSensorChanged, я получаю сообщение об ошибке:
E/Low Pass Filter: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
Так что linearAccelerationFilter пытается работать с плавающей точкой массива в индексе, который не существует, но почемуэто делает это? У вас есть идеи?