Android Fsensor LinearAccelerationFilter возвращает индекс массива вне диапазона Ошибка - PullRequest
0 голосов
/ 01 октября 2018

в моем коде я использую 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 пытается работать с плавающей точкой массива в индексе, который не существует, но почемуэто делает это? У вас есть идеи?

...