Гироскоп включен в getOrientation?

#android #android-sensors

#Android #android-датчики

Вопрос:

Я пытаюсь понять управление датчиками Android. Прав ли я в том, что если я хочу, чтобы гироскоп был включен для определения ориентации телефона, это выполняется автоматически, когда я вызываю getOrientation (..) и на телефоне установлен датчик гироскопа?

Итак, если телефон получил ускорение и датчик гироскопа, вероятно, результат ориентации будет лучше, в отличие от случая, когда у него есть только датчики ускорения?

Спасибо!

Ответ №1:

Методы, включенные в Android API для получения ориентации, не включают показания датчика гироскопа. Гироскоп не предоставляет информацию об ориентации, поскольку он содержит информацию только о скорости вращения.

Вы можете извлечь выгоду из показаний датчика гироскопа, используя такую информацию, чтобы получить лучшую оценку ориентации:

  • Шаг 1: У вас есть первоначальная оценка ориентации.
  • Шаг 2: У вас есть более новая оценка ориентации и некоторая информация, поступающая от датчика гироскопа.
    • У вас есть информация об увеличении времени (дельта-t) между шагом 1 и шагом 2: таким образом, вы можете интегрировать скорость вращения за это время, чтобы получить оценку вращения между двумя состояниями.
    • У вас также есть новое значение ориентации в состоянии 2.
    • Вы можете объединить эти два источника информации ([ориентация @ шаг = 1 вращение] и [ориентация @ шаг = 2]), чтобы получить уточненную оценку ориентации на шаге 2.
    • Это можно сделать довольно простым способом, используя дополнительный фильтр

Комментарии:

1. Есть ли у вас какой-либо пример кода, который показывает эти шаги в действии?

Ответ №2:

Если вы работаете с Api 9-го уровня и выше, и ваше устройство оснащено гироскопом, вы можете извлечь выгоду из Sensor.TYPE_ROTATION_VECTOR .

Он заботится о «слиянии» данных, полученных с акселерометра, магнитного датчика и гироскопа.