Я работаю над приложением, которое отслеживает местонахождение пользователя. Чтобы сэкономить заряд батареи, я хочу реализовать зону ожидания, которая заставляет диспетчер местоположения реже запрашивать (или даже останавливаться) на местоположении GPS. Как только пользователь снова начинает движение (обнаруживается акселерометром и / или значительным движением), служба определения местоположения использует интервал по умолчанию.
Один из подходов - определить зону ожидания как параметр minDistance
в LocationManager::requestLocationUpdates
, но другие пользователи здесь предполагают, что это не влияет на разряд батареи и документация утверждает, что диспетчеру местоположения сложно сэкономить заряд батареи, используя следующие критерии:
Однако провайдерам геолокации труднее экономить электроэнергию с помощью параметра minDistance, поэтому minTime должен быть основным инструментом для продления срока службы батареи.
Google также предлагает использовать датчик значительного движения для определения того, когда пользователь изменение местоположения:
На высоком уровне используется детектор значительного движения, чтобы снизить энергопотребление при определении местоположения. Когда алгоритмы локализации обнаруживают, что устройство статично, они могут переключиться в режим низкого энергопотребления, в котором они полагаются на значительное движение, чтобы разбудить устройство, когда пользователь меняет местоположение.
Означает ли это, что диспетчер местоположения использует датчик значительного движения, если он присутствует по умолчанию, или мне нужно активировать или реализовать что-то, чтобы служба определения местоположения использовала его?
А что насчет акселерометров? Большая часть моего вопроса заключается в том, будет ли использование акселерометра для определения начала движения пользователем экономии энергии, поскольку использование акселерометра будет еще одним датчиком, который потребует питания и обработки обратного вызова. Некоторые датчики акселерометра указаны Google как маломощные, а некоторые нет (включая датчик значительного движения).
Можно ли сэкономить заряд батареи, переведя GPS в спящий режим, а затем используя датчики для обнаружения движения пользователя, которое снова разбудит GPS?