2010-01-18 10 views
6

El siguiente código funciona perfectamente para dispositivos reales que se ejecutan en 1.5, 1.6 y 2.0, así como el emulador que se ejecuta en 2.1.Android: Nexus One - Geocoder causa IOException - funciona perfectamente con otros dispositivos y el emulador

Sin embargo, ejecutándolo en el Nexus One (correr 2.1) plantea una IOException:

java.io.IOException: Unable to parse response from server 
at android.location.Geocoder.getFromLocation(Geocoder.java:124) 

Ese es el fragmento de código en el que sucede:

Double myLatitude = AppObject.myLocation.getLatitude(); 
Double myLongitude = AppObject.myLocation.getLongitude(); 
DEBUG.i(TAG, "My location: " + myLatitude + " | " + myLongitude); 
Geocoder geocoder = new Geocoder(MainActivity.this); 
java.util.List<Address> addressList; 
try { 
    addressList = geocoder.getFromLocation(myLatitude, myLongitude, 5); 
    if(addressList!=null && addressList.size()>0) { 
     currentAddress = new String(); 
     DEBUG.i(TAG,addressList.get(0).toString()); 
     currentAddress = addressList.get(0).getAddressLine(0) + ", " 
     + addressList.get(0).getAddressLine(1) + ", " 
     + addressList.get(0).getAddressLine(2); 

    } 
    return true; 

} catch (IOException e) { 
    e.printStackTrace(); 
    return false; 
} 
+1

Tengo casi exactamente el mismo código en una aplicación que he escrito, y funciona bien en mi Nexus One. ¿Puedes limitarlo a algo específico, como que quizás el Nexus One no tenga conexión a Internet cuando llamas al geocodificador? –

+0

¿Tiene en su manifiesto? – haseman

+0

De alguna manera funciona ahora. Sin ningún cambio en mi código ni en el Nexus One. Escalofriante. haseman: Estoy usando ACCESS_COARSE_LOCATION y ACCESS_FINE_LOCATION, pero no pude encontrar la recomendada android.permission.LOCATION en la documentación: http://developer.android.com/intl/fr/reference/android/Manifest. permission.html – znq

Respuesta

1

Hola me cayó en el mismo problema y la misma situación. Obtuve un Nexus One y obtuve una solución para hacer que addressList = geocoder.getFromLocation(myLatitude, myLongitude, 1); funcionen. Solo tiene que reiniciar su dispositivo. Lo que noté es que el método getFromLocation de Geocoder no tiene conocimiento de ningún cambio en la configuración de configuración regional (en mi caso, lo que hizo que el método dejara de funcionar fue el cambio de mi configuración regional predeterminada). Después de un reinicio todo funcionó. ¿Alguien tiene una razón razonable para esto? (Perdón por el juego de palabras :-P)

0

Estoy usando un HTC Tmobile G2, y tuve el mismo problema al probar una función basada en GeoCoder. Un reinicio ayudó, pero esa no es una solución aceptable cuando mis clientes comienzan a quejarse de esto. Si esto es algún tipo de problema de eliminación de caché, entonces espero que se pueda implementar una solución mediante programación.

Cuestiones relacionadas