Android java.io.IOException: Servicio no disponible

Descripción: Estoy utilizando Google maps API V2 . He implementado Android Reverse Geocoding en la ubicación tocada.

Problema: lanza excepción en

  try { addresses = geocoder.getFromLocation(latitude, longitude,1);} catch (IOException e) { e.printStackTrace(); if(AppConstants.DEBUG)Log.v(AppConstants.DEBUG_TAG," e.printStackTrace(): "+e.getMessage()); } 

Estoy recibiendo valores de latitude y longitude correctos, pero no puedo entender por qué lanza la exception y también he hecho la búsqueda de Google, pero no pudo ayudar.

¿Alguien puede explicar en detalles?

Como se indica en este número de Android 38009 – Excepción de lanzamiento de Geocoder: IOException: Servicio no disponible Reiniciar el dispositivo solucionará el problema

Si no desea reiniciar el dispositivo, utilice este

  public JSONObject getLocationFormGoogle(String placesName) { HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?address=" +placesName+"&ka&sensor=false"); HttpClient client = new DefaultHttpClient(); HttpResponse response; StringBuilder stringBuilder = new StringBuilder(); try { response = client.execute(httpGet); HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); int b; while ((b = stream.read()) != -1) { stringBuilder.append((char) b); } } catch (ClientProtocolException e) { } catch (IOException e) { } JSONObject jsonObject = new JSONObject(); try { jsonObject = new JSONObject(stringBuilder.toString()); } catch (JSONException e) { e.printStackTrace(); } return jsonObject; } public LatLng getLatLng(JSONObject jsonObject) { Double lon = new Double(0); Double lat = new Double(0); try { lon = ((JSONArray)jsonObject.get("results")).getJSONObject(0) .getJSONObject("geometry").getJSONObject("location") .getDouble("lng"); lat = ((JSONArray)jsonObject.get("results")).getJSONObject(0) .getJSONObject("geometry").getJSONObject("location") .getDouble("lat"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return new LatLng(lat,lon); } LatLng Source =getLatLng(getLocationFormGoogle(placesName)); 

He modificado la solución @Ani para obtener el nombre de la ciudad de lat largo parámetros:

 public static String getLocationCityName( double lat, double lon ){ JSONObject result = getLocationFormGoogle(lat + "," + lon ); return getCityAddress(result); } protected static JSONObject getLocationFormGoogle(String placesName) { String apiRequest = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + placesName; //+ "&ka&sensor=false" HttpGet httpGet = new HttpGet(apiRequest); HttpClient client = new DefaultHttpClient(); HttpResponse response; StringBuilder stringBuilder = new StringBuilder(); try { response = client.execute(httpGet); HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); int b; while ((b = stream.read()) != -1) { stringBuilder.append((char) b); } } catch (ClientProtocolException e) { } catch (IOException e) { } JSONObject jsonObject = new JSONObject(); try { jsonObject = new JSONObject(stringBuilder.toString()); } catch (JSONException e) { e.printStackTrace(); } return jsonObject; } protected static String getCityAddress( JSONObject result ){ if( result.has("results") ){ try { JSONArray array = result.getJSONArray("results"); if( array.length() > 0 ){ JSONObject place = array.getJSONObject(0); JSONArray components = place.getJSONArray("address_components"); for( int i = 0 ; i < components.length() ; i++ ){ JSONObject component = components.getJSONObject(i); JSONArray types = component.getJSONArray("types"); for( int j = 0 ; j < types.length() ; j ++ ){ if( types.getString(j).equals("locality") ){ return component.getString("long_name"); } } } } } catch (JSONException e) { e.printStackTrace(); } } return null; } 
  • Cambiar la posición del botón "Mi ubicación" de la API de Google Maps
  • Cómo determinar si las coordenadas largas del lat están en una carretera con Google Maps API v2
  • Google Maps Android v2 no funciona con ActionBarSherlock Fragment Actividad
  • ¿Existe una funcionalidad como el método onFirstFix en el Android Maps Api V2?
  • GoogleMaps v2 para Android: No se puede eliminar el marcador mientras se está procesando el mapa
  • DeslizamientoDirector sobre GoogleMap
  • ¿Por qué mi android enviar método de intento de correo electrónico no es el trabajo
  • Cómo mostrar mi ubicación en Google Maps para Android API v2
  • Agregar varios ClusterManager al mapa de Google
  • Activación de un evento de mapa (como un clic de marcador) en Google Maps Android V2
  • Google Maps V2 Android funciona como fragmento, pero muestra pantalla en blanco (con control de zoom) como fragmento de niño
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.