отключить сигнал GPS во время обновления местоположения

#android

#Android

Вопрос:

Я создаю приложение для отслеживания местоположения на Android, поэтому я вызываю функцию LocationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 30000, 0, прослушиватель);

Итак, в этом примере я установил интервал в 5 минут. Теперь мой вопрос в том, почему сигнал GPS постоянно активируется, хотя мой интервал составляет 5 минут..

Невозможно отключить до 5 минут, а через 5 минут он не может автоматически активироваться?? Я думаю, что устройству требуется больше заряда батареи, хотя оно постоянно активно… Что мне нужно сделать, чтобы отключить GPS для определенного интервала, определенного в функции.

Ответ №1:

Нет, вы не можете, но вы всегда можете запустить службу, которая запрашивает исправление одного выстрела каждые пять минут.

Для электронного использования requestSingleUpdate (String provider, PendingIntent intent)

Для трансляции намерения при получении исправления с одним выстрелом.

Комментарии:

1. Спасибо, что дали мне ответ, но я не могу получить ваш ответ.. Пожалуйста, не могли бы вы дать мне какой-нибудь исходный код

Ответ №2:

У меня была точно такая же проблема с моим приложением. Я использовал таймер, инициализируемый при запуске:

serviceHandler = новый обработчик (); serviceHandler.postDelayed( новая RunTask(), 1000L);

Это запускает locupdate и добавляет единицу к счетчику каждую секунду.

  class RunTask implements Runnable {
      public void run() {
          counter;
        locupdate(0,0);
        serviceHandler.postDelayed( this, 1000L );
      }
    }
  

это функция locupdate, используемая выше. Обратите внимание, mlocManager глобально определяется как LocationManager.

 public void locupdate(int minTime, float minDistance) {
    mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    mlocListener = new MyLocationListener();
    if (mlocListener != null amp;amp; mlocManager != null) {
        mlocManager.removeUpdates(mlocListener);
    }
    mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                minTime, minDistance, mlocListener);
}
  

И последнее. В конце метода onLocationChanged в LocationListener я удаляю обновления после 5 исправлений местоположения:

mlocManager.removeUpdates(mlocListener);

Это похоже на requestSingleUpdate (), но я нахожу это более гибким. Надеюсь, это поможет!

Комментарии:

1. О, и последнее. Чтобы предотвратить запуск двух экземпляров вашего LocationListener, я определил глобальную переменную, для которой перед locupdate() установлено значение true, а в конце onLocationChanged — значение false. Перед запуском locupdate вы должны убедиться, что эта переменная имеет значение false. Вы также можете захотеть проверить, что экземпляр таймера еще не запущен при запуске. Если пользователь нажимает кнопку «Назад», а затем снова открывает ваше приложение, onCreate вызывается во второй раз…

Ответ №3:

В основном эта функция занимает следующий интервал времени,

LocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000, 0, прослушиватель);

смысл здесь в том, что дайте мне обновление GPS, если вы нашли в течение заданного времени без

другие приоритетные задачи.

итак, это ваш метод

общедоступный пустой запрос местоположения обновляется (длительное время ожидания, плавающее сопротивление памяти, критерии criterions, намерение PendingIntent)

и это параметры, пожалуйста, внимательно прочитайте их, чтобы вы могли это понять

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

minDistance = минимальный интервал расстояния для уведомлений, в метрах критерии содержит параметры для диспетчера местоположения для выбора соответствующего поставщика и параметры для вычисления местоположения

намерение = {#link PendingIntent}, которое будет отправляться для каждого обновления местоположения

Это все о

С наилучшими пожеланиями, ~ Anup

Комментарии:

1. Спасибо за ответ, но я не знаю, как указать параметр PendingIntent.. пожалуйста, не могли бы вы дать мне ссылку для примера

2. это разные варианты requestLocationUpdates () пожалуйста, перейдите по следующей ссылке developer.android.com/reference/android/location /…

3. вы обязательно исправите эту проблему, не забудьте отметить ее как ответ