Android лучший способ получить местоположение повторно в фоновом режиме, учитывая батарею, а также
Мне нужно постоянно запрашивать местоположение в моем приложении, и оно всегда должно быть фоновым сервисом.
Мне нужно latlng как каждые две минуты или около того. Я думал об использовании Сервиса, и в onStartCommand
я использовал бы locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINIMUM_TIME_INTERVAL, MINIMUM_DISTANCE, this);
, а также locationmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MINIMUM_TIME_INTERVAL, MINIMUM_DISTANCE, this);
Но я боюсь, что со временем этот запросLocationUpdates перестает давать мне местоположение. Поэтому я подумал об использовании AlarmManager
, чтобы он продолжал давать мне местоположение.
Мой вопрос в том, нужно ли использовать AlarmManager
, чтобы напомнить, чтобы получить местоположение, или если я использую AlarmManager
, он разрядит много батареи.
Я просто хотел узнать лучший подход, чтобы найти место в фоновом режиме.
Спасибо заранее.
Ответы
Ответ 1
Зачем вы хотите использовать эту услугу? Для меня он работает без обслуживания. У меня есть класс под названием GPSlistener, который реализует LocationListener и имеет эту строку в своем конструкторе:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, this);
Я использую этот подход, потому что я не хочу, чтобы locationUpdates останавливался, но вы можете использовать этот метод для начала прослушивания:
public void startListening(){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, this);
}
а затем прекратить прослушивание:
public void stopListening(){
locationManager.removeUpdates(this)
}
Вы можете сэкономить аккумулятор, установив более высокое значение minTime или minDistance. Я верю, что minDistance должно быть более актуальным для вас. Например, если вы хотите обновить местоположение только каждые 10 метров, тогда вы называете это следующим образом
locationManager.requestLocationUpdates(LocationManager.GPS_Provider, 5000, 10, this)
Лучшая настройка зависит от вашего приложения. Например, если вы хотите построить GPS-навигацию для циклирования, вам следует использовать обновление местоположения после max 5m. С другой стороны, если вы создаете приложение для какой-то "медленной" активности, например, походы, то 10 или 15 метров будет достаточно, я думаю.
Я не думаю, что locationManager должен прекратить отправку обновлений местоположения, и у меня также не было этой проблемы в моем приложении.
Используя этот подход, я получаю GPS в фоновом режиме без использования сервиса. Но правда в том, что мое приложение состоит только из одного действия и 3 фрагмента, поэтому мне не нужно использовать сервис.
Ответ 2
эта ссылка полезна для вас?
http://wptrafficanalyzer.in/blog/android-gps-with-locationmanager-to-get-current-location-example/
использовать сервис для прослушивания местоположения (LocationListener)
Ответ 3
Новый google play локационные API - это, безусловно, лучший способ.
API с плавным местоположением учитывает все поставщики местоположения и точность определения местоположения, необходимые для обеспечения наилучшего местоположения для вашего приложения.
API-интерфейсы geofencing (уведомляют ваше приложение, когда пользователь входит/покидает определенную область), а API-интерфейсы распознавания активности (это пользовательское хождение "сидя"? "? также может быть очень полезно для экономии батареи и повышения точности.
Конечно, для этого требуется, чтобы у пользователя была обновленная версия приложения Google Play, но это не должно вызывать большого беспокойства.