Программное обеспечение фильтра низких частот?
даю приложение, в котором мне нужно расположить 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() }
Для фильтрации шума. Но это не очень хорошо работает :)