Когда GPS недоступен, как получить уведомление, когда телефон находится в движении? - PullRequest
1 голос
/ 01 июня 2010

Я хотел бы определить, когда телефон находится в движении, но не все виды движения. Например, когда вы поднимаете трубку или машете ей, телефон не должен срабатывать.

В идеале я хотел бы запустить код, когда телефон / человек находится в состоянии «ходьбы». Какие варианты у меня есть?

Ответы [ 3 ]

2 голосов
/ 01 июня 2010

Вы можете использовать комбинацию акселерометра и цифрового компаса в телефонах, в которых они есть, для определения скорости и направления.

Если все, что вам нужно сделать, это определить, идет ли человек, все, что вам нужно, это акселерометр. Просто обработайте вывод для шагов.

В Интернете существует множество учебных пособий по обнаружению шагов с помощью акселерометра.

0 голосов
/ 30 августа 2011

Android-акселерометр предоставляет нам возможность узнать ускорение с помощью класса SensorEvent.Поэтому используйте объект класса и обрабатывайте onSensorChanged (), чтобы определить движение в устройстве.

x = sensorEvent.values ​​[0];Устанавливает ускорение в направлении x.

Итак, что вас может заинтересовать, найдите ускорение в направлениях x, y и z и попробуйте рассчитать среднее и стандартное отклонение для последних 10 таких образцов,Работа над стандартным отклонением, несомненно, приведет вас к правильной точке!Если значение равно 0, это означает, что устройство работает.Если SD> 0,5 в течение более 15 секунд или около того ... это означает, что устройство постоянно движется!Дай знать, если тебе нужна дополнительная помощь!

Ура, Нитин

0 голосов
/ 01 июня 2010

Вы также можете узнать свое местоположение в Wifi-сетях и сотовых вышках. Все провайдеры местоположения в Android являются подклассами android.location.LocationProvider . Это, вероятно, хорошее место для начала. Я не знаю, какой из них будет лучшим для вас, поскольку их «диапазон» может составлять несколько сотен футов в ширину.

...