Cómo crear una app de lugares de interés

En esta guía, se detallan las diferentes funciones de la biblioteca de Car App que puedes usar para implementar la funcionalidad de tu app de lugares de interés.

Declara la compatibilidad con la categoría en tu manifiesto

Tu app debe declarar la categoría de app para vehículos androidx.car.app.category.POI en el filtro de intents de su CarAppService.

En el siguiente ejemplo, se muestra cómo declarar la categoría de la app:

<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>

Acceder a las plantillas de mapas

Las apps de lugares de interés pueden acceder al PlaceListMapTemplate y MapWithContentTemplate.

El elemento PlaceListMapTemplate está diseñado específicamente para mostrar una lista de los Son lugares de interés junto a un mapa renderizado por el host.

MapWithContentTemplate se puede usar para mostrar listas y otros tipos de contenido junto a un mapa que renderiza tu app. Consulta Dibuja mapas para obtener más información sobre cómo usar esta plantilla.

Para acceder a estas plantillas, tu app debe declarar el androidx.car.app.MAP_TEMPLATES en su archivo AndroidManifest.xml:

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

Actualiza el contenido de PlaceListMapTemplate

Puedes permitir que los conductores actualicen el contenido con solo presionar un botón mientras exploran listas de lugares compiladas con PlaceListMapTemplate. Implementa el método onContentRefreshRequested de la interfaz de OnContentRefreshListener y usa PlaceListMapTemplate.Builder.setOnContentRefreshListener para configurar el objeto de escucha en la plantilla si quieres habilitar la actualización de la lista.

En el siguiente fragmento, se muestra cómo configurar el objeto de escucha en la plantilla:

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();

El botón de actualización solo se muestra en el encabezado de PlaceListMapTemplate si el objeto de escucha tiene un valor.

Cuando el conductor hace clic en el botón de actualización, se llama al método onContentRefreshRequested de la implementación de OnContentRefreshListener. En onContentRefreshRequested, llama al método Screen.invalidate. Luego, el host volverá a llamar al método Screen.onGetTemplate de tu app para recuperar la plantilla con el contenido actualizado. Consulta Cómo actualizar el contenido de una plantilla para obtener más información. Siempre que la siguiente plantilla que muestra onGetTemplate sea del mismo tipo, se contará como una actualización y no se sumará a la cuota de la plantilla.

Usa Acciones en apps para la integración con Asistente de Google

Habilita tu app de lugares de interés por voz con Asistente y permite que los usuarios puedan hacer preguntas como "Hey Google, busca estaciones de carga cercanas en AppDeEjemplo" para buscar lugares de interés. Para obtener instrucciones detalladas, consulta Acciones en apps para vehículos.