Это способ прослушивания обновлений местоположения GPS (с использованием LocationManager
и LocationListener
):
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
listener = new MyLocationistener(); // LocationListener
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
30000, // milliseconds (minTime)
20, // meters (minDistance)
listener );
Но я хотел бы динамически настроить аргументы minTime
и minDistance
, используемые LocationManager # requestLocationUpdates
. Моя цель - сэкономить заряд батареи в соответствии с несколькими политиками использования, а именно:
. Я хотел бы знать:
LocationManager # removeUpdates
и LocationManager # requestLocationUpdates
, если есть единственная альтернатива. Редактировать: Приложение представляет собой систему отслеживания, чтобы узнать, где находятся люди, чтобы назначать задачи человеку, ближайшему к заданному положению. На самом деле батарея едва ли длится 8 часов, поэтому я бы хотел увеличить ее.
AFAIK вам нужно позвонить removeUpdates
и requestLocationUpdates
еще раз.
Кроме того, вы можете найти другие способы узнать, двигается ли телефон вообще, например, акселерометр. Читайте об этом здесь и см. ответы на этот другой вопрос
Но чтобы дать вам больше идей, вам нужно представить саму проблему. Не пытайтесь оптимизировать слишком рано, пока у вас не возникнет проблема. Если у вас есть, вы должны опубликовать подробности об этом.
Действительно ли это хорошая идея для экономии заряда батареи?
Скорее всего, нет. AFAIK, GPS-радио будет постоянно, и это самая большая разрядка батареи в том, что вы описываете. Способ сэкономить заряд батареи - удалить обновления, чтобы радио GPS отключилось. Однако в следующий раз, когда вы запросите обновления местоположения, GPS потребуется некоторое время, чтобы получить свое первоначальное исправление.
Если пользователь находится в помещении (нет покрытия GPS), увеличьте оба параметра
Если вы не можете получить данные по GPS, выключите радио и повторите попытку через несколько минут (или на основе события пользовательского интерфейса или чего-то еще) . Нет смысла оставлять GPS включенным, если он вам не помогает.
Если батарея разряжена, увеличьте обе.
Если батарея разряжена, выключите GPS. Либо переключитесь на поставщика с низким энергопотреблением (используйте Критерии
, чтобы найти его), либо откажитесь от данных о местоположении. Позвольте пользователю решить, что «слишком мало», через предпочтения.