Как читать местоположение только один раз с помощью locationManager (GPS и NETWORK PROVIDER) и больше не ищет обновлений местоположения, чтобы сохранить аккумулятор?
Как читать местоположение только один раз с помощью locationManager (GPS и NETWORK PROVIDER) и больше не ищете обновления местоположения?
Ответ 1
Хотя requestSingleUpdate()
является технически правильным ответом, вы должны использовать
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, mLocationListener);
Подождите некоторое время после получения вашего первого местоположения. Место имеет тенденцию колебаться в течение нескольких секунд. Чтобы определить, является ли исправление устойчивым, location.getAccuracy()
. Как только точность стабилизируется, вызовите locationManager.removeUpdates(mLocationListener);
Ответ 2
public LocationManager locationManager;
try {
locationManager.requestSingleUpdate( LocationManager.GPS_PROVIDER, new MyLocationListenerGPS(), null );
} catch ( SecurityException e ) { e.printStackTrace(); }
public class MyLocationListenerGPS implements LocationListener {
@Override
public void onLocationChanged(Location location) {
// your code and required methods go here...
}
Использование 'null' в 'requestSingleUpdate' поддерживает проверку обновления в том же потоке (для использования в службе). Этот метод позволяет вам помещать его в Looper, если вы используете его из активности. Я думаю, что использование async-задачи было бы лучшим подходом.
Ответ 3
Просто удалите обновление из диспетчера местоположений.
lmanager.removeUpdates(this);
Ответ 4
Чтобы получить местоположение только один раз, вы можете ссылаться на приведенную ниже ссылку
и найдите "requestSingleUpdate"
Ответ 5
Прочтите руководство разработчика Получение местоположения пользователя: http://developer.android.com/guide/topics/location/obtaining-user-location.html
Эта ссылка для лучшей производительности
Не забудьте указать android.permission.ACCESS_FINE_LOCATION в манифесте Android
Ответ 6
Легко только раз прочитал обновление опускания, например
locationManager.requestLocationUpdates(поставщик, 400, 1, это);
и после прочтения местоположения, однажды названного
locationManager.removeUpdates(это);
поэтому система не будет запрашивать обновление местоположения после этого, и вы сэкономите свою батарею.
Ответ 7
Используя requestSingleUpdate
с вашим LocationManager
.
Для получения дополнительной информации, официальное руководство интересно:
INFO