2016-04-09 2 views
0

Метод, который я использую сейчас, очень ненадежен. В моем устройстве Android (а не симуляторе) в большинстве случаев возвращаемое местоположение равно null. Хотя иногда это работает.Какой самый надежный способ получить местоположение устройства Android?

public Location getLocation(String provider) { 
    if (locationManager.isProviderEnabled(provider)) { 
     locationManager.requestLocationUpdates(provider, 
       MIN_TIME_FOR_UPDATE, MIN_DISTANCE_FOR_UPDATE, this); 
     if (locationManager != null) { 
      location = locationManager.getLastKnownLocation(provider); 
      return location; 
     } 
    } 
    return null; 
} 

Я знаю, что после введения API 23 существуют другие разрешения, о которых мне нужно позаботиться. Есть ли надежный способ получить место?

+0

http://stackoverflow.com/questions/3145089/what -is-the-simple-and-most-robust-way-to-get-the-users-current-location-in-a –

+0

http://stackoverflow.com/questions/15997079/getlastknownlocation-always-return-null -после-я-переустановке-на-АПК-файл-через-ecli –

ответ

0

Поверьте мне, самый надежный способ получить местоположение основан на методе onLocationChanged, потому что вызов метода getLastKnownLocation не означает, что вы получаете новое местоположение или нет нулевого результата. Вы можете прочитать documentation ниже.

Это можно сделать без запуска провайдера. Обратите внимание, что это местоположение может быть устаревшим, например, если устройство было повернуто выключено и перемещено в другое место.

Если провайдер заблокирован, null null.

И последнее, что я хочу заметить вас, называя requestLocationUpdates метод не означает, что она даст вам расположение как можно скорее. Вот почему я упомянул о методе обратного вызова onLocationChanged.

Смежные вопросы