Grâce aux intents Android Automotive, vous pouvez lancer la navigation dans Google Maps.
Présentation
Cette page décrit les intents que vous pouvez utiliser avec Google Maps pour Android Automotive. Pour obtenir une documentation détaillée pour les développeurs Android, consultez les pages suivantes:
Requêtes d'intent
Pour lancer Google Maps pour Android Automotive avec un intent, vous devez d'abord créer un objet Intent
, en spécifiant son action, son URI et son package.
Action. Tous les intents Google Maps sont appelés en tant qu'action de visionnage,
ACTION_VIEW
.URI Les intents Google Maps utilisent des chaînes encodées en URI qui spécifient une action choisie, ainsi que des données permettant de l'effectuer.
Package L'appel de
setPackage("com.google.android.apps.maps")
garantit que l'application Google Maps pour Android gère l'intent. Si le package n'est pas défini, le système détermine quelles applications peuvent gérer l'intent. Si plusieurs applications sont disponibles, vous serez peut-être invité à choisir celle que vous souhaitez utiliser.
Après avoir créé l'intent, vous pouvez demander au système de lancer l'application associée de plusieurs manières. Une méthode courante consiste à transmettre l'intent à la méthode startActivity()
. Le système lance l'application nécessaire, dans ce cas Google Maps, et démarre le Activity
correspondant.
// 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);
Si le système ne parvient pas à identifier une application pouvant répondre à l'intent, votre application risque de planter. Pour cette raison, vérifiez d'abord qu'une application destinataire est installée avant de présenter l'un de ces intents à un utilisateur.
Pour vérifier qu'une application est disponible pour recevoir l'intent, appelez resolveActivity()
sur votre objet Intent
. Si le résultat n'est pas nul, il existe au moins une application pouvant gérer l'intent, et vous pouvez appeler startActivity()
sans risque. Si le résultat est nul, vous ne devez pas utiliser l'intent et, si possible, désactiver la fonctionnalité qui l'appelle.
if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}
Par exemple, pour lancer la navigation détaillée vers le zoo Taronga à Sydney, vous pouvez utiliser le code suivant:
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);
}
Chaînes de requête encodées au format URI
Toutes les chaînes transmises aux intents Google Maps doivent être encodées en URI. Par exemple, la chaîne "1st & Pike, Seattle" doit devenir 1st%20%26%20Pike%2C%20Seattle
.
Les espaces de la chaîne peuvent être encodés avec %20
ou remplacés par le signe plus (+).
Vous pouvez utiliser la méthode android.net.Uri parse()
pour encoder vos chaînes. Exemple :
Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));
Lancer la navigation détaillée
Utilisez cet intent pour lancer la navigation Google Maps avec des instructions détaillées vers une ou plusieurs adresses ou coordonnées spécifiées. Les itinéraires sont toujours indiqués à partir de la position actuelle de l'utilisateur.
google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename
Paramètres
Pour lancer la navigation, utilisez place
ou q
avec waypoints
, qui est facultatif. Pour marquer un point de cheminement en tant que borne de recharge, consultez Envoyer un itinéraire pour véhicule électrique à Google Maps.
q
définit le point d'arrivée pour les recherches de navigation. Il peut s'agir de la latitude et de la longitude ou d'une adresse au format de requête. S'il s'agit d'une chaîne de requête qui renvoie plusieurs résultats, le premier résultat est sélectionné.place
définit le point de terminaison sur "domicile" ou "travail". Spécifiez "domicile" pour accéder au domicile de l'utilisateur et "travail" pour accéder à son lieu de travail.avoid
définit les éléments que l'itinéraire doit essayer d'éviter.avoid
est facultatif et peut être défini sur l'une ou plusieurs des valeurs suivantes:t
pour les péagesh
pour les autoroutesf
pour les ferries
waypoints
spécifie un ou plusieurs lieux intermédiaires pour calculer l'itinéraire vers la destination finale spécifiée parq
. Vous pouvez spécifier plusieurs points de cheminement en utilisant le caractère barre verticale (|
) pour séparer les lieux (par exemple,Berlin,Germany|Paris,France
). Vous pouvez utiliser autant de points de cheminement que nécessaire. Les points de cheminement sont ajoutés à l'itinéraire dans l'ordre dans lequel ils sont listés dans l'URL. Chaque point de cheminement peut être une adresse ou des coordonnées de latitude et de longitude séparées par une virgule. Vous pouvez également inclure des adresses et des coordonnées de latitude et de longitude dans le même intent. Les chaînes doivent être encodées en URL. Par conséquent, les points de cheminement tels que "Berlin,Allemagne|Paris,France" doivent être convertis enBerlin%2CGermany%7CParis%2CFrance
.
Exemples
Cet intent demande une navigation détaillée vers le zoo de Taronga, à Sydney, en Australie:
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);
Si vous préférez ne pas payer de péages ni prendre de ferry, vous pouvez demander un itinéraire qui tente d'éviter ces situations:
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);
Si vous préférez vous rendre chez vous, utilisez:
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);
Pour lancer la navigation détaillée vers les trois adresses suivantes dans l'ordre, indiquez le zoo de Taronga comme destination finale q
, et Google Sydney et l'opéra de Sydney comme points de cheminement:
Google Sydney
Opéra de Sydney
Zoo de Taronga, Sydney (Australie)
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);
Comme pour q
, vous pouvez représenter n'importe quel point de cheminement par une latitude et une longitude séparées par une virgule au lieu d'une adresse. Par exemple, pour lancer la même navigation en transmettant la latitude et la longitude de l'opéra de Sydney au lieu de l'adresse:
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);
Envoyer un trajet en véhicule électrique à Google Maps
Utilisez cet intent de navigation multidestination pour spécifier certaines destinations comme des arrêts de recharge de véhicules électriques. Cet intent, qui étend l'intent multipoint, aide les conducteurs à maintenir la batterie de leur véhicule électrique suffisamment chargée pour atteindre leur destination en synchronisant les informations sur les arrêts de recharge entre les applications de planification de trajets pour VE et Google Maps.
Pour les arrêts-recharge, les intents de trajet:
- Doit contenir un nom et des coordonnées géographiques (latitude et longitude)
- Peut éventuellement contenir la puissance de sortie, à utiliser pour calculer le temps de charge
Google utilise le nom et la latitude/longitude de la borne de recharge pour trouver un lieu correspondant et afficher des données enrichies telles que les types de connecteurs, les totaux, les vitesses et la disponibilité en temps réel, les modes de paiement acceptés et les points d'intérêt (POI) hôtes. Par exemple, itinéraires routiers dans les parkings extérieurs pour la dernière partie de la navigation, horaires d'ouverture, avis. Pour vous assurer que les bornes de recharge correspondent bien aux données Google, utilisez <brand name>
, par exemple ChargePoint
.
Paramètres
Les paramètres suivants vous permettent de spécifier des informations sur la destination finale et les éventuels points de cheminement, y compris ceux désignés comme bornes de recharge de VE.
Destination finale
Pour définir une borne de recharge comme destination finale, utilisez:
q
: doit contenir la valeur de latitude-longitude de la borne de recharge.q_type
:1
indique que la destination finale est une borne de recharge.q_name
: nom de la destination finale. Obligatoire si la valeur deq_type
est1
.q_power_output_kw
: double valeur de la puissance de sortie de la borne de recharge en kilowatts. Facultatif.
Points de cheminement
Pour les points de cheminement, tous les paramètres sont des tableaux parallèles de valeurs séparés par un |, dans le même ordre que les points de cheminement, sans inclure la destination finale. Un décalage dans le nombre d'éléments dans des tableaux parallèles est traité comme un intent mal formé.
Pour ajouter un ou plusieurs points de cheminement de borne de recharge, utilisez les paramètres suivants, qui sont tous facultatifs. Si l'une des destinations est marquée comme borne de recharge, le nom du point de cheminement devient obligatoire pour cette destination.
waypoints
: liste des points de cheminement, comme décrit dans l'intent de navigation détaillée. Doit être une valeur de latitude-longitude pour les points de repère de bornes de recharge.waypoint_types
: types par point de cheminement spécifiés sous la forme d'un nombre.0
correspond à n'importe quel arrêt (valeur par défaut) et1
à la borne de recharge.waypoint_names
: noms des repères. Ce champ est obligatoire pour les bornes de recharge.waypoint_power_outputs_kw
: nombres doubles pour la puissance de la borne de recharge en kilowatts. Pour les bornes de recharge, vous pouvez éventuellement spécifier une valeur de sortie d'énergie du point de cheminement, qui est utilisée comme solution de remplacement si la borne correspondante n'est pas trouvée. Un emplacement vide signifie qu'aucune valeur n'est fournie.
Comportement de l'expérience utilisateur (UX)
Pour les intents de trajet avec plusieurs destinations, l'écran d'aperçu de l'itinéraire s'affiche, mais la navigation ne démarre pas automatiquement.
Pour un intent correctement formaté, Google Maps affiche un écran d'aperçu de l'itinéraire pour le trajet. L'écran d'aperçu de l'itinéraire affiche tous les points de cheminement et la destination finale de l'intent, avec des recommandations de recharge le cas échéant.
Pour tous les points de cheminement ou la destination finale marqués comme borne de recharge, Google Maps recherche un lieu correspondant dans la base de données de Google. Pour vous assurer que les informations les plus complètes possibles sont affichées pour les bornes de recharge:
Si une correspondance est trouvée, Google Maps utilise les données Google pour afficher la borne de recharge dans l'interface utilisateur (UI) et fournir une recommandation de recharge pour la borne de recharge.
Si aucune correspondance n'est trouvée, les données fournies dans l'intent pour une borne de recharge (latitude-longitude, nom et puissance de sortie) sont utilisées pour afficher cette borne de recharge dans l'UI et fournir une recommandation de recharge à cette borne.
Exemples
Les exemples suivants montrent comment créer des intents pour différents scénarios de planification de trajets en VE, y compris la navigation via plusieurs bornes de recharge et la gestion des puissances de sortie inconnues.
Se rendre à une destination finale en passant par plusieurs bornes de recharge
L'intent suivant permet d'accéder à la destination finale, Port Macquarie (Nouvelle-Galles du Sud), via deux bornes de recharge, ChargePoint et Evie.
Destinations dans l'ordre:
Borne de recharge ChargePoint (emplacement: -32.9599188,151.6240806, puissance de sortie: 6,6 kW)
Borne de recharge Evie (emplacement: -31.9432539,152.4699808, puissance de sortie : 350 kW)
Port Macquarie (Nouvelle-Galles du Sud)
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);
Puissance de sortie inconnue
Si la valeur de la puissance de sortie est inconnue, laissez l'emplacement correspondant de waypoint_power_outputs_kw
vide. Si tous les emplacements sont vides, il n'est pas nécessaire de spécifier le paramètre waypoint_power_outputs_kw
.
Destinations dans l'ordre:
Borne de recharge ChargePoint (emplacement: -32.9599188,151.6240806, puissance: inconnue)
Port Macquarie (Nouvelle-Galles du Sud)
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);
Marquer la destination finale comme borne de recharge
Pour marquer la destination finale comme une borne de recharge, spécifiez les paramètres q_type
, q_name
et q_power_output_kw
.
Destinations dans l'ordre:
Zoo de Taronga, Sydney (Australie)
Borne de recharge ChargePoint (emplacement: -32.9599188,151.6240806, puissance: inconnue)
Borne de recharge Evie (coordonnées: -31.9432539,152.4699808, puissance: 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 d'action
Les intents d'action avec interfaces suivants sont disponibles:
Action | Description |
---|---|
geo.action:?act=mute |
Coupe le son de tous les guidages vocaux de navigation. |
geo.action:?act=unmute |
Active le guidage vocal de navigation. |
geo.action:?act=show_traffic |
Affiche les lignes de circulation sur la carte. |
geo.action:?act=hide_traffic |
Masque les lignes de trafic sur la carte. |
geo.action:?act=show_satellite |
Affiche des images satellite sur la carte. |
geo.action:?act=hide_satellite |
Masque les images satellite sur la carte. |
geo.action:?act=show_alternates |
Google Maps ouvre l'écran des itinéraires alternatifs (ne fonctionne que pendant la navigation). |
geo.action:?act=query_next_turn |
Google Maps indique le prochain virage (fonctionne uniquement pendant la navigation). |
geo.action:?act=distance_to_next_turn |
Google Maps indique la distance jusqu'au prochain virage (fonctionne uniquement en mode navigation). |
geo.action:?act=time_to_next_turn |
Google Maps indique le temps avant le prochain virage (fonctionne uniquement pendant la navigation). |
geo.action:?act=distance_to_destination |
Google Maps indique la distance jusqu'à la destination (fonctionne uniquement pendant la navigation). |
geo.action:?act=go_back |
Google Maps revient à l'écran précédent de l'interface utilisateur. |
geo.action:?act=query_current_road |
Google Maps indique la route empruntée. |
geo.action:?act=query_destination |
Google Maps prononce la destination. |
geo.action:?act=traffic_report |
Google Maps lit le rapport sur le trafic. |
geo.action:?act=clear_search_results |
Google Maps ferme l'écran des résultats de recherche (s'il est ouvert). |
geo.action:?act=apply_electric_vehicle_connector_filter |
Applique le filtre de type de connecteur aux résultats de recherche de bornes de recharge pour véhicules électriques. |
geo.action:?act=remove_electric_vehicle_connector_filter |
Supprime le filtre de type de connecteur pour les résultats de recherche de bornes de recharge pour véhicules électriques. |
geo.action:?act=apply_electric_vehicle_payment_filter |
Applique le filtre de paiement aux résultats de recherche de bornes de recharge pour véhicules électriques. |
geo.action:?act=remove_electric_vehicle_payment_filter |
Supprime le filtre de paiement pour les résultats de recherche de bornes de recharge de véhicules électriques. |
geo.action:?act=apply_electric_vehicle_fast_charging_filter |
Applique le filtre de recharge rapide aux résultats de recherche de bornes de recharge de véhicules électriques. |
geo.action:?act=remove_electric_vehicle_fast_charging_filter |
Supprime le filtre de recharge rapide pour les résultats de recherche de bornes de recharge de véhicules électriques. |
geo.action:?act=avoid_tolls |
Si l'utilisateur est en navigation, indique à Google Maps d'éviter les itinéraires avec péage. Cela peut entraîner un nouveau calcul d'itinéraire si le trajet actuel comporte des péages. |
geo.action:?act=allow_tolls |
Si l'utilisateur est en navigation, indique à Google Maps d'autoriser les itinéraires avec péage. Cela peut entraîner un nouveau calcul d'itinéraire si l'acceptation des péages permet de trouver un itinéraire plus adapté. |
geo.action:?act=avoid_ferries |
Si l'utilisateur est en navigation, indique à Google Maps d'éviter les itinéraires avec des ferries. Cela peut entraîner un nouveau calcul d'itinéraire si le trajet actif actuel comporte des ferries. |
geo.action:?act=allow_ferries |
Si l'utilisateur est en navigation, indique à Google Maps d'autoriser les itinéraires avec des ferries. Cela peut entraîner un nouvel itinéraire si l'autorisation des ferries permet de trouver un meilleur itinéraire. |
geo.action:?act=avoid_highways |
Si l'utilisateur est en navigation, indique à Google Maps d'éviter les itinéraires comportant des autoroutes. Cela peut entraîner un nouveau calcul d'itinéraire si l'itinéraire actif actuel comporte des autoroutes. |
geo.action:?act=allow_highways |
Si l'utilisateur est en train de naviguer, indique à Google Maps d'autoriser les itinéraires avec des autoroutes. Cela peut entraîner un nouvel itinéraire si l'autorisation des autoroutes permet de trouver un meilleur itinéraire. |
geo.action:?act=eta |
Si l'utilisateur est en navigation, Google Maps indique l'heure d'arrivée prévue à la destination (par exemple, 9h15). |
geo.action:?act=time_to_destination |
Si l'utilisateur est en navigation, Google Maps indique le temps estimé pour atteindre la destination (par exemple, 15 minutes). |
geo.action:?act=exit_navigation |
Quitte la navigation. |
geo.action:?act=select_search_result&id=0 |
Si les résultats de recherche s'affichent à l'écran (comme illustré dans l'image ci-jointe), la navigation vers le ne commence en fonction du paramètre d'ID fourni. Notez que l'index est basé sur 0 (c'est-à-dire que geo.action:?act=select_search_result&id=0 sélectionnera le premier résultat de la liste).
|