Мы бы хотели отделить силу тяжести от остальных сил, действующих на устройство. Существует простой способ сделать это, который называется фильтром нижних частот. Силы, отличные от силы тяжести, действуют на устройство не постепенно. Другими словами, если пользователь встряхивает устройство, сила тряски быстро отражается в значениях акселерометра. Фильтр нижних частот в действительности отсекает силу тряски и оставляет только постоянную силу, которой является сила тяжести. Давайте взглянем на пример приложения под названием GravityDemo, иллюстрирующий эту концепцию. . Java-код главной активности.
Результат запуска этого приложения показан. Этот экранный снимок получен, когда устройство лежало на столе.
Во многом этот пример приложения совпадает с приложением http://www.zao-astor.ru/landscape_design.html AccelerometerSensor. Отличия кроются в методе onSensorChanged. Вместо простого отображения значений из массива событий мы пытаемся отслеживать силу тяжести и движение. Мы получаем силу тяжести, используя только небольшую часть нового значения из массива event, но крупную часть из предыдущего значения массива gravity. Две используемых части должны давать в сумме. Мы применяем. и. Можете также попробовать другие значения, такие как. и. Наш массив gravity не может изменяться так же быстро, как действительные значения датчика, но это ближе к реальности. Именно это и делает фильтр нижних частот. Значения массива event будут изменяться, если силы, воздействующие на устройство, приводят к его перемещению, и мы не хотим их измерять как часть силы тяжести. В массив gravity должны записываться только показатели силы тяжести. Применяемая здесь математика не содержит никакой “магии”, а просто позволяет вычислять значения силы тяжести, которые намного ближе к реальным, чем исходные значения в массиве event.
Обратите внимание в коде на массив motion. Отслеживая отличия между значениями из массива event и вычисленными значениями силы тяжести, в массиве motion
мы, в сущности, измеряем активные силы, отличные от силы тяжести. Если значения в массиве motion равны или очень близки к нулю, это означает, что устройство, скорее всего, не перемещается. Данная информация полезна. Формально устройство, перемещающееся с постоянной скоростью, также будет иметь близкие к нулю значения в массиве motion, однако в реальности, если пользователь перемещает устройство, значения в motion будут значительно больше, чем. Пользователи не имеют возможности перемещать устройство с идеально постоянной скоростью.
Опубликовал katy
February 18 2015 15:18:25 ·
0 Комментариев ·
2803 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.