Обнаружение значительного движения устройства на Android

Я пытался придумать, как сделать приложение, которое определяет, было ли устройство перемещено на значительную величину, или что-то большее, чем просто встряхивание. Я пытаюсь определить расстояние, скажем, в фут. Читая раздел «Обучение» на официальном сайте разработчиков Android, я могу предположить, что мне следует использовать Датчик значительного движения, но я не могу найти пример того, как его использовать. Могу ли я просто сохранить свое «текущее» местоположение в массиве, а затем сравнить его с массивом значений Event всякий раз, когда вызывается onTrigger()?

Или лучше использовать акселерометр? Другой датчик? LocationManager (это достаточно точно?)?


person Argent    schedule 04.07.2014    source источник


Ответы (1)


На основе датчика значительного движения демо-активность в ApiDemos, делать особо нечего. Срабатывает датчик триггера, не содержит значимых данных в values field (это массив только с одним элементом, всегда 1.0 в соответствии с тем, что я тестировал) и отключает себя.

Так что сравнивать собственно не с чем. Событие сработало, и все. Вам просто нужно поверить, что это соответствует вашему определению «перемещена значительная сумма»: /

Если вы хотите измерить расстояние порядка одного фута, я почти уверен, что Location недостаточно точное (поскольку оно основано не более чем на GPS).

Что касается данных акселерометра, теоретически вы можете рассчитать расстояние от них (ускорение -> скорость -> расстояние), но это очень неточно. См. этот ответ, в котором в основном утверждается, что это непрактично.

person matiash    schedule 04.07.2014
comment
Тогда я поиграю с ним, посмотрю, достаточно ли оно для меня. Или, может быть, до этого кто-нибудь предложит другое решение. - person Argent; 04.07.2014
comment
Можно ли по-другому обнаружить движение (и пробудиться ото сна)? У меня есть устройство mediatek, у которого нет значительного датчика движения (согласно датчикам обнаружения apk), но в нем есть встроенная функция, которая включает экран при движении. Как это может быть ? - person ransh; 25.01.2017