2012-05-04 3 views
22

В чем разница между датчиками силы тяжести и ускорения в Android? С моей точки зрения, физическое значение в обоих случаях одинаково.В чем разница между датчиками «гравитация» и «ускорение» в Android?

Какой из них измеряет силу, действующую на единицу массы внутри устройства?

Сложение

Вопрос заключается в том: что физическая величина измеряется этими датчиками? Согласно equivalence principle ускорение и гравитация неразличимы, и единственный способ измерить их - обычным (но 3d) весенним балансом.

ответ

11

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

Другим методом может быть использование Sensor.TYPE_LINEAR_ACCELERATION, которое дает точно (ускорение - гравитация), однако вы должны проверить, доступно ли это на устройстве. Я нашел несколько устройств, у которых работает датчик ACCELERATION, но нет ответа от датчиков GRAVITY или LINEAR_ACCELERATION.

+0

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

+2

, скорее всего, поскольку GRAVITY стал доступен с версии API версии 9, и я не думаю, что мой телефон получил какое-либо аппаратное изменение, когда у меня есть его обновление =) – lenik

+0

ну, я просто проверенный, мой старый телефон не возвращает никаких обновлений GRAVITY, хотя он запускает код без жалоб. Возможно, GRAVITY - это отдельный датчик, но если вы планируете поддерживать Android 2.1, возможно, фильтр высоких частот на датчике ACCELERATION - ваш лучший выбор – lenik

3

Эта ссылка может быть полезной: http://www.sensorplatforms.com/which-sensors-in-android-gets-direct-input-what-are-virtual-sensors

Следующий отрывок резюмировать ответ на ваш вопрос:

«Список ... включает в себя как физические датчики и типы датчиков со значениями, полученными от физических датчиков, иногда они называются виртуальными датчиками ... Типы виртуальных датчиков (гравитация, линейное ускорение и вектор вращения) обеспечивают значения, полученные с помощью интеллектуального анализа результатов от физических датчиков ... Вектор вращения представляет собой комбинацию акселерометра, магнитометра и иногда гироскоп определяет трехмерный угол, по которому движется Android-устройство в отношении координаты фрейма Земли. Зная вектор вращения устройства, данные акселерометра могут быть разделены на гравитации и линейное ускорение.»

Эта ссылка https://stackoverflow.com/a/8238389/604964 также говорит о том, что значения силы тяжести вычисляются с использованием фильтра Баттерворта.

Смежные вопросы