Services Google Play: utilisation de l’API Places

En mars 2015, Google a publié l’API Places pour Android dans le cadre des services Play de Google. Cette API permet aux développeurs d’accéder à une mine d’informations de Google pour offrir aux utilisateurs une expérience adaptée à leur emplacement actuel en utilisant les noms et les informations des lieux, plutôt qu’un ensemble de coordonnées.

Dans ce didacticiel, vous apprendrez à présenter à vos utilisateurs le composant Sélecteur de lieux, à utiliser l’API Places pour deviner le lieu actuel de l’utilisateur, à rechercher un lieu par son ID et à permettre à l’utilisateur de taper dans un champ de texte pour le présenter. avec des résultats prédictifs.

1. Mise en place

Si vous ne possédez pas encore de clé API publique Android, vous devrez créer une clé API Google publique pour les applications Android. Vous pouvez le faire en visitant le Console des développeurs de Google. Les instructions pour créer une clé en fonction de votre certificat de signature et du nom du package sont disponibles dans Documentation de Google et sortent du cadre de cet article.

Lorsque vous avez créé une clé, recherchez l’API Places et définissez-la sur activée. Certains appels à l’API Places sont limités dans le nombre de demandes pouvant être envoyées par période de 24 heures. Au moment de la rédaction de cet article, un compte sans profil de facturation peut envoyer jusqu’à 1 000 demandes, tandis qu’un compte avec un profil de facturation peut envoyer 150 000 demandes. Si vous avez besoin de plus, vous pouvez soumettre une demande d’augmentation de cette limite comme décrit dans le Limites d’utilisation Documentation.

Avec la clé API prête à être utilisée, il est temps de commencer à travailler sur le projet de démonstration. Créez un projet dans Android Studio et définissez la version minimale du SDK prise en charge sur au moins 9. Il s’agit de la configuration minimale requise pour utiliser les services Play de Google.

Une fois qu’Android Studio a créé le Bonjour le monde projet de modèle, ouvrez le build.gradle fichier et, sous le dependencies nœud, ajoutez la dépendance requise de Play Services 7.0. Il s’agit de la dernière version au moment de la rédaction, mais vous pouvez vérifier la dernière version en vérifiant Documentation de Google.

Ensuite, ouvrez AndroidManifest.xml, ajoutez les autorisations requises pour le projet et indiquez qu’OpenGL version 2 est requis par l’application.

La dernière chose que vous devrez faire dans le manifeste est d’ajouter deux <meta-data> balises pour définir la version gms et la clé API de l’application dans le <application> marque.

Lorsque vous avez terminé avec le manifeste, vous êtes prêt à commencer à écrire du code. Comme il s’agit d’un composant de Play Services, vous devrez initialiser votre GoogleApiClient et connectez / déconnectez-le pendant votre Activitycycle de vie de. Nous faisons cela dans le onCreate, onStart, et onStop méthodes de la Activity classe.

2. Utilisation du widget Sélecteur de lieux

Le widget Place Picker est un composant d’interface utilisateur fourni par Play Services qui permet à l’utilisateur de voir une carte de sa zone environnante. Le composant comprend une liste des lieux à proximité pouvant être utilisés par votre application. En utilisant ce composant, vous êtes en mesure de suivre une conception standard avec laquelle vos utilisateurs sauront comment interagir tout en économisant du temps de développement.

Widget de sélection de lieux

Pour utiliser le sélecteur de lieu, vous devez créer une intention et écouter les Activity result pour récupérer le lieu sélectionné par l’utilisateur. La méthode suivante montre comment lancer ce Activity.

le PlacePicker.IntentBuilder est utilisé pour créer le Intent qui sera utilisé pour lancer le sélecteur de lieux. Il dispose également d’une méthode disponible, setLatLngBounds, qui vous permet de placer une limite géographique d’un coin sud-ouest à un coin nord-est pour contrôler la zone de recherche.

En relation :  Comment remplir des formulaires PDF à l'aide de Google Drive

le Intent peut être construit en utilisant le build méthode de PlacePicker.IntentBuilder et lancé en utilisant le startActivityForResult méthode de votre Activity. Il est à noter que l’utilisation du build méthode a la possibilité de lancer un GooglePlayServicesRepairableException ou un GooglePlayServicesNotAvailableException exception, donc ceux-ci doivent être vérifiés à l’aide d’un bloc try / catch standard et gérés correctement s’ils se produisent.

Si l’utilisateur sélectionne un emplacement dans la liste de sélection de lieux, Place l’objet est emballé dans un Intent et renvoyé à l’appel Activity. En utilisant le PlacePicker.getPlace méthode, vous pouvez extraire la Place les données du retour Intent.

Une fois la Place objet est extrait, il peut être traité comme un objet modèle à afficher ou à utiliser dans votre application.

L'API Places en action

3. Recherche de l’emplacement actuel de l’utilisateur

Une autre caractéristique intéressante de l’API Places est que vous pouvez l’utiliser pour deviner si l’utilisateur se trouve actuellement à un endroit répertorié. L’API fournira également une probabilité afin que vous puissiez prendre des décisions éclairées sur la manière dont votre application doit interagir avec l’utilisateur. Il convient de noter que c’est l’une des fonctionnalités de l’API qui nécessite une requête contre vos utilisations attribuées.

Pour détecter la place de l’utilisateur, vous devrez utiliser le Places.PlacesDetectionApi.getCurrentPlace méthode pour créer un PendingIntent qui revient avec un PlaceLikelihoodBuffer objet. Utilisant un ResultCallBack, vous pouvez prendre le premier, et le plus probable, emplacement du tampon et l’utiliser dans votre application.

Si votre application a besoin de plus d’informations, vous pouvez extraire d’autres PlaceLikelihood éléments du tampon en le parcourant en boucle. La probabilité que cet endroit soit celui où se trouve actuellement l’utilisateur est renvoyée dans chaque PlaceLikelihood objet en tant que valeur à virgule flottante de 0,0 à 1.0, 1.0 étant presque un match garanti. N’oubliez pas d’appeler release sur le PlaceLikelihoodBuffer pour éviter toute fuite de mémoire.

Demander à l'API Places la vraisemblance du lieu actuel

4. Prédire les lieux

Le sujet suivant, et le plus complexe, que nous aborderons dans ce didacticiel est la prédiction et l’affichage des lieux à l’utilisateur lors de la saisie d’une requête de recherche. Encore une fois, cet appel d’API compte également dans les limites d’utilisation de l’API. Cependant, il est inestimable pour rendre votre application plus utilisable.

Prédire les lieux

Pour cette partie du didacticiel, vous utiliserez un AutoCompleteTextView et un adaptateur personnalisé dans l’application pour saisir le nom d’un lieu pour les prédictions. Presque tout le travail est effectué dans l’adaptateur. Cependant, nous devrons passer une référence à la GoogleApiClient à l’adaptateur pour qu’il accède à l’API.

Cela peut être fait dans la norme GoogleApiClient rappeler, onConnected, et nous pouvons supprimer l’instance du client dans onStopmAdapter est une instance de notre coutume Adapter classe, AutoCompleteAdapter.

Pour déclencher un appel API chaque fois que l’utilisateur tape une nouvelle lettre dans le AutoCompleteTextView, vous devez remplacer le getFilter méthode de la ArrayAdapter. Cette méthode est déclenchée chaque fois que l’utilisateur modifie le contenu de la vue associée à l’adaptateur. Il vous permet de modifier le contenu de l’adaptateur du AutoCompleteTextView. Dans l’exemple suivant, constraints est le contenu de la vue.

le displayPredictiveResults est l’endroit où l’interaction réelle avec l’API se produit. Il existe quelques objets différents qui peuvent être créés pour personnaliser vos prédictions.

En relation :  Mettre à niveau votre smartphone? 5 questions à poser avant de faire

Le premier est un LatLngBounds objet qui crée une limite carrée d’un point sud-ouest à un point nord-est pour localiser la requête. Si null est passé au lieu d’un initialisé LatLngBounds objet, aucune restriction géographique ne sera appliquée à la requête.

Le deuxième objet que vous pouvez créer pour personnaliser la requête est un filtre pour la requête API. Le filtre pour le Places AutoCompletePredictions call est une liste de Integer objets représentant différents types de filtres. À ce stade, un seul type de filtre peut être appliqué à une requête. Les valeurs acceptables se trouvent dans le Documentation. Si la Integer la liste est vide ou null est passé, puis tous les types de résultats sont renvoyés.

Une fois que vous êtes prêt à faire la demande, vous pouvez utiliser le Places.GeoDataApi.getAutocompletePredictions méthode pour renvoyer un PendingIntent, qui peut être associé à un ResultCallback pour afficher les informations renvoyées.

Il est important de noter qu’un objet personnalisé représentant le AutoCompletePrediction objets du tampon est utilisé pour stocker les données dans le ArrayAdapter. Sinon un IllegalArgumentsException exception serait levée dès que le tampon est libéré, ce qui est crucial pour éviter une fuite de mémoire.

Le contenu dans AutoCompleteAdapter s’affiche à l’aide d’un android.R.layout.simple_list_item_1 disposition et modèle ViewHolder standard dans getView.

Lorsqu’un élément est cliqué dans cette liste, l’ID de l’élément sélectionné Place est passé au onItemClickedListener et recherché pour afficher.

5. Recherche d’un lieu par ID

La dernière partie de ce tutoriel couvre la recherche d’un Place objet basé sur son ID. Cela fonctionne de la même manière que les autres appels d’API en créant un PendingIntent et interagir avec un tampon retourné pour récupérer le lieu. Comme les autres objets tampons avec lesquels vous avez travaillé, le PlaceBuffer doit appeler release pour éviter toute fuite de mémoire.

Conclusion

L’API Places est un outil puissant pour rendre vos applications conscientes de l’emplacement de l’utilisateur afin de leur fournir des informations contextuelles. Dans ce didacticiel, vous avez appris à utiliser le composant Sélecteur de lieu, à deviner le lieu de l’utilisateur, à lui présenter des résultats prédictifs lors de la recherche et à trouver un lieu en fonction d’un ID donné. En plus des sujets abordés ici, il est également possible de soumettre de nouveaux lieux à Google pour aider à développer les informations auxquelles l’API a accès.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.