Créer une application de point d'intérêt (ou application POI)

Ce guide détaille les différentes fonctionnalités de la bibliothèque Car App que vous pouvez utiliser pour implémenter votre application de point d'intérêt (POI).

Déclarer la catégorie compatible dans votre fichier manifeste

Votre application doit déclarer la catégorie d'applications automobiles androidx.car.app.category.POI dans le filtre d'intent de son CarAppService.

L'exemple suivant montre comment déclarer la catégorie d'applications :

<application>
    ...
   <service
       ...
        android:name=".MyCarAppService"
        android:exported="true">
      <intent-filter>
        <action android:name="androidx.car.app.CarAppService" />
        <category android:name="androidx.car.app.category.POI"/>
      </intent-filter>
    </service>
    ...
<application>

Accéder aux modèles de carte

Les applications POI peuvent accéder à PlaceListMapTemplate et MapWithContentTemplate.

PlaceListMapTemplate est spécialement conçu pour afficher une liste des des POI à côté d'une carte affichée par l'hôte.

Le MapWithContentTemplate peut être utilisé pour afficher des listes et d'autres types de contenu à côté d'une carte affichée par votre application. Voir Dessinez des cartes pour en savoir plus sur l'utilisation de modèle.

Pour accéder à ces modèles, votre application doit déclarer le Autorisation androidx.car.app.MAP_TEMPLATES dans son fichier AndroidManifest.xml:

<manifest ...>
  ...
  <uses-permission android:name="androidx.car.app.MAP_TEMPLATES"/>
  ...
</manifest>

Actualiser le contenu du modèle PlaceListMapTemplate

Vous pouvez autoriser les conducteurs à actualiser le contenu d'un simple geste, tout en parcourant des listes de lieux créées avec PlaceListMapTemplate. Mettez en œuvre la méthode onContentRefreshRequested de l'interface OnContentRefreshListener et utilisez PlaceListMapTemplate.Builder.setOnContentRefreshListener pour définir l'écouteur au niveau du modèle afin d'activer l'actualisation de la liste.

L'extrait de code suivant montre comment définir l'écouteur au niveau du modèle :

Kotlin

PlaceListMapTemplate.Builder()
    ...
    .setOnContentRefreshListener {
        // Execute any desired logic
        ...
        // Then call invalidate() so onGetTemplate() is called again
        invalidate()
    }
    .build()

Java

new PlaceListMapTemplate.Builder()
        ...
        .setOnContentRefreshListener(() -> {
            // Execute any desired logic
            ...
            // Then call invalidate() so onGetTemplate() is called again
            invalidate();
        })
        .build();

Le bouton d'actualisation ne s'affiche dans l'en-tête du PlaceListMapTemplate que si l'écouteur a une valeur.

Lorsque l'utilisateur clique sur le bouton d'actualisation, la méthode onContentRefreshRequested de votre implémentation de OnContentRefreshListener est appelée. Dans onContentRefreshRequested, appelez la méthode Screen.invalidate. L'hôte rappelle ensuite la méthode Screen.onGetTemplate de votre application pour récupérer le modèle avec le contenu actualisé. Pour plus d'informations, consultez la section Actualiser le contenu d'un modèle. Tant que le modèle suivant renvoyé par onGetTemplate est du même type, il est considéré comme une actualisation et n'est pas comptabilisé dans le quota de modèles.

Intégrer l'Assistant Google à l'aide des actions dans les applications

Activez les commandes vocales pour une application POI à l'aide de l'Assistant pour permettre aux utilisateurs de rechercher des points d'intérêt en disant, par exemple, "Hey Google, trouve les bornes de recharge les plus proches sur l'appli XXX". Pour obtenir des instructions détaillées, consultez la section Actions dans les applications pour voitures.