2014-02-19 6 views
0

Я создаю приложение, которое проверяет только местоположение, когда пользователь нажимает кнопку.android getLastKnownLocation() return always return null

вот мой код, и он возвращает нуль, когда я называю getLastKnownLocation, даже после того, как я называю requestLocationUpdates:

public void main(String[] args, int iteration, Context context){ 
    Criteria criteria = new Criteria(); 
    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 

    LocationListener loc_listener = new LocationListener() { 
     public void onLocationChanged(Location l) { 
     } 
     public void onProviderEnabled(String p) {} 
     public void onProviderDisabled(String p) {} 
     public void onStatusChanged(String p, int status, Bundle extras) {} 

     }; 

    String bestProvider = locationManager.getBestProvider(criteria, false); 
    locationManager.requestLocationUpdates(bestProvider, 0, 0, loc_listener); 
    Location location = locationManager.getLastKnownLocation(bestProvider); 
    location = locationManager.getLastKnownLocation(bestProvider); 
    double lat; 
    double lon; 
    try { 
     lat = location.getLatitude(); 
     lon = location.getLongitude(); 

    } catch (NullPointerException e) { 
     lat = -1.0; 
     lon = -1.0; 

    } 
    Log.i("results:", String.valueOf(lat) + " " + String.valueOf(lon) + " 10NN");}} 

служба место на устройстве включена функция. Большое спасибо!

+0

LastKnownLocation возвращает последний известный фикс. Поэтому возможно, что оно будет нулевым. Попробуйте посмотреть здесь http://stackoverflow.com/questions/7423624/how-reliable-is-locationmanagers-getlastknownlocation-and-how-often-is-it-updat – alekz

+1

Я попытался запроситьLocationUpdates, и он фактически не обновляет последнее известное место для меня. –

+0

Вы нашли решение – Questioner

ответ

1

getLastKnownLocation вернет значение null, пока не будет вызван обратный вызов onLocationChanged(). Это может занять несколько минут для GPS, даже если небо хорошо видно. Если вы находитесь в помещении, это может никогда не запуститься. Вы должны ждать, пока он запустится.

+0

моя карта google сразу же получила мое местоположение. как он это сделал? Также я попытался использовать requestLocationUpdates, чтобы получить обновление по местоположению. но он, похоже, не работал. –

1

попробовать это PLS

mGoogleMap.setOnMyLocationButtonClickListener(new OnMyLocationButtonClickListener() { 

        @Override 
        public boolean onMyLocationButtonClick() 
         { 

          Location myLocation = mGoogleMap.getMyLocation(); 
          onLocationChanged(myLocation); 
          return false; 
         } 
       });