Exoneração de responsabilidade
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 qualquer e todas as garantias, sejam expressas, implícitas, estatutárias ou de outro tipo, incluindo, sem limitação, garantias de comercialização, adequação a uma finalidade específica e não violação de 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 intenções 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, a URI e o pacote.
Ação. Todas as intenções do Google Maps são chamadas como uma ação Visualizar,
ACTION_VIEW
.URI. As intenções do Google Maps usam strings codificadas na URI que especificam uma ação desejada, juntamente com alguns dados para a execução da ação.
Pacote. Chamar
setPackage("com.google.android.apps.maps")
garante que o app do 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, você poderá ser consultado sobre qual app gostaria de 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 pode falhar. Por isso, verifique antes se um aplicativo receptor está instalado antes de apresentar uma dessas intenções ao 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,
há 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 a invoca.
if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}
Por exemplo, para iniciar a navegação curva a curva 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 na 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 ser 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 as 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 rotas curva a curva para um ou vários endereços ou coordenadas especificados. As rotas são sempre fornecidas 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 ponto final para as pesquisas de navegação. Pode ser uma latitude/longitude ou um endereço formatado para consulta. Se for uma string de consulta que retorna mais de um resultado, o primeiro resultado 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 do usuário.avoid
define os recursos que a rota deve tentar evitar.avoid
é opcional e pode ser definido para um ou mais destes:t
para pedágiosh
para rodoviasf
para balsas
waypoints
especifica um ou mais lugares intermediários para fornecer orientações de rota até o destino final especificado porq
. É possível especificar vários pontos de referência 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 à rota na mesma ordem em que estão listados no URL. Cada ponto de referência pode ser um endereço ou coordenadas de latitude/longitude separadas por vírgula. Além disso, é possível ter endereços e coordenadas de latitude/longitude na mesma intent. As strings precisam ter escape de URL, portanto, pontos de referência como "Berlin,Germany|Paris,France" precisam ser convertidos emBerlin%2CGermany%7CParis%2CFrance
.
Exemplos
Essa intent vai solicitar a navegação curva a curva até o Taronga Zoo, em Sidnei, 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 pegar balsas, é possível solicitar uma rota que tente evitar estas 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 até os três endereços a seguir,
transmita o Taronga Zoo como o destino final q
e o Google Sydney e a Sydney Opera House como os pontos de passagem:
Google Sydney
Ópera de Sydney
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 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 avançados, como tipos de conector, totais, velocidades e disponibilidade em tempo real, métodos de pagamento aceitos e pontos de interesse (POI) do host. Por exemplo, rotas de carro em estacionamentos externos para a parte final da navegação, horários de funcionamento, classificações. Para garantir que as estações de recarga correspondam 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 seq_type
for1
.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 inválido.
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 os 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) e1
é 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 uma 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 (IU) 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 potência) 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:
Estação de recarga da ChargePoint (localização: -32.9599188,151.6240806, potência de saída: 6,6 kW)
Estação de recarga Evie (localização: -31.9432539,152.4699808, potência: 350 kW)
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 de saída 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:
Estação de recarga da ChargePoint (localização: -32.9599188,151.6240806, potência: desconhecida)
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:
Zoológico de Taronga, Sydney, Austrália
Estação de recarga da ChargePoint (localização: -32.9599188,151.6240806, potência: desconhecida)
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);