Table des matières:
- Comment mettre à jour votre configuration de compilation
- Comment ouvrir une connexion à Google Play
- Vous avez traversé la partie difficile. Une fois que vous avez réussi à vous connecter à Google Play Services, vous pouvez commencer à écouter les mises à jour de localisation.
- C'est assez simple à utiliser. Le seul hic est que parce qu'il fait une requête réseau à Google sur le thread actuel, c'est à vous de vous assurer que vous l'exécutez seulement sur le thread d'arrière-plan (de sorte que vous ne bloquez pas le thread principal de l'interface utilisateur lente réseaux).
Vidéo: TUTO Android : Votre première application Android (mise en oeuvre avec Android Studio) 2025
De nombreuses applications Android peuvent offrir un avantage appréciable à leurs utilisateurs en leur apportant une expérience utilisateur. Qu'il s'agisse de montrer aux utilisateurs leur emplacement sur une carte ou quelque chose de plus complexe comme fournir des notifications d'arrière-plan basées sur le GPS, l'ajout de services de localisation à votre application est souvent attendu par les utilisateurs.
Il existe plusieurs façons d'ajouter un emplacement à vos applications Android. Dans Lollipop, certains des plus communs sont
-
Affiche l'adresse actuelle de la ville ou de la rue. C'est ce qu'on appelle le géocodage inverse.
-
Suivre activement la localisation de l'utilisateur, par exemple en affichant l'emplacement de l'utilisateur sur une carte.
-
Configurez un geofence pour recevoir une notification lorsqu'un utilisateur arrive ou quitte un emplacement.
-
Suivre l'emplacement des utilisateurs pour effectuer une reconnaissance d'activité et déterminer s'ils marchent, font de la bicyclette ou conduisent.
-
Détecte si un utilisateur se trouve à proximité d'un iBeacon en utilisant Bluetooth.
Cet article vous montre l'une des utilisations les plus courantes de l'emplacement, à savoir surveiller l'emplacement des utilisateurs et leur afficher leur adresse actuelle dans un TextView.
Vous devez effectuer quatre opérations pour configurer des emplacements dans votre application:
-
Mettez à jour votre configuration de build.
-
Ouvrez une connexion à Google Play.
-
Abonnez-vous aux mises à jour de localisation.
-
Afficher l'adresse de l'utilisateur.
Comment mettre à jour votre configuration de compilation
Android dispose d'un ancien jeu d'API de localisation intégré à l'OS sous Android. paquet de localisation. Ces API ne sont plus gérées, vous devez donc utiliser les nouvelles API Google Play Services pour obtenir l'emplacement de l'utilisateur.
Pour ajouter l'API Google Play Services Location à votre projet, placez la dépendance suivante dans votre build. fichier de configuration:
dépendances { compile ' com. Google. Android. gms: play-services-location: 6. 5. 87 ' }
Ensuite, ajoutez ce qui suit à votre AndroidManifest. xml:
" autorisation android. ACCESS_COARSE_LOCATION " /> " permission android. ACCESS_FINE_LOCATION " /> " com. Google. Android.gms. Version " android: valeur = " @ entier / google_play_services_version " />
L'autorisation ACCESS_COARSE_LOCATION utilise les informations Wi-Fi et les informations relatives à la tour de téléphonie cellulaire, lorsqu'elles sont disponibles, pour fournir des mises à jour de la taille d'un bloc de ville. L'autorisation ACCESS_FINE_LOCATION peut vous fournir beaucoup plus d'informations à haute résolution en utilisant le GPS du téléphone, mais au détriment de la consommation de la batterie.Si votre application n'a besoin que d'un emplacement approximatif, vous pourriez penser qu'il est logique de ne demander que l'autorisation ACCESS_COARSE_LOCATION, mais la plupart des applications voudront les deux.
Vous devriez normalement demander les deux autorisations car vous utiliserez un Localisateur de Localité appelé FusedLocationProvider, qui choisit automatiquement entre le Wi-Fi, la tour cellulaire et les fournisseurs de localisation GPS pour vous donner la meilleure précision au moindre coût pour votre batterie. Si vous savez que vous n'aurez jamais besoin d'informations détaillées sur l'emplacement, vous pouvez envisager de supprimer l'autorisation ACCESS_FINE_LOCATION, mais sachez que votre application risque de ne pas fonctionner correctement dans les endroits sans tour de téléphonie mobile ou Wi-Fi.
La balise de métadonnées est nécessaire chaque fois que vous utilisez la bibliothèque du service Google Play.
Comment ouvrir une connexion à Google Play
Les API de localisation sont assez simples, mais pour les utiliser, vous devez configurer les API Google Play Services, ce qui est un peu plus compliqué à utiliser.
Pour établir une connexion avec Google Play Services, ajoutez ce qui suit à votre activité ou fragment:
// Le client de l'API Google, pour les services de localisation GoogleApiClient googleApiClient; @Override public void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); googleApiClient = nouveau GoogleApiClient. Builder (getActivity ()). addConnectionCallbacks (this). addOnConnectionFailedListener (this). addApi (API LocationServices.). construire(); …} @Override public void onStart () {super. onStart (); googleApiClient. relier(); } @Overide public void onStop () { googleApiClient. déconnecter (); super. onStop ();}
Ce code crée un nouvel objet GoogleApiClient dans votre onCreate () pour se connecter à Google Play Services, puis il tente de se connecter à votre onStart () et de se déconnecter dans votre onStop (). GoogleApiClient a besoin d'un objet de rappel qu'il peut informer lorsqu'une connexion a été établie. Vous devez donc ajouter des rappels à votre activité ou fragment. Vous pouvez ajouter les rappels à TaskEditFragment à n'importe quelle activité de fragment.
public class TaskEditFragment extends Fragment implémente ConnectionCallbacks, OnConnectionFailedListener { @Override public void onConnected (Bundle connectionHint) { // Connecté à Google Play prestations de service! // C'est ici que vous commencerez à demander l'emplacement // mises à jour. } @Override public void onConnectionSuspended (cause int) { // La connexion Google Play a été interrompue. // Désactiver les composants de l'interface utilisateur qui dépendent des // API Google jusqu'à ce que onConnected () soit appelé. // // Cet exemple n ' ' a besoin de faire quoi que ce soit ici. } @Override public void onConnectionFailed (résultat ConnectionResult) { // Ce rappel est important pour gérer les erreurs // qui peuvent survenir lors d'une tentative de connexion avec > // Google. // // Si votre application a gagné ' ne fonctionne pas correctement sans // mises à jour, alors ' est important pour gérer la connexion // erreurs correctement.Voir // // développeur. Android. com / google / auth / api-client. html // pour plus d'informations sur la gestion des erreurs lorsque // connexion à Google. // // Les informations de localisation sont facultatives pour cette application, donc // les erreurs de connexion peuvent être ignorées en toute sécurité ici. } } Félicitations! Vous avez maintenant correctement configuré une connexion à Google Play Services qui se déconnecte automatiquement lorsque votre activité ou fragment est arrêté. L'étape suivante consiste à demander des mises à jour de localisation.
Vous avez traversé la partie difficile. Une fois que vous avez réussi à vous connecter à Google Play Services, vous pouvez commencer à écouter les mises à jour de localisation.
Vous devez d'abord indiquer à l'API de localisation la fréquence et l'exactitude des mises à jour de votre position. Si vous devez afficher l'emplacement actuel des utilisateurs sur une carte, vous souhaiterez peut-être des mises à jour très précises et rapides, afin que les utilisateurs puissent voir où ils se trouvent lorsqu'ils se déplacent. La plupart des applications nécessitent probablement des mises à jour moins fréquentes, et c'est ce que vous utiliserez dans cet exemple.
// Le paramètre LocationRequest définit la fréquence à laquelle nous avons besoin d'emplacement // met à jour LocationRequest locationRequest = new LocationRequest (). setInterval (30000). setPriority (LocationRequest. PRIORITY_BALANCED_POWER_ACCURACY);
Cette localisationRequest est configurée pour demander de nouvelles mises à jour de position environ toutes les 30 secondes, et pour essayer d'équilibrer une bonne précision avec une consommation d'énergie correcte. Si vous souhaitez réduire la consommation de la batterie, essayez PRIORITY_LOW_POWER ou, si vous voulez une précision supérieure, essayez PRIORITY_HIGH_ACCURACY. Vous pouvez même utiliser PRIORITY_NO_POWER pour les applications qui se mettent à jour très rarement en arrière-plan et qui veulent juste récupérer les mises à jour de localisation demandées par les autres applications! Consultez LocationRequest sur le site développeur Android pour plus d'informations sur les différentes options que vous pouvez utiliser.
Pour commencer à écouter les mises à jour de position, ajoutez ce qui suit à la méthode onConnected () que vous venez de créer:
@Overide public void onConnected (Bundle connectionHint) {// Connecté aux services Google Play! // Abonnez-vous aux mises à jour de localisation
FusedLocationApi. requestLocationUpdates ( googleApiClient, locationRequest, this); } Ceci demande à FusedLocationApi de commencer à envoyer les mises à jour de votre emplacement d'application à l'aide de LocationRequest que vous venez de configurer. Pour que cela fonctionne, cependant, vous devez fournir un objet de rappel qui peut recevoir les mises à jour d'emplacement. Ajoutez l'interface LocationListener à votre activité ou fragment, puis ajoutez la méthode onLocationChanged () comme suit:TaskEditFragment extends Fragment implémente ConnectionCallbacks, OnConnectionFailedListener,
com. Google. Android. gms. emplacement. LocationListener
{ @Override public void onLocationChanged (emplacement final) { Toast. makeText (getActivity (), emplacement toString (), Toast, LENGTH_LONG). montrer(); }} Au fait, si tout ce qui vous intéresse est l'emplacement actuel de l'utilisateur, et que vous ne tenez pas à le garder à jour, consultez FusedLocationApi.getLastLocation (), qui supprime le besoin de l'interface LocationListener. Maintenant, si vous exécutez votre activité, vous devriez voir un message Toast qui affiche l'emplacement actuel de l'utilisateur.
La possibilité de voir leurs coordonnées GPS n'est pas vraiment utile aux utilisateurs, alors utilisons leur emplacement pour trouver leur adresse actuelle et les afficher.
Comment afficher l'adresse de l'utilisateur
Android a une API intégrée appelée Geocoder pour rechercher l'adresse d'un utilisateur à partir de ses coordonnées GPS (et vice versa).
C'est assez simple à utiliser. Le seul hic est que parce qu'il fait une requête réseau à Google sur le thread actuel, c'est à vous de vous assurer que vous l'exécutez seulement sur le thread d'arrière-plan (de sorte que vous ne bloquez pas le thread principal de l'interface utilisateur lente réseaux).
Ajoutez ce qui suit à votre activité ou fragment:
Geocoder geocoder; @Override public void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); … geocoder = new Geocoder (getActivity ());} @Oublide public void onLocationChanged (emplacement final) {// Demande à google l'adresse de l'emplacement. // Cela peut prendre un certain temps, faites le dans une asyncTask. new AsyncTask () {@Override protected Adresse doInBackground (Void [] params) {try {Liste des adresses = geocoder. getFromLocation (emplacement: getLatitude (), emplacement: getLongitude (), 1); if (adresses! = null && adresses. size ()> 0)
adresses de retour. get (0);
} catch (IOException e) { // ignoré } return null; } // Exécution sur le thread UI @Override protected void onPostExecute (Adresse adresse) { if (adresse! = Null) { Chaîne s = adresse. getThoroughfare (); if (s! = Null) Toast. makeText (getActivity (), s, Toast, LENGTH_LONG). montrer(); } } }. exécuter(); } Ce code ajoute un champ Geocoder à votre activité ou fragment, l'initialise dans onCreate (), puis l'utilise dans onLocationChanged () pour trouver l'adresse de l'emplacement actuel. Il affiche ensuite un message Toast avec la "voie" pour l'adresse, par exemple "600 West Chicago Avenue". "L'objet Adresse renvoyé par le géocodeur est riche en informations; Découvrez les javadocs pour plus de détails sur ce que vous pouvez afficher.
Et avec cela, vous avez à peu près tout ce que vous devez savoir sur l'abonnement à l'emplacement actuel de l'utilisateur à partir d'une activité ou d'un fragment Android.
