Программное обеспечение фильтра низких частот?

даю приложение, в котором мне нужно расположить ImageView в зависимости от ориентации устройства. Я использую значения датчиков MagneticField и Accelerometer для расчета ориентации устройства с

SensorManager.getRotationMatrix(rotationMatrix, null, accelerometerValues, magneticFieldValues)
SensorManager.getOrientation(rotationMatrix, values);
double degrees = Math.toDegrees(values[0]);

Моя проблема в том, что расположение ImageView очень чувствительно к изменениям ориентации. Создание изображения просмотра постоянно прыгает по экрану. (потому что градусы меняются)

Я читал, что это может быть потому, что мое устройство находится рядом с вещами, которые могут повлиять на показания магнитного поля. Но это не единственная причина, по которой это кажется.

Я попытался загрузить некоторые приложения и обнаружил, что "3D компас" а также "Компас"остается очень стабильным в своих показаниях (при установке фильтра шума), я хотел бы, чтобы такое же поведение в моем приложении.

Я прочитал, что я могу настроить "шум" моих чтений, добавив "Фильтр низких частот", но я понятия не имею, как это реализовать (из-за отсутствия математики).

Я надеюсь, что кто-то может помочь мне создать более устойчивое чтение на моем устройстве, где небольшое движение к устройству не повлияет на текущую ориентацию. Прямо сейчас я делаю маленький

if (Math.abs(lastReadingDegrees - newReadingDegrees) > 1) { updatePosition() }

Для фильтрации шума. Но это не очень хорошо работает :)

Ответы на вопрос(5)

Ваш ответ на вопрос