Получение нуля из 'getLastKnownLocation' в SDK - PullRequest
5 голосов
/ 16 декабря 2009

У меня есть проблема, связанная с Location API.

Я попробовал следующий код:

LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location loc = getLastKnownLocation(LocationManager.GPS_PROVIDER);

loc всегда null, когда вызывается getLastKnownLocation().

Что не так?

Ответы [ 6 ]

6 голосов
/ 16 декабря 2009

Наряду с разрешениями в вашем файле AndroidManifest.xml вы зарегистрировали прослушиватель местоположения?

LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location loc = getLastKnownLocation(LocationManager.GPS_PROVIDER);
lm.requestLocationUpdates(LocationManager.GPS, 100, 1, locationListener); 

Затем есть метод, в данном случае locationListener, для выполнения вашей задачи

private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
    latitude = location.getLatitude();
    longitude = location.getLongitude();
}
3 голосов
/ 16 декабря 2009

Если вы запускаете код в эмуляторе, любые вызовы для определения местоположения GPS будут возвращаться, пока вы не обновите местоположение явно (через Eclipse или ADB ).

2 голосов
/ 01 октября 2011

У меня была та же проблема, что и у вас, я всегда получаю нулевой объект Location, но в конце концов она была решена простым способом. У вас должно быть правильное местоположение GPS, поэтому, если GPS не включен и у вас недостаточно сигнала, объект Location ВСЕГДА будет нулевым.

1 голос
/ 16 декабря 2009

Вы установили разрешения в вашем AndroidManifest.xml? Вам нужны эти разрешения для доступа к местоположению пользователя с помощью приложения:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
0 голосов
/ 21 февраля 2014

Вам нужен экземпляр LocationManager, например так:

Первый экземпляр:

   LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);

Неправильно:

Location loc = getLastKnownLocation(LocationManager.GPS_PROVIDER);

Правильно:

Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
0 голосов
/ 14 мая 2012

Вот что вы можете использовать:

LocationManager lm = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
String bestProvider = lm.getBestProvider(criteria, false);
Location loc = lm.getLastKnownLocation(bestProvider);

last_lat = loc.getLatitude();
last_lng = loc.getLongitude();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...