0

以下のコードでgetLastKnownLocation()は、 を取得している場合でも、常にデバイスで null を返しますProvide = internet。正常に動作していましたが、null 値を返していることがわかりました。Galaxy Tab バージョン 2.2 を使用しています。

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();
      }
    }
  }
}

よろしくお願いします。

4

1 に答える 1

2

最初にこの行に焦点を当てます。あなたrequestLocationUpdatesminDistanceセットは0です。

で遊んminDistanceでください。それがあなたの問題だと思います。

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

編集:

さらに、メソッドに a を追加LogしますLocationListener。これを行うことで、私はかなり助けられました。

これが私の初期の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");
    }
于 2012-08-24T13:27:20.347 に答える