Crea un'app per i punti di interesse

Questa guida illustra nel dettaglio le diverse funzionalità della raccolta di app per auto che puoi utilizzare per implementare la funzionalità dell'app punto d'interesse (PDI).

Dichiara il supporto delle categorie nel tuo file manifest.

La tua app deve dichiarare la categoria di app auto androidx.car.app.category.POI nel filtro per intent del relativo CarAppService.

L'esempio seguente mostra come dichiarare la categoria di 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>

Accedi ai modelli di mappa

Le app per PDI possono accedere a PlaceListMapTemplate e MapWithContentTemplate.

PlaceListMapTemplate è progettato specificamente per mostrare un elenco dei PDI insieme a una mappa che viene visualizzata dall'host.

L'elemento MapWithContentTemplate può essere utilizzato per visualizzare elenchi e altri tipi di contenuti insieme a una mappa visualizzata dalla tua app. Consulta Disegna mappe per ulteriori dettagli sull'utilizzo di questo modello.

Per accedere a questi modelli, la tua app deve dichiarare l'autorizzazione androidx.car.app.MAP_TEMPLATES nel relativo file AndroidManifest.xml:

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

Aggiorna i contenuti PlaceListMapTemplate

Puoi consentire ai conducenti di aggiornare i contenuti semplicemente toccando un pulsante mentre sfogliano gli elenchi di luoghi creati con PlaceListMapTemplate. Implementa il metodo onContentRefreshRequested dell'interfaccia OnContentRefreshListener e utilizza PlaceListMapTemplate.Builder.setOnContentRefreshListener per impostare il listener sul modello al fine di abilitare l'aggiornamento dell'elenco.

Lo snippet seguente mostra come impostare il listener sul modello:

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

Il pulsante di aggiornamento viene mostrato nell'intestazione di PlaceListMapTemplate solo se il listener ha un valore.

Quando l'utente fa clic sul pulsante di aggiornamento, viene chiamato il metodo onContentRefreshRequested dell'implementazione di OnContentRefreshListener. All'interno di onContentRefreshRequested, chiama il metodo Screen.invalidate. L'host richiama quindi il metodo Screen.onGetTemplate della tua app per recuperare il modello con i contenuti aggiornati. Per ulteriori informazioni sull'aggiornamento dei modelli, consulta Aggiornare i contenuti di un modello. Se il modello successivo restituito da onGetTemplate è dello stesso tipo, viene conteggiato come un aggiornamento e non viene conteggiato ai fini della quota del modello.

Eseguire l'integrazione con l'Assistente Google usando Azioni app

Attiva i comandi vocali per la tua app PDI utilizzando l'assistente per consentire agli utenti di cercare punti d'interesse chiedendo, ad esempio, "Hey Google, trova stazioni di ricarica nelle vicinanze su ExampleApp". Per istruzioni dettagliate, vedi Azioni app per le auto.