2015-07-16 2 views
4

Я работаю над приложением, которое отслеживает местонахождение пользователя. Чтобы сэкономить аккумулятор, я хочу реализовать незанятую зону, которая делает диспетчер местоположений менее часто (или даже останавливается) в местоположении GPS. После того, как пользователь снова начнет перемещаться (обнаруживается с помощью акселерометра и/или значительного перемещения), служба определения местоположения потянет интервал по умолчанию.Сохранение энергии с помощью служб определения местоположения путем обнаружения движения пользователя с помощью датчиков

Один подход заключается в определении свободной зоны в качестве параметра minDistance в LocationManager::requestLocationUpdates, но другие пользователи здесь suggests that it does not have any impact on the battery drain, и documentation государства, что трудно для менеджера места для экономии заряда батареи, используя этот критерий:

Однако провайдерам местоположения более сложно сохранять мощность с использованием параметра minDistance, поэтому minTime должен быть основным инструментом для экономии времени автономной работы.

Google также предлагает использовать significant motion sensor для обнаружения при изменении местоположения пользователя:

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

Означает ли это, что диспетчер местоположений использует значительный датчик движения, если он присутствует по умолчанию, или мне нужно активировать или внедрить что-то, чтобы использовать сервис определения местоположения?

А как насчет акселерометров? Большая часть моего вопроса заключается в том, будет ли использование акселерометра обнаружением, когда пользователь начнет движение, сэкономит все силы, поскольку использование акселерометра будет другим датчиком, который потребует обработки мощности и обратного вызова. Некоторые датчики акселерометра are listed as low-powered от Google, в то время как некоторые из них (включая значительный датчик движения).

Можно ли сэкономить энергию аккумулятора, поставив GPS в режим сна, а затем использовать датчики для обнаружения движения пользователя, которое снова пробудит GPS?

+0

Эй Мартин, вы найдете любое решение, чтобы решить энергосберегающие с обновлением местоположения ... –

+0

Nope. Я не работал над этим после исследования, которое я сделал для этого сообщения. Я отправил несколько писем некоторым людям, но, похоже, сейчас все в отпуске. Я опубликую ответ, когда/если я приду к выводу. Спасибо за продолжение! – Martin

+0

Я, кажется, все в отпуске по этой теме;);) –

ответ

0

LocationManager::requestLocationUpdates использует significant motion sensor с использованием метода высокого уровня setSmallestDisplacement() Пример:

mLocationRequest = new LocationRequest(); 
mLocationRequest.setInterval(20*1000); 
mLocationRequest.setFastestInterval(10*1000); 
mLocationRequest.setSmallestDisplacement(10F); //meters