O controle de voz permite que os motoristas realizem tarefas sem tirar as mãos do volante ou os olhos da estrada. Com as Ações no app para carros, os motoristas podem usar o Google Assistente para controlar apps Android no sistema de infoentretenimento dizendo comandos como "Ok Google, encontre vagas na rua no AppDeExemplo".
As Ações no app funcionam com aplicativos para carro com ponto de interesse (PDI). Este guia aborda os requisitos e limitações específicos para integrar essas ações no seu app de PDI.
Como funciona
As Ações no app estendem as funcionalidades do aplicativo ao Google Assistente, permitindo que os usuários
acessem os recursos usando a voz. Quando um usuário invoca uma Ação no app,
o Google Assistente associa a consulta a uma intent integrada (BII, na sigla em inglês) declarada no recurso
shortcuts.xml
do app e o inicia na tela solicitada.
Declare suporte para BIIs no app usando elementos capability
do Android.
Quando você faz upload
do app usando o Play Console, o Google registra e disponibiliza os recursos
declarados para os usuários acessarem pelo
Google Assistente.
- Um usuário aciona o Google Assistente e faz uma solicitação por voz para um app específico.
- O Google Assistente associa a solicitação a um modelo pré-treinado e extrai todos os parâmetros com suporte da BII.
- Nesse exemplo, o Google Assistente associa a consulta à BII
GET_CHARGING_STATION
, extrai o parâmetro de localização "SFO" e traduz o local para coordenadas geográficas. - O app é acionado com a definição de fulfillment para essa BII.
- O app processa o fulfillment, mostrando as opções de estação de recarga no sistema de infoentretenimento do motorista.
Limitações
As implementações Ações no app para carros têm as seguintes limitações:
As Ações no app para carros precisam ser atendidas usando links diretos do Android. Para mais informações sobre fulfillments de Ações no app, consulte Fornecer detalhes de fulfillment para intents integradas.
As implementações para carros têm suporte apenas a estas BIIs:
- Estacionamento:
GET_PARKING_FACILITY
- Carregamento:
GET_CHARGING_STATION
- Estacionamento:
Requisitos
Siga estas etapas para preparar seu app de carro para as Ações no app:
- Cumpra os requisitos gerais de apps Android para Ações no app.
- Inclua a dependência da biblioteca Car App. Para saber mais, consulte Como declarar dependências.
Determinar a intent e o fulfillment
A primeira etapa para ativar por voz um app do carro com Ações no app é determinar quais comandos, ou intents, podem ser usados com seu app. Em seguida, defina um fulfillment para cada intent, especificando como o app vai atender à solicitação.
Para quais intents o app do carro oferece suporte?
As Ações no app oferecem modelos de voz pré-treinados, chamados de intents integradas (BII, na sigla em inglês), que podem entender e interpretar os comandos de voz de um usuário quando ele diz "Ok Google". Para responder a solicitações de voz, declare ao Google Assistente as BIIs que podem ser usadas pelo app. Por exemplo, se você quiser que o app ajude a encontrar um estacionamento, implemente a BII
GET_PARKING_FACILITY
. Ou implemente a BIIGET_CHARGING_STATION
para ajudar os usuários a encontrar estações de recarga de carros elétricos.Como seu app precisa atender a cada intent?
Seu app atende à solicitação de voz iniciando na tela adequada. As Ações no app oferecem o fulfillment com parâmetros extraídos da solicitação do usuário, permitindo que você personalize a resposta de acordo com as necessidades dele.
Integrar Ações no app
Depois de determinar a estratégia de fulfillment, siga estas etapas para ativar o app do carro por voz:
Abra a atividade principal
AndroidManifest.xml
e declare suporte para atalhos do Android. Use os elementos de atalhocapability
para declarar ao Google Assistente as BIIs que podem ser usadas com o app. Para mais informações, consulte Adicionar recursos.<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
Em seguida, adicione um elemento
<intent-filter>
aoAndroidManifest.xml
. Isso permite que o Google Assistente use links diretos para se conectar ao conteúdo do app.Para o fulfillment do Android Auto, o
<intent-filter>
é igual ao app para dispositivos móveis.No Android Automotive OS, a sessão
CarAppService
do app aciona o Google Assistente. Para permitir que uma sessão acione seu link direto, especifique um<intent-filter>
no elemento<activity>
doAndroidManifest.xml
.
<!-- AndroidManifest.xml --> <activity ... android:name="androidx.car.app.activity.CarAppActivity"> ... <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="YOUR_SCHEME" android:host="YOUR_HOST" /> </intent-filter> </activity>
Se você ainda não tiver um arquivo
shortcuts.xml
do diretóriores/xml
do app, crie um novo. Para saber mais sobre como as Ações no app usam atalhos do Android, consulte Criar shortcuts.xml.No
shortcuts.xml
, implemente umacapability
para a BII escolhida. Em seguida, adicione uma<intent>
aninhada para definir o fulfillment do app.<!-- shortcuts.xml --> <?xml version="1.0" encoding="utf-8"?> <shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <capability android:name="actions.intent.GET_PARKING_FACILITY"> <intent> <url-template android:value="YOUR_SCHEME://YOUR_HOST{?name,address,disambiguatingDescription,latitude,longitude}"> <!-- Facility name, e.g. "Googleplex" --> <parameter android:name="parkingFacility.name" android:key="name"/> <!-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" --> <parameter android:name="parkingFacility.address" android:key="address"/> <!-- Disambiguate the type of service, e.g. "valet" --> <parameter android:name="parkingFacility.disambiguatingDescription" android:key="disambiguatingDescription"/> <!-- Latitude, e.g. "37.3861" --> <parameter android:name="parkingFacility.geo.latitude" android:key="latitude"/> <!-- Longitude, e.g. "-122.084" --> <parameter android:name="parkingFacility.geo.longitude" android:key="longitude"/> </intent> </capability> </shortcuts>
Por fim, atualize a lógica
Session()
do app de carro para processar o fulfillment das Ações no app. Os exemplos a seguir demonstram o gerenciamento de intents paraSession.onCreateScreen()
eSession.onNewIntent()
.onCreateScreen()
Kotlin
@Override fun onCreateScreen(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public Screen onCreateScreen(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
onNewIntent()
Kotlin
@Override fun onNewIntent(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public void onNewIntent(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Visualizar, testar e publicar o app
As Ações no app oferecem ferramentas para visualizar e testar seu app. Acesse a visão geral das Ações no app para saber mais sobre essas ferramentas e aprender a publicar na Play Store seu app para carros ativado por voz.