Укажите интервалы, с которыми диспетчер местоположений будет транслировать текущее местоположение в Android

StackOverflow https://stackoverflow.com/questions/2566079

  •  23-09-2019
  •  | 
  •  

Вопрос

Есть ли какой-либо способ указать временные интервалы, через которые Диспетчер местоположений передает текущее местоположение?

Я использую метод под названием startListening:

public void startListening() {
        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 
                0, 
                0, 
                this
        );
}

Спасибо

Это было полезно?

Решение

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

Регистрирует текущую активность, о которой указанный поставщик должен периодически получать уведомления.Периодически будет вызываться предоставленный LocationListener с указанием текущего местоположения или с обновлениями статуса.

Получение самого последнего местоположения может занять некоторое время.Если требуется немедленное местоположение, приложения могут использовать метод getLastKnownLocation(String).

В случае, если поставщик отключен пользователем, обновления прекратятся, и onProviderDisabled(String) будет вызван метод.Как только провайдер снова будет включен, будет вызван метод onProviderEnabled (String), и обновления местоположения начнутся снова.

Периодичность уведомления может контролироваться используя minTime и minDistance параметры.Если minTime если значение больше 0, LocationManager потенциально может оставаться на minTime миллисекунды между обновлениями местоположения для экономии электроэнергии.Если minDistance если значение больше 0, местоположение будет транслироваться только в том случае, если устройство перемещается на minDistance метров.Чтобы получать уведомления как можно чаще, установите для обоих параметров значение 0.

Фоновые службы должны быть осторожны при установке достаточно высокого minTime чтобы устройство не потребляло слишком много энергии, постоянно включайте GPS или беспроводные радиостанции.В частности, значения ниже 60000мс не рекомендуются.

Поставляемый петлитель используется для реализации механизма обратного вызова.

Параметры

  • поставщик название поставщика у которого необходимо зарегистрироваться
  • minTime - минимальный интервал времени для уведомлений в миллисекундах.Это поле используется только как подсказка для экономии электроэнергии, а фактическое время между обновлениями местоположения может быть больше или меньше этого значения.
  • minDistance минимальное расстояние интервал для уведомлений, в метрах
  • слушатель a, чей метод onLocationChanged(Location) будет вызываться для каждого обновления местоположения
  • looper зацикливатель объект, очередь сообщений которого будет использоваться для реализации механизма обратного вызова .

Бросает

IllegalArgumentException если provider равен нулю или не существует
IllegalArgumentException если значение listener равно null
IllegalArgumentException если looper равен null
SecurityException если у поставщика услуг нет подходящего разрешения.

Другие советы

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

миндистанция:минимальное расстояние между уведомлениями, в метры

    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 9000, 500,locListener);

// 60000 — это 1 минута, а 100 — это км

Выше у вас есть 9000 (девять секунд) и 500, если местоположение переместилось более чем на 500 км.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top