web-dev-qa-db-fra.com

Geocoder.getFromLocation grpc a échoué sur Android appareil réel

J'ai besoin d'obtenir la ville et l'état à partir de la latitude et de la longitude. Geocoder fait cette fonction pour obtenir la ville et l'état. Mais je reçois une erreur Java.io.IOException: grpc failed sur la ligne ci-dessous uniquement sur appareil réel Android . Il fonctionne très bien dans émulateurs.

new Geocoder(context).getFromLocation(latLng.latitude, latLng.longitude, 1).get(0);

J'ai également appelé cette fonction en utilisant Asynctask, ce qui est suggéré dans un autre article Geocoder grpc a échoué dans le débordement de la pile, mais rien ne fonctionne pour moi.

Et j'ai également redémarré l'appareil, mais il échoue toujours.

Besoin d'aide ici. Merci d'avance.

Remarque : J'ai testé dans Google Pixel XL, Samsung S6 Edge, Samsung S4.

8
fargath

Il semble que ce problème soit en cours et a été signalé dans l'outil de suivi des problèmes de Google à la fois pour les appareils réels et les émulateurs. Vous pouvez vous référer aux bogues suivants:

https://issuetracker.google.com/issues/64418751

https://issuetracker.google.com/issues/64247769

Malheureusement, Google n'a pas encore résolu ces problèmes.

Pour contourner ce problème, vous pouvez envisager d'utiliser le service Web de l'API de géocodage. Veuillez noter qu'il existe une bibliothèque cliente Java pour les services Web que vous pouvez trouver sur Github:

https://github.com/googlemaps/google-maps-services-Java

En utilisant Java bibliothèque cliente pour les services Web, vous pouvez implémenter une recherche de géocodage inversé qui ne devrait pas vous donner l'erreur que vous rencontrez avec le géocodeur natif Android Android.

La bibliothèque Javadoc pour le client est située à

https://googlemaps.github.io/google-maps-services-Java/v0.2.5/javadoc/

J'espère que ça aide!

9
xomena

Vérifiez votre connection internet . ce qui se passe est à un moment donné entre la recherche et le rendu des résultats, la connexion est soit lente, soit ne fonctionne pas du tout. donc l'erreur par défaut est aucun GRCP trouvé. votre code doit gérer ce type d'erreurs et éviter le plantage de la carte

7
Pxaml

Pour moi, c'était le temps de l'appareil. Je faisais des tests et j'ai dû changer l'heure de l'appareil. L'heure de l'appareil doit être réglée correctement, sinon vous obtenez cette erreur.

2
hiddeneyes02

Cela m'est arrivé à la fois avec un appareil réel et un appareil émulé. Résolu mon redémarrage de l'application après le nettoyage du projet

1
Polyterative

Il est recommandé d'effectuer l'appel pour récupérer une adresse via le géocodeur via un IntentService .... mais si vous êtes en mode de développement rapide et que vous ne voulez pas vous embêter à configurer un service pour l'instant, vous pouvez utiliser un bloc try/catch

exemple à Kotlin:

try{
 val addressList = geocoder.getFromLocationName(locationName, 3)

 //...

}catch(e: IOException) {

 when{
  e.message == "grpc failed" -> {/* display a Toast or Snackbar instead*/ }
  else -> throw e
 }

}

1
lasec0203

Ce que j'ai fait, c'est que j'ai changé ma précision en GPS uniquement, dans ce cas, l'application ne calculait pas ma position. J'ai de nouveau changé la précision en haute précision et l'application a commencé à fonctionner, pas de plantage du tout. vous pouvez modifier la précision de votre GPS à partir des paramètres de localisation sur votre Android mobile.

0