Ações no app para carros

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.

Gráfico mostrando fulfillment de carro.

  1. Um usuário aciona o Google Assistente e faz uma solicitação por voz para um app específico.
  2. O Google Assistente associa a solicitação a um modelo pré-treinado e extrai todos os parâmetros com suporte da BII.
  3. 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.
  4. O app é acionado com a definição de fulfillment para essa BII.
  5. 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:

Requisitos

Siga estas etapas para preparar seu app de carro para as Ações no app:

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 BII GET_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:

  1. Abra a atividade principal AndroidManifest.xml e declare suporte para atalhos do Android. Use os elementos de atalho capability 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" />
    
  2. Em seguida, adicione um elemento <intent-filter> ao AndroidManifest.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> do AndroidManifest.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>
    
  3. Se você ainda não tiver um arquivo shortcuts.xml do diretório res/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 uma capability 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>
    
  4. 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 para Session.onCreateScreen() e Session.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.