2012-08-24 7 views
0

В приведенном ниже коде getLastKnownLocation() всегда возвращает null на устройстве, даже когда я получаю Provide = internet. Он работал нормально, но знал, что он возвращает нулевое значение. Я использую Galaxy Tab версии 2.2.getLastKnownLocation() всегда возвращает null на устройстве

public void find_Location(Context con) { 
    Log.d("Find Location", "in find_location"); 
    this.con=con; 
    String location_context = Context.LOCATION_SERVICE; 
    LocationManager locationManager = 
    (LocationManager)con.getSystemService(location_context); 
    List<String> providers = locationManager.getProviders(true); 
    for (String provider : providers) { 
    locationManager.requestLocationUpdates(provider, 1000, 0,new LocationListener() { 
     public void onLocationChanged(Location location) {} 
     public void onProviderDisabled(String provider){} 
     public void onProviderEnabled(String provider){} 
     public void onStatusChanged(String provider, int status,Bundle extras){} 
    }); 
    Location location = locationManager.getLastKnownLocation(provider); 
    if (location != null) { 
     lat = location.getLatitude(); 
     lng = location.getLongitude(); 
     Geocoder geocoder = new Geocoder(AdvanceSearch.this, 
     Locale.getDefault());List<Address> addresses; 
     try { 
     addresses = geocoder.getFromLocation(lat,lng,100); 
     countryname=addresses.get(0).getCountryName(); 
     eexit e = new eexit(); 
     statename= addresses.get(0).getAdminArea(); 
     cityname=addresses.get(0).getLocality(); 
     } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
    } 
    } 
} 

Заранее за вашу помощь.

+0

Вам нужно время, чтобы исправить. Проверьте, когда вызывается 'onLocationChanged'. – hsz

+1

http://stackoverflow.com/questions/1916568/getlastknownlocation-getting-null-on-sdk?rq=1 проверьте это 1. Это точный дубликат вашего вопроса. –

+0

Я ждал arrount 4 мин, но onLocationChanged никогда не назывался – sara

ответ

2

Сначала я бы сосредоточился на этой строке. Ваш requestLocationUpdates имеет minDistance, установленный в 0.

Играйте с minDistance, я думаю, что это ваша проблема.

locationManager.requestLocationUpdates(provider, 1000, 15, new LocationListener() { 

Edit:

Кроме того, я хотел бы добавить LogLocationListener своим методам. Это очень помогло мне.

Вот пример моего раннего LocationListener сценария:

public LocationListener jLocListener = new LocationListener() { 
    //class findMe implements LocationListener { 
    public void onLocationChanged(Location location) { 
     try { 
      lat = location.getLatitude(); 
      lon = location.getLongitude(); 
     } catch (Exception e) { 
      Log.e("onLocationChanged", "FAILED: " + e.getMessage()); 
     } 
    } 
    public void onProviderDisabled(String provider) { 
     Log.i("LocationListener", "onProviderDisabled"); 
    } 
    public void onProviderEnabled(String provider) { 
     Log.i("LocationListener", "onProviderEnabled"); 
    } 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     Log.i("LocationListener", "onStatusChanged"); 
    } 
+0

Я собираюсь это сообщение/MapActivity (5867): Не удалось получить соединение с заводским клиентом – sara

+0

Вы пытаетесь сделать это на эмуляторе? Если это так, убедитесь, что эмулятор имеет поддержку GPS, выбранную в разделе аппаратного обеспечения. Также у вас есть '' и '' в вашем манифесте? – jnthnjns

+0

Я проверяю его на устройстве, требуется слишком много времени, чтобы получить текущее местоположение через этот код, что влияет на то, что он не работает должным образом, и замедляет мое приложение, есть ли какие-либо исправления для этого? – sara

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