Google Maps para intents do Android Automotive

Esse produto/recurso vai mudar e não está sujeito a nenhum contrato de nível de serviço (SLA) nem a políticas de descontinuação. A implementação está sujeita a mudanças em versões futuras.

Em relação a exemplos de software, arquivos de dados e/ou código-fonte que acompanham esta documentação: este produto é fornecido "no estado em que se encontra" e sem garantia de qualquer tipo, e o Google renuncia expressamente a todas as garantias, sejam explícitas, implícitas, estatutárias ou de outro tipo, incluindo, sem limitação, garantias de comercialidade, adequação a uma finalidade específica e não violação de quaisquer direitos relacionados a este produto.


Com as intents do Android Automotive, você pode iniciar a navegação no Google Maps.

Para mais informações, consulte Intents do Google Maps para Android.

Para mais informações sobre como levar seu app para veículos com o Android Auto ou o Android Automotive OS, consulte Android para carros.

Visão geral

Esta página descreve as intents que podem ser usadas com o Google Maps para Android Automotivo. Para conferir a documentação detalhada para desenvolvedores do Android, leia:

Solicitações de intent

Para iniciar o Google Maps para Android Automotive com uma intent, primeiro é necessário criar um objeto Intent, especificando a ação, o URI e o pacote.

  • Ação. Todas as intents do Google Maps são chamadas como uma ação de visualização, ACTION_VIEW.

  • URI. As intents do Google Maps usam strings codificadas em URI que especificam uma ação desejada, junto com alguns dados para realizar a ação.

  • Pacote. A chamada de setPackage("com.google.android.apps.maps") garante que o app Google Maps para Android processe a intent. Se o pacote não estiver definido, o sistema vai determinar quais apps podem processar a intent. Se vários apps estiverem disponíveis, talvez seja necessário escolher qual deles você quer usar.

Depois de criar a intent, você pode solicitar que o sistema inicie o app relacionado de várias maneiras. Um método comum é transmitir a intent para o método startActivity(). O sistema vai iniciar o app necessário, neste caso, o Google Maps, e iniciar a atividade correspondente.

// Create a Uri from an intent string. Use the result to create an Intent.
Uri mapIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
// Create an Intent from mapIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);

Se o sistema não conseguir identificar um app que possa responder à intent, o app poderá falhar. Por isso, primeiro verifique se um aplicativo receptor está instalado antes de apresentar uma dessas intents a um usuário.

Para verificar se um app está disponível para receber a intent, chame resolveActivity() no objeto Intent. Se o resultado não for nulo, haverá pelo menos um app que pode processar a intent, e será seguro chamar startActivity(). Se o resultado for nulo, não use a intent e, se possível, desative o recurso que invoca a intent.

if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}

Por exemplo, para iniciar a navegação passo a passo até o Taronga Zoo em Sydney, use o seguinte código:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}

Strings de consulta codificadas por URI

É necessário codificar para URI todas as strings passadas para as intenções do Google Maps. Por exemplo, a string "1st & Pike, Seattle" precisa se tornar 1st%20%26%20Pike%2C%20Seattle. Os espaços na string podem ser codificados com %20 ou substituídos pelo sinal de adição (+).

Você pode usar o método android.net.Uri parse() para codificar suas strings. Por exemplo:

Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));

Iniciar a navegação guiada

Use essa intent para iniciar a navegação do Google Maps com instruções passo a passo para um ou vários endereços ou coordenadas especificados. As direções são sempre dadas a partir da localização atual do usuário.

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename

Parâmetros

Para iniciar a navegação, use place ou q com waypoints, que é opcional. Para marcar um ponto de passagem como uma estação de recarga, consulte Enviar um plano de viagem de veículo elétrico para o Google Maps.

  • q define o endpoint para pesquisas de navegação. Pode ser uma latitude/longitude ou um endereço formatado por consulta. Se for uma string de consulta que retorna mais de um resultado, o primeiro será selecionado.

  • place define o endpoint como casa ou trabalho. Especifique "home" para navegar até a casa do usuário e "work" para navegar até o local de trabalho dele.

  • avoid define os recursos que o trajeto precisa evitar. avoid é opcional e pode ser definido como um ou mais dos seguintes:

    • t para pedágios
    • h para rodovias
    • f para balsas
  • waypoints especifica um ou mais lugares intermediários para rotear direções até o destino final especificado por q. É possível especificar vários pontos de passagem usando o caractere de barra vertical (|) para separar lugares, por exemplo, Berlin,Germany|Paris,France. Você pode usar quantos pontos de passagem forem necessários. Os pontos de passagem serão adicionados ao trajeto na mesma ordem em que estão listados no URL. Cada ponto de passagem pode ser um endereço ou coordenadas de latitude/longitude separadas por vírgulas. Além disso, é possível ter endereços e coordenadas de latitude/longitude na mesma intent. As strings precisam ser codificadas por URL. Por isso, pontos de passagem como "Berlin,Germany|Paris,France" precisam ser convertidos em Berlin%2CGermany%7CParis%2CFrance.

Exemplos

Essa intent vai solicitar a navegação passo a passo para o Zoológico de Taronga, em Sydney, Austrália:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Se você preferir não pagar pedágios ou usar uma balsa, solicite um trajeto que tente evitar essas situações:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Ou, se preferir navegar até sua casa, use:

Uri mapIntentUri = Uri.parse("google.navigation:place=home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Para iniciar a navegação passo a passo para os três endereços a seguir, passe o Taronga Zoo como o destino final q e o Google Sydney e a Sydney Opera House como os pontos de passagem:

  1. Google Sydney

  2. Ópera de Sydney

  3. Zoológico de Taronga, Sydney, Austrália

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7CSydney+Opera+House");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Assim como em q, é possível representar qualquer um dos waypoints por uma latitude e longitude separadas por vírgula em vez de um endereço. Por exemplo, para iniciar a mesma navegação transmitindo a latitude e longitude da Sydney Opera House em vez do endereço:

Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7C-33.856159,151.215256");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Enviar um planejamento de viagem de veículo elétrico para o Google Maps

Use essa intent de navegação com vários destinos para especificar alguns destinos como paradas de recarga de veículos elétricos (VEs). Essa intent, que estende a intent de vários pontos de passagem, ajuda os motoristas a manter a carga da bateria do veículo elétrico suficiente para chegar aos destinos, sincronizando as informações de parada de recarga entre os apps de planejamento de viagens de VEs e o Google Maps.

Para paradas de recarga, as intenções de viagem:

  • Precisa conter nome e lat-long
  • Pode conter a saída de energia, para ser usada no cálculo do tempo de carregamento

O Google usa o nome da estação de recarga e a latitude/longitude para encontrar um lugar de estação de recarga correspondente e mostrar dados detalhados, como tipos de conector, totais, velocidades e disponibilidade em tempo real, formas de pagamento compatíveis e pontos de interesse (POI) do host. Por exemplo, direções para chegar a estacionamentos ao ar livre na parte final da navegação, horários de funcionamento, classificações. Para garantir que as estações de recarga correspondam bem aos dados do Google, use <brand name>, por exemplo, ChargePoint.

Parâmetros

Destino final

Para definir uma estação de recarga como destino final, use:

  • q: precisa conter o valor de latitude e longitude da estação de recarga.
  • q_type: 1 especifica que o destino final é uma estação de recarga.
  • q_name: o nome do destino final. Obrigatório se q_type for 1.
  • q_power_output_kw: um número duplo para a saída de energia da estação de recarga em quilowatts. Opcional.

Pontos de referência

Para os pontos de passagem, todos os parâmetros são matrizes paralelos de valores separados por |-, na mesma ordem que os pontos de passagem, sem incluir o destino final. Uma incompatibilidade no número de elementos em matrizes paralelas é tratada como uma intent com formato incorreto.

Para adicionar um ou mais pontos de passagem de estações de recarga, use os parâmetros a seguir, todos opcionais. Se um dos destinos for marcado como uma estação de recarga, o nome do ponto de passagem vai se tornar obrigatório para esse destino.

  • waypoints: lista de pontos de passagem, conforme descrito na intent de navegação guiada. Precisa ser um valor de latitude e longitude para pontos de passagem da estação de recarga.

  • waypoint_types: tipos por ponto de passagem especificados como um número. 0 é qualquer parada (valor padrão) e 1 é a estação de recarga.

  • waypoint_names: nomes de waypoints. Este campo é obrigatório para estações de recarga.

  • waypoint_power_outputs_kw: números duplos para a potência da estação de recarga em quilowatts. Para estações de carregamento, você pode especificar um valor de saída de energia de ponto de passagem, que é usado como substituto se a estação correspondente não for encontrada. Um slot vazio significa que nenhum valor foi fornecido.

Comportamento da experiência do usuário (UX)

Para intents de viagem com vários destinos, a tela de visão geral da rota é exibida, mas a navegação não é iniciada automaticamente.

Para uma intent formatada corretamente, o Google Maps vai apresentar uma tela de visão geral da rota para a viagem. A tela de visão geral do trajeto vai mostrar todos os pontos de passagem e o destino final da intent, com recomendações de carregamento, quando aplicável.

Para qualquer ponto de passagem ou destino final marcado como estação de recarga, o Google Maps vai procurar um lugar correspondente no banco de dados do Google.

Quando uma correspondência é encontrada, o Google Maps usa os dados do Google para mostrar a estação de recarga na interface do usuário (UI) e fornecer uma recomendação de recarga para a estação. Se a correspondência não for encontrada, os dados fornecidos na intent para uma estação de recarga (lat-long, nome e saída de energia) serão usados para mostrar essa estação na interface e fornecer uma recomendação de recarga nessa estação.

Exemplos

Navegar até um destino final usando várias estações de recarga

A intent a seguir navega até o destino final, Port Macquarie NSW, por duas estações de recarga, ChargePoint e Evie.

Destinos em ordem:

  1. Estação de recarga da ChargePoint (localização: -32.9599188,151.6240806, potência de saída: 6,6 kW)

  2. Estação de recarga Evie (localização: -31.9432539,152.4699808, potência: 350 kW)

  3. Port Macquarie, NSW

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806%7C-31.9432539%2C152.4699808"
            + "&waypoint_types=1%7C1"
            + "&waypoint_names=ChargePoint+Charging+Station%7CEvie+Charging+Station"
            + "&waypoint_power_outputs_kw=6.6%7C350");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Potência desconhecida

Se o valor de saída de energia for desconhecido, deixe o slot relevante de waypoint_power_outputs_kw vazio. Ou, se todos os slots estiverem vazios, não será necessário especificar o parâmetro waypoint_power_outputs_kw.

Destinos em ordem:

  1. Estação de recarga da ChargePoint (localização: -32.9599188,151.6240806, potência: desconhecida)

  2. Port Macquarie, NSW

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=Port+Macquarie+NSW"
            + "&waypoints=-32.9599188%2C151.6240806"
            + "&waypoint_types=1"
            + "&waypoint_names=ChargePoint+Charging+Station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Marcar o destino final como uma estação de recarga

Para marcar o destino final como uma estação de recarga, especifique os parâmetros q_type, q_name e q_power_output_kw.

Destinos em ordem:

  1. Zoológico de Taronga, Sydney, Austrália

  2. Estação de recarga da ChargePoint (localização: -32.9599188,151.6240806, potência: desconhecida)

  3. Estação de recarga Evie (localização: -31.9432539,152.4699808, potência: 350 kW)

Uri mapIntentUri =
    Uri.parse(
        "google.navigation:q=-31.9432539,152.4699808&q_type=1&q_name=Evie+Charging+Station&q_power_output_kw=350"
            + "&waypoints=Taronga+Zoo%2C+Sydney+Australia%7C-32.9599188%2C151.6240806"
            + "&waypoint_types=0%7C1"
            + "&waypoint_names=%7CChargePoint+Charging+Station"
            + "&waypoint_power_outputs_kw=%7C");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Intents de ação

As seguintes intents de ação com interfaces estão disponíveis:

Ação Descrição
geo.action:?act=mute Desativa todas as orientações por voz de navegação.
geo.action:?act=unmute Ativa o som das instruções por voz de navegação.
geo.action:?act=show_traffic Mostra as linhas de trânsito no mapa.
geo.action:?act=hide_traffic Oculta as linhas de trânsito no mapa.
geo.action:?act=show_satellite Mostra imagens de satélite no mapa.
geo.action:?act=hide_satellite Oculta as imagens de satélite no mapa.
geo.action:?act=query_next_turn O Google Maps informa a próxima curva (só funciona durante a navegação).
geo.action:?act=distance_to_next_turn O Google Maps informa a distância até a próxima curva (somente funciona durante a navegação).
geo.action:?act=time_to_next_turn O Google Maps informa o tempo até a próxima curva (funciona apenas durante a navegação).
geo.action:?act=distance_to_destination O Google Maps informa a distância até o destino (funciona apenas durante a navegação).
geo.action:?act=go_back O Google Maps volta para a tela anterior na interface.
geo.action:?act=query_current_road O Google Maps fala a via atual.
geo.action:?act=query_destination O Google Maps fala o destino.
geo.action:?act=apply_electric_vehicle_connector_filter Aplica o filtro de tipo de conector para resultados de pesquisa de estações de recarga de veículos elétricos.
geo.action:?act=remove_electric_vehicle_connector_filter Remove o filtro de tipo de conector para resultados de pesquisa de estações de recarga de veículos elétricos.
geo.action:?act=apply_electric_vehicle_payment_filter Aplica o filtro de pagamento aos resultados da pesquisa de estações de recarga de veículos elétricos.
geo.action:?act=remove_electric_vehicle_payment_filter Remove o filtro de pagamento dos resultados da pesquisa de estações de recarga de veículos elétricos.
geo.action:?act=apply_electric_vehicle_fast_charging_filter Aplica o filtro de carregamento rápido aos resultados da pesquisa de estações de recarga de veículos elétricos.
geo.action:?act=remove_electric_vehicle_fast_charging_filter O filtro de carregamento rápido foi removido dos resultados da pesquisa de eletropostos.
geo.action:?act=avoid_tolls Se o usuário estiver navegando, o Google Maps vai evitar rotas com pedágios. Isso pode resultar em um novo trajeto se a rota atual tiver pedágios.
geo.action:?act=allow_tolls Se o usuário estiver navegando, informa ao Google Maps que ele pode usar rotas com pedágios. Isso pode resultar em uma mudança de rota se permitir pedágios resultar em uma rota melhor disponível.
geo.action:?act=avoid_ferries Se o usuário estiver navegando, informa ao Google Maps para evitar rotas com balsas. Isso pode resultar em uma mudança de rota se a rota ativa atual tiver balsas.
geo.action:?act=allow_ferries Se o usuário estiver navegando, informa ao Google Maps que ele pode usar rotas com balsas. Isso pode resultar em um desvio se permitir que as balsas resultem em uma rota melhor disponível.
geo.action:?act=avoid_highways Se o usuário estiver navegando, informa ao Google Maps para evitar rotas com rodovias. Isso pode resultar em um desvio se a rota ativa atual tiver rodovias.
geo.action:?act=allow_highways Se o usuário estiver navegando, informa ao Google Maps para permitir rotas com rodovias. Isso pode resultar em um novo trajeto se permitir rodovias resultar em um trajeto melhor.
geo.action:?act=eta Se o usuário estiver navegando, o Google Maps vai informar o horário estimado de chegada ao destino (por exemplo, 9h15).
geo.action:?act=time_to_destination Se o usuário estiver navegando, o Google Maps vai informar o tempo estimado para chegar ao destino (por exemplo, 15 minutos).
geo.action:?act=exit_navigation Sai da navegação.
geo.action:?act=select_search_result&id=0 Se os resultados da pesquisa estiverem sendo mostrados na tela (veja abaixo), inicie a navegação para o nº com base no parâmetro de ID fornecido. O índice é baseado em 0. Ou seja, a intent acima vai selecionar o primeiro resultado na lista.

Resultados da pesquisa mostrados na tela