Почему у LocationManager нет местоположения lastKnown? - PullRequest
1 голос
/ 29 мая 2011

Я хочу указать местоположение пользователя, и это тоже только один раз после того, как этот пользователь будет самостоятельно перемещаться

locationManager = (LocationManager)this.getSystemService(LOCATION_SERVICE);
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
if (location != null) {
   System.out.println(location.toString());
   lat=location.getLatitude();
   lng=location.getLongitude();
}     
p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));

Однако я не могу узнать местонахождение пользователя, это из-за медленного интернет-соединения с мобильного телефона?

Ответы [ 2 ]

0 голосов
/ 24 мая 2013

Недостаточно просто получить locationManager и вызвать getLastKnownLocation(), потому что до обновления не будет «последнего известного местоположения». Вы пропускаете запрос, предоставленный классом LocationManager:

public void requestLocationUpdates(java.lang.String provider, 
                                   long minTime,
                                   float minDistance, 
                                   android.location.LocationListener listener) 

Если ваша деятельность реализует LocationListener, как у меня, вы можете передать «this» как LocationListener для вызова, происходящего из метода этого класса.В противном случае, есть несколько других перегрузок, принимающих классы Activity или Looper.

locationManager.requestLocationUpdates(provider, minTime, minDistance, this);

Чтобы убедиться, что устройство получает местоположение, запрашивайте обновления - но вы также можете установить охранники в случае невозможности найтипровайдеры или getLastKnownLocation возвращают ноль.

locationManager.requestLocationUpdates(provider, 1, 0, this);
mostRecentLocation = locationManager.getLastKnownLocation(provider);
if(mostRecentLocation == null)
// lower your expectations, or send user message with Toast or something similar 

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

0 голосов
/ 29 мая 2011

Метод getLastKnownLocation будет возвращать местоположение, только если gps LocationProvider где-то сохранил местоположение.Если пользователь еще не использовал GPS на своем устройстве достаточно долго, чтобы получить корректное GPS-решение, метод вернет ноль.

Даже если вы извлекаете местоположение, проверяете время местоположения, нет гарантии, что это место не очень старое.

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