Android LocationManager.getLastKnownLocation () возвращает ноль - PullRequest
17 голосов
/ 22 октября 2009

Итак, я пытаюсь выбрать координаты 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 всегда равна нулю в эмуляторе. Я попытался использовать команду "geo fix latitude longitude", чтобы установить ее, а также я попытался использовать способ установки DDMS. Ни один из методов не оказал никакого влияния на код. Также фрагмент не вызывает никаких исключений.

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

Ответы [ 2 ]

11 голосов
/ 22 октября 2009

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

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

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

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

0 голосов
/ 22 октября 2009

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...