Geocodificación inversa – Servicio No disponible – Reiniciar el dispositivo que no resuelve definitivamente – criticar mi geocodificación inversa manual

De vez en cuando me encuentro con el Service Not Available Excepciones en mi solicitud. La mayoría de las veces, no hay ningún problema. Pero a veces sucede. (La aplicación todavía está en desarrollo)

La única forma de resolverlo es reiniciar el teléfono . Relevante Issue38009 en foros de soporte . Pero lo que entiendo de los comentarios es que reiniciar el dispositivo resolver el problema para siempre .

¿Es esto correcto?
Porque en mi caso, el error puede regresar (frecuencia: una o dos veces al mes creo y estoy a tiempo completo en esta aplicación).

¿Hay una manera de reiniciar el geocoder desde dentro de la aplicación ?

La única solución que tengo es proporcionar una solución alternativa por si acaso para buscar "manualmente" la dirección como esta a continuación. ¿Tiene algo mejor?

  Dbg.d(TAG, "=== address_info FetchLocationTask - doInBackground"); new Thread(new Runnable() { @Override public void run() { Looper.prepare(); mHandler = new Handler(); Looper.loop(); } }).start(); /** * Implementation of a second method in case of failure: * */ double lat = Double.parseDouble(args[0]); double lng = Double.parseDouble(args[1]); String address = String.format(Locale.ENGLISH, "http://maps.googleapis.com/maps/api/geocode/json?latlng="+Double.toString(lat)+","+Double.toString(lng)+"&sensor=true&language="+Locale.getDefault().getCountry(), lat, lng); Dbg.d(TAG, "fetching path : "+ address); HttpGet httpGet = new HttpGet(address); HttpClient client = new DefaultHttpClient(); HttpResponse response; StringBuilder stringBuilder = new StringBuilder(); List<Address> retList = null; try { response = client.execute(httpGet); HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); int b; while ((b = stream.read()) != -1) { stringBuilder.append((char) b); } JSONObject jsonObject = new JSONObject(); jsonObject = new JSONObject(stringBuilder.toString()); retList = new ArrayList<Address>(); if("OK".equalsIgnoreCase(jsonObject.getString("status"))){ JSONArray results = jsonObject.getJSONArray("results"); for (int i=0;i<results.length();i++ ) { JSONObject result = results.getJSONObject(i); String indiStr = result.getString("formatted_address"); Address addr = new Address(Locale.ITALY); addr.setAddressLine(0, indiStr); Dbg.d(TAG, "adresse :"+addr.toString()); retList.add(addr); } } } catch (ClientProtocolException e) { Dbg.e(TAG, "Error calling Google geocode webservice.", e); } catch (IOException e) { Dbg.e(TAG, "Error calling Google geocode webservice.", e); } catch (JSONException e) { Dbg.e(TAG, "Error parsing Google geocode webservice response.", e); } JSONObject jObj = new JSONObject(); boolean found = false; if (retList.size() > 0) { Address a = retList.get(0); String name = a.getAddressLine(0); String city = a.getLocality(); String postalCode = a.getPostalCode(); String country = a.getCountryName(); if (!TextUtils.isEmpty(name)) { JsonUtils.setSringInJson(jObj, BookLocation.ADDRESS_NAME_KEY, name); found = true; } if (!TextUtils.isEmpty(postalCode)) { JsonUtils.setSringInJson(jObj, BookLocation.ADDRESS_POSTAL_CODE_KEY, postalCode); found = true; } if (!TextUtils.isEmpty(city)) { JsonUtils.setSringInJson(jObj, BookLocation.ADDRESS_CITY_KEY, city); found = true; } if (!TextUtils.isEmpty(country)) { JsonUtils.setSringInJson(jObj, BookLocation.ADDRESS_COUNTRY_KEY, country); found = true; } } mHandler.getLooper().quit(); if (found) { return jObj; } else return null; 

El enlace de @mike estados: una implementación de fallback con GeoCoder manejador y Asynctask clase tanto necesita ser sincronizado – como si no hay servicio que puede obtener la dirección de la URL. Esta es la única solución que podemos proporcionar, por desgracia, @Poutrathor.

Consulte aquí Servicio no disponible – Geocoder Android

También no podemos obligar al usuario a reiniciar, pero al menos informar una solución al respecto.

  • Autocomplete la API del sitio para obtener las coordenadas GPS de la dirección ingresada
  • Android GeoCoder devuelve sólo 1 resultado
  • Java.io.IOException: falló grpc
  • Límite API de Google Geocoding
  • Android Geocoder.getFromLocationName dejó de funcionar con los límites
  • Geocoder.getFromLocation () devuelve direcciones en árabe
  • Cómo obtener sólo Ciudad, Estado, País de lat, largo en android
  • El método isPresent () de Geocoder siempre devuelve false
  • El servicio de Google Geocoder no es viable (Coordenadas a la dirección)
  • ¿Cómo puedo encontrar la latitud y la longitud de la dirección?
  • Google Maps android consigue longitude-latitud moviendo un marcador en el mapa
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.