Este guia detalha os diferentes recursos da biblioteca Car App que podem ser usados 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.
O exemplo a seguir mostra como declarar a categoria do 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>
Acessar os modelos de mapas
Os apps de PDI podem acessar PlaceListMapTemplate
e MapWithContentTemplate
.
A PlaceListMapTemplate
foi projetada especificamente para mostrar uma lista dos
PDIs ao lado de um mapa renderizado pelo host.
O MapWithContentTemplate
pode ser usado para mostrar listas e outros tipos de
conteúdo ao lado de um mapa renderizado pelo seu app. Consulte
Desenhe mapas para mais detalhes sobre como usar este
modelo.
Para acessar esses modelos, o app precisa declarar a
androidx.car.app.MAP_TEMPLATES
no arquivo AndroidManifest.xml
:
<manifest ...>
...
<uses-permission android:name="androidx.car.app.MAP_TEMPLATES"/>
...
</manifest>
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 como definir o 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 de atualização só aparece no cabeçalho do
PlaceListMapTemplate
quando o listener tem um valor.
Quando o usuário clica no botão, o
método onContentRefreshRequested
da implementação do seu OnContentRefreshListener
é chamado. No
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 Atualizar o
conteúdo de um modelo para mais informações sobre
a atualização de modelos. Contanto que o próximo modelo retornado por onGetTemplate
seja do mesmo tipo, ele será contabilizado como uma atualização, e não 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.