2012-12-16 3 views
6

Ich weiß, es gab eine Menge Fragen auf der Website über die IOExeption: Service nicht verfügbar ..... Ich habe alle Antworten überprüft, die ich zu dem Thema finden konnte ... ich Ich laufe es als async task, die scheint gut zu funktionieren, aber immer noch die gleiche Ausnahme.Probleme mit android.location.geocoder

Ich habe isPresent() bei früheren Versuchen verwendet, obwohl es nicht im folgenden Code ist und ich benutze das gleiche Telefon. Ich habe die Internet-Erlaubnis. Ich habe versucht, das Ziel auf google api zu ändern, um zu sehen, ob das das Problem war, aber es machte keinen Unterschied.

Dies ist ein wichtiger Teil eines vierten Jahres Projekt, so dass jede Hilfe ernst wäre. ps arbeitete nie mit Java oder Android vor sehr kurzer Zeit so jede Rookie vergeben sucht Codierung ty ..

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    view1 = (TextView) findViewById(R.id.textView1); 
    view2 = (TextView)findViewById(R.id.textView2); 
    view3 = (TextView)findViewById(R.id.textView4); 
    b1 = (Button) findViewById(R.id.button1); 

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

    //provider = 
     //  locationManager.getProvider(LocationManager.GPS_PROVIDER); 

    final LocationListener listener = new LocationListener() { 

     @Override 
     public void onLocationChanged(Location location) { 
      view2.setText(Double.toString(location.getLatitude())); 
      view3.setText(Double.toString(location.getLongitude())); 
      Double lat = Double.valueOf(location.getLatitude()); 
      Double longTemp = Double.valueOf(location.getLatitude()); 
      new geo().execute(lat,longTemp); 
      } 

     @Override 
     public void onProviderDisabled(String provider) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onProviderEnabled(String provider) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onStatusChanged(String provider, int status, 
       Bundle extras) { 
      // TODO Auto-generated method stub 

     } 

    }; 
    b1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      locReqest(); 
     } 

     private void locReqest() { 
      locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0, listener); 
     } 
    }); 

} 

class geo extends AsyncTask<Double, Void, String>{ 
    Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault()); 
    @Override 
    protected String doInBackground(Double... params) { 
      Address address = null; 
      List<Address> addresses = null; 
      try { 
       // Call the synchronous getFromLocation() method by passing in the lat/long values. 
       addresses = geocoder.getFromLocation(params[0].doubleValue(),params[1].doubleValue(), 1); 
       address = addresses.get(0); 
       if (address != null){ 
        return "Got your address : " + address.getCountryName().toString(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
       return "failed"; 
      } 
      return"fail"; 
    } 
    @Override 
    protected void onPostExecute(String result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     //view1.setText(result); 
     Toast.makeText(getApplicationContext(), "The address is: " + result, Toast.LENGTH_LONG).show(); 
    } 


} 

heren die logcat

12-16 23:06:53.855: W/System.err(23578): java.io.IOException: Service not Available 
12-16 23:06:53.865: W/System.err(23578): at android.location.Geocoder.getFromLocation(Geocoder.java:136) 
12-16 23:06:53.865: W/System.err(23578): at com.boggerTech.local.Main$geo.doInBackground(Main.java:102) 
12-16 23:06:53.880: W/System.err(23578): at com.boggerTech.local.Main$geo.doInBackground(Main.java:1) 
12-16 23:06:53.900: W/System.err(23578): at android.os.AsyncTask$2.call(AsyncTask.java:264) 
12-16 23:06:53.900: W/System.err(23578): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
12-16 23:06:53.905: W/System.err(23578): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
12-16 23:06:53.915: W/System.err(23578): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
12-16 23:06:53.915: W/System.err(23578): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
12-16 23:06:53.915: W/System.err(23578): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
12-16 23:06:53.920: W/System.err(23578): at java.lang.Thread.run(Thread.java:856) 
12-16 23:07:10.440: W/System.err(23578): java.io.IOException: Service not Available 
+0

Bitte melden Sie die LogCat-Fehler, damit wir sehen können, was passiert. – Sam

+0

Ich bin auch auf Vorschlag gestoßen, dass der local.getDefault ein Problem sein könnte ????? –

+0

Ok, 'getFromLocation()' wirft [diese Ausnahme] (http://developer.android.com/reference/android/location/Geocoder.html#getFromLocation%28double,%20double,%20int%29) wenn das Netzwerk ist nicht aktiv. Haben Sie überprüft, ob Sie mit mobilen Daten, WLAN oder etwas anderem verbunden sind? – Sam

Antwort

11

Geocoder.isPresent() auf einigen Geräten falsch zurückgeben kann.

Wenn es wahr zurückgibt und Sie immer noch Probleme haben, können Sie Ihre eigenen Geocoder erstellen, indem Sie The Google Geocoding API

ich eine plattformunabhängige Geocoder Bibliothek hergestellt, die bei github und Maven Zentral verfügbar ist

dependencies { 
    compile 'com.github.doctoror.geocoder:library:[version]' 
} 

Edit: Die vorherige Antwort enthielt eine kurze Beispielimplementierung des Implementierens von Geocoder.

+0

Als ich diesen Doktor jetzt sah, war es schon eine Weile her, seit ich am Geocoding war, aber ich setze mich schlecht damit hin und renne so gut ich kann morgen durch. Ich werde wahrscheinlich eine Frage oder zwei für Sie dann, wenn Sie um :) Danke für die Hilfe –

+0

Entschuldigung Mann, wenn Sie dies sehen könnten Sie mich in Richtung der besten Dokumentation über diese Implementierung von Geocoding zeigen .. ty –

+0

@Shane Als ich das schrieb, habe ich auf https://developers.google.com/maps/documentation/geocoding/ verwiesen –