Android LocationManager.getLastKnownLocation () возвращает ноль

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

  •  05-07-2019
  •  | 
  •  

Вопрос

Итак, я пытаюсь определить координаты GPS только один раз в приложении. Я не хочу создавать объект LocationListener, чтобы постоянно получать обновления GPS. Я хочу дождаться получения координат, а затем перейти к другому заданию.

Вот фрагмент кода

LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);

Переменная loc в эмуляторе всегда равна нулю. Я пытался использовать команду "Географическая привязка широты и долготы" чтобы установить его, а также я попытался использовать способ установки DDMS. Ни один из методов не оказал никакого влияния на код. Также фрагмент не вызывает никаких исключений.

Спасибо за вашу помощь.

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

Решение

Звонок для запроса обновления для местоположения не блокируется, следовательно, он не будет ждать там. Также провайдер в эмуляторе, возможно, не был запущен.

Возможной проверкой может быть проверка того, отключены ли в нем настройки gps-провайдера? затем отправить гео исправить.

Однако я бы использовал Location Listener, это было бы идеально в вашем случае, так как для продолжения вам требуется гео-исправление. Location Listener Используется для получения уведомлений от LocationManager, когда местоположение изменилось. Вы можете отменить регистрацию слушателя после первого геофикса.

Примечание. Для определения текущего местоположения на устройстве может потребоваться некоторое время, и даже на устройстве это может вернуть значение NULL.

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

Попробуйте использовать MyLocationOverlay , создайте исполняемый файл, который делает то, что вам нужно сделать с этим местоположением GPS, и передайте его

boolean     runOnFirstFix(java.lang.Runnable runnable)
          Queues a runnable to be executed as soon as we have a location fix.

, а затем отключите обновления местоположения для MyLocationOverlay.

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

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