Максимальные значения акселерометра Android

Итак, я искал около 3 часов и не нашел хорошего ответа/решения.

Мой вопрос: почему я получаю максимальное значение ускорения всего около 34 м/с ^ 2 или около 3,5 g (34/9,81).

Это из-за аппаратных или программных ограничений? Если это аппаратное обеспечение, я знаю, что ничего не могу с этим поделать (или, по крайней мере, нелегко). Если это ограничение программного обеспечения, то как я могу удалить это ограничение, есть ли способ сделать это? Как API или что-то в этом роде?

Буду признателен за любую помощь, спасибо.

Примечание. Я использую Galaxy S, если это имеет значение. Я также рассмотрел этот вопрос, но это мне не помогает: Что такое минимальный и максимальный диапазон акселерометра Android


person 0gravity    schedule 05.10.2012    source источник
comment
Не могли бы вы объяснить, что вы подразумеваете под ограничением? Такого рода подразумевает, что вы ожидаете получить более высокое значение. Возможно, вы захотите указать, включаете ли вы гравитационную силу 9,8 м/с^2 или уже применили фильтр верхних частот, а также указать, какое движение вы применяете к Galaxy S. И наконец, почему вы предполагаете, что число должно быть выше 3,5G. Не говорю, что вы правы или неправы в этом, но почему вы предполагаете, что существуют ограничения.   -  person David    schedule 05.10.2012
comment
Для справки, акселерометр теоретически чисто аппаратный: developer.android.com/ руководство/темы/сенсоры/sensors_motion.html   -  person David    schedule 05.10.2012
comment
@David, согласно этому диапазону должна быть выше. Я не знаю, помогает это или нет ... Кроме того, 3,5G просто звучит слишком низко, и я знаю, что размахиваю телефоном сильнее. Вот почему я думаю, что это может быть какое-то ограничение.   -  person 0gravity    schedule 05.10.2012
comment
@David Также в вашем втором комментарии. Акселерометр может быть чисто аппаратным, но, возможно, Google где-то ограничивает значения... Я не знаю. Поэтому я и задал вопрос :)   -  person 0gravity    schedule 05.10.2012
comment
проверьте мой ответ ниже. Похоже, датчики обычно можно откалибровать для разных диапазонов чувствительности. Я сомневаюсь, что Google накладывает ограничения. В их API ничего подобного не упоминается: developer.android.com/reference /андроид/оборудование/   -  person David    schedule 05.10.2012
comment
редактировал мой ответ пару раз. В результате, похоже, Google API не позволяет изменять диапазон, к сожалению.   -  person David    schedule 05.10.2012
comment
stackoverflow.com/questions/26293639/ @David, ты можешь мне помочь?   -  person Jeegar Patel    schedule 10.10.2014


Ответы (2)


Взгляните на это: https://electronics.stackexchange.com/questions/11372/samsung-galaxy-s-accelerometer-details Вопрос включает в себя то, что, по-видимому, является таблицей данных для акселерометра, используемого в Galaxy S. По-видимому, есть три возможных диапазона +/-2g, +/-4g и +/ -8г. Я не эксперт по электронике, поэтому не буду давать больше интерпретации, чем это.

Согласно developer.android.com, показания акселерометра зависят только от оборудования: developer .android.com/guide/topics/sensors/sensors_motion.html Таким образом, у вас, вероятно, будет больше шансов получить экспертный ответ на форуме по обмену стеками электротехники, на который уже ссылались выше: electronics.stackexchange.com.

Удачи с вашим проектом!

РЕДАКТИРОВАТЬ: Что касается комментариев к исходному вопросу: я вижу, потому что это говорит о страница, на которую вы ссылаетесь –

Насколько я понимаю, акселерометры Android по умолчанию работают в заранее определенном диапазоне +-2g. Как я могу программно изменить этот диапазон через общедоступный API? Существует метод getMaximumRange(), но нет соответствующего метода setMaximumRange().

Вам интересно, существует ли программный метод изменения предварительно выбранного диапазона. Опять же, я думаю, что документы Android API упоминают об этом. Попробуйте спросить на electronics.stackexchange.com, что такое динамически выбираемые диапазоны и устанавливаются ли они физическими аппаратными переключателями (или чем-то подобным) или их можно изменить программно.

ВТОРАЯ РЕДАКТИРОВКА: я более внимательно прочитал страницу, на которую я ссылался, и заметил, что первоначальный вопросник проверил API Google и пришел к выводу, что через него невозможно изменить диапазон:

API не позволяет их изменить. Я думаю, что я могу найти эти данные в источнике API, но это не так просто. Сейчас попробую. — МаркоБиаги

person David    schedule 05.10.2012
comment
+1 Спасибо за ответ. Это дало мне некоторые идеи/понимание того, что искать. - person 0gravity; 05.10.2012

Учитывая, что максимальная величина ускорения, которую вы считываете с вашего Galaxy S, составляет 3,5 g, ваш акселерометр Galaxy S, по-видимому, настроен на диапазон акселерометра по оси +/- 2 g (т. е. sqrt (2,0 * 2,0 + 2,0 * 2,0 + 2,0). *2,0) = 3,5). Для справки, вот диапазоны акселерометров по осям ваших устройств Galaxy S, Moto G и Nexus Android:

Galaxy S: +/- 2 г
Moto G: +/- 2 г
Nexus 1: +/- 2 г
Nexus S: +/- 2 г
Nexus 4: +/- 4 г
Nexus 5: +/- 2 г

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

К сожалению, API акселерометра Sensor.getMaximumRange() непоследовательно: возвращает значения «от нуля до пика» на большинстве устройств, но «от пика до пика» на некоторых (например, Moto G), как описано в этом отслеживаемая проблема с ОС Android. Один из способов узнать, возвращает ли конкретное устройство Sensor.getMaximumRange() как «от нуля до пика» или «от пика до пика», — запустить бесплатное приложение для построения графиков данных датчика, например ftNote и энергично встряхните устройство, чтобы увидеть, где показания акселерометра пересекаются с показаниями датчика на графике.

person gregS    schedule 14.11.2013
comment
у меня есть lg g3, getMaximumRange() равен 39, что означает максимальный диапазон 69G? это реально? - person Pavel Poley; 14.05.2017