2015-02-09 3 views
1

Я разрабатываю приложение, которое в службе получает местоположение и отправляет его на сервер. Служба в фоновом режиме получает место каждые 5 минут (например). Аккумулятор быстро умирает, когда используются GPS и Wi-Fi .. Итак, как я могу сэкономить время работы от батареи?Как сэкономить аккумулятор, когда используете GPS, Wi-Fi в моем приложении?

Благодарим за помощь!

Небольшой вопрос: Могу ли я сделать запрос на обновление местоположения каждые 5мин кода ниже? И правильно ли он использует requestLocationUpdates с NETWORK_PROVIDER, а затем с GPS_PROVIDER? Это необходимо, когда GPS не находит сигнал, но Wi-Fi находит сигнал и дает координаты. я делаю это:

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 30000, 0, locationListener); 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000, 0, locationListener); 
+1

См. Мой вопрос: ответ @ClarkXP полезен: http://stackoverflow.com/a/28201586/4359029 – tomloprod

+0

вы рекомендуете использовать Play Service для экономии заряда батареи при использовании GPS/Wi-Fi/GSM? – researcher

+0

Конечно. Я создал свое приложение с «Службами Google Play», и я очень доволен результатом. – tomloprod

ответ

1

Прежде всего, вы должны понимать, что эти функции, которые вы должны использовать, вероятно, один из самых сложных с точки зрения власти. Я собрал несколько вещей, которые могут помочь вам потреблять меньше энергии:

Прежде всего, убедитесь, что вам действительно нужна точность GPS_PROVIDER. Если вы не выбрали NETWORK_PROVIDER.

Из того, что я вижу, вы устанавливаете метод обратного вызова requestLocationUpdates для вызова 2 раза, установив NETWORK_PROVIDER и GPS_PROVIDER. Вам не нужно использовать их обоих. Кроме того, посмотрите на параметры, которые вы проходите на requestLocationUpdates метод:

`public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)` 

Согласно documentation в minDistance является minimum distance between location updates, in meters и вы установили его в 0. Это означает, что устройство будет постоянно приобретать пользователей место нахождения.

+0

«Это означает, что устройство будет постоянно получать местоположение пользователей». – researcher

+0

Есть ли что-то, что вы хотите, чтобы я разъяснил это? –

+0

«Это означает, что устройство будет постоянно получать местоположение пользователей». но когда я использую этот код, координаты отправляются на сервер каждые 5 минут, не более. Зачем ? Я отправляю координаты в классе метода onLocationChanged LocationListener. и координаты приходят на сервер каждые 5 мин, не более, не 1 мин, а не 1 сек .. почему так? :) – researcher