2012-12-16 11 views
6

So che ci sono state molte domande sul sito riguardo allo IOExeption: servizio non disponibile ..... Ho controllato tutte le risposte che ho potuto trovare sull'argomento ... io Sto eseguendo come async task che sembra funzionare bene ma ottenendo sempre la stessa eccezione.problemi con android.location.geocoder

Ho utilizzato isPresent() sui tentativi precedenti anche se non è nel seguente codice e sto utilizzando lo stesso telefono. ho il permesso di internet Ho provato a cambiare l'obiettivo su google api per vedere se quello era il problema ma non ha fatto alcuna differenza.

Questa è una parte vitale di un progetto di un quarto, quindi qualsiasi aiuto sarebbe serio. ps mai lavorato con Java o Android prima a poco tempo fa in modo perdonare qualsiasi rookie cercando ty codifica ..

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


} 

heres il 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

Si prega di inviare gli errori LogCat, in modo che possiamo vedere cosa sta succedendo. – Sam

+0

ho anche trovato suggerimento che il local.getDefault potrebbe essere un problema ????? –

+0

Ok, 'getFromLocation()' genererà [questa eccezione] (http://developer.android.com/reference/android/location/Geocoder.html#getFromLocation%28double,%20double,%20int%29) quando la rete non è attivo Hai verificato di essere connesso a dati mobili, wifi o altro? – Sam

risposta

11

Geocoder.isPresent() può restituire false su alcuni dispositivi.

Se restituisce vero e avete ancora problemi è possibile creare il proprio Geocoder utilizzando The Google Geocoding API

ho fatto un Geocoder libreria indipendente dalla piattaforma di cui dispone github e Maven centrale

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

Modifica: la risposta precedente conteneva un breve esempio di implementazione di Geocoder.

+0

Solo vedendo questo ora dottore, è passato un po 'di tempo da quando ero al geocoding, ma malato mi siedo e lo percorro come meglio posso domani. Probabilmente avrò una domanda o due per te quindi se sei in giro :) grazie per l'aiuto –

+0

scusa se vedi questo potresti indicarmi la direzione per la migliore documentazione su questa implementazione di geocoding .. ty –

+0

@Shane Quando ho scritto questo mi sono riferito a https://developers.google.com/maps/documentation/geocoding/ –