SensorManager.getRotationMatrix параметр гравитации или значения параметров акселерометра в Android? - PullRequest
4 голосов
/ 02 февраля 2012

В Документация Android указан третий параметр как

float[] gravity 

тогда указывает

[0 0 g] = R * gravity (g = magnitude of gravity)

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

Например, если в мобильном телефоне установлен датчик силы тяжести, Должен ли я отправить его необработанный вывод в getRotationMatrix? Если его нет, Должен ли я отправлять значения акселерометра? Должен ли я сначала извлечь компоненты без гравитации? (поскольку значения акселерометра - Ускорение минус G).

Будет ли использование значений датчика силы тяжести более надежным, чем использование значений акселерометра в мобильных телефонах с таким датчиком?

Заранее спасибо! Гильермо.

1 Ответ

1 голос
/ 02 февраля 2012

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

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

Из документов setRotationMatrix Android:

Матрицы, возвращаемые этой функцией, имеют смысл только тогда, когда устройство не свободно падает и не находится близко к магнитному северу. Если устройство ускоряется или находится в сильном магнитном поле, возвращаемые матрицы могут быть неточными.

Теперь вы спрашиваете, будут ли данные гравитации более надежными? Ну, нет ничего лучше, чем тестирование, но я полагаю, что это не будет иметь большого значения, и это действительно зависит от того, какое приложение вы хотите. Кроме того, получение простых значений гравитации не является тривиальным и требует фильтрации, поэтому вы можете получить шумные результаты.

...