#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
.
Он заботится о «слиянии» данных, полученных с акселерометра, магнитного датчика и гироскопа.