Criar um app de ponto de interesse

Esta seção detalha os diferentes recursos da biblioteca que você pode usar para implementar a funcionalidade do seu app de ponto de interesse (PDI).

Declarar suporte à categoria no manifesto

Seu app precisa declarar a categoria de app para carros androidx.car.app.category.POI no filtro de intent da classe CarAppService dele.

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

Acessar o modelo de mapa

Os apps podem acessar o PlaceListMapTemplate projetado especificamente para exibir uma lista de pontos de interesse ao lado de um mapa renderizado pelo host.

Para ter acesso a esse modelo, seu app precisa declarar a permissão androidx.car.app.MAP_TEMPLATES no AndroidManifest.xml:

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

Atualizar conteúdo do PlaceListMapTemplate

Você pode permitir que os motoristas atualizem o conteúdo com um simples toque de botão enquanto navegam em listas de lugares criadas com o PlaceListMapTemplate. Implemente o método onContentRefreshRequested da interface OnContentRefreshListener e use PlaceListMapTemplate.Builder.setOnContentRefreshListener para definir o listener no modelo e ativar a atualização da lista.

O snippet a seguir mostra a definição do listener no modelo.

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

O botão "Atualizar" só é exibido no cabeçalho do PlaceListMapTemplate quando o listener tem um valor.

Quando o motorista clica no botão "Atualizar", o método onContentRefreshRequested da implementação do seu OnContentRefreshListener é chamado. Em onContentRefreshRequested, chame o método Screen.invalidate. Em seguida, o host vai chamar o método Screen.onGetTemplate do app para recuperar o modelo com o conteúdo atualizado. Consulte Como atualizar o conteúdo de um modelo para ver mais informações sobre a atualização de modelos. Contanto que o próximo modelo retornado por onGetTemplate seja do mesmo tipo, ele vai ser contabilizado como uma atualização e não vai ser contabilizado na cota do modelo.

Integrar com o Google Assistente usando as Ações no app

Ative por voz o app de PDI usando o Google Assistente para que os usuários possam pesquisar pontos de interesse fazendo pedidos como "Ok Google, encontre estações de recarga por perto no ExampleApp". Para conferir instruções detalhadas, consulte Ações no app para carros.