Google Maps pour Android Automotive Intents

Clause de non-responsabilité

Ce produit/cette fonctionnalité va changer et n'est soumis à aucun contrat de niveau de service ni à aucun règlement d'obsolescence. L'implémentation est susceptible d'évoluer dans les prochaines versions.

Concernant les exemples de logiciels, les fichiers de données et/ou le code source qui accompagnent cette documentation: ce produit est fourni "tel quel" et sans garantie d'aucune sorte. Google décline expressément toute garantie, qu'elle soit expresse, implicite, légale ou autre, y compris, sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon de tout droit lié à ce produit.


Grâce aux intents Android Automotive, vous pouvez lancer la navigation dans Google Maps.

Pour en savoir plus, consultez Intents Google Maps pour Android.

Pour en savoir plus sur la diffusion de votre application sur les véhicules équipés d'Android Auto ou d'Android Automotive OS, consultez Android pour voitures.

Présentation

Cette page décrit les intents que vous pouvez utiliser avec Google Maps pour Android Automotive. Pour en savoir plus sur la documentation destinée aux développeurs Android, consultez les ressources 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 souhaitée, 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 l'activité correspondante.

// 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 réceptrice 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'invoque.

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 en URI

Toutes les chaînes transmises aux intentions Google Maps doivent être encodées sous forme d'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 (facultatif), consultez Envoyer un itinéraire pour véhicule électrique à Google Maps.

  • q définit le point d'arrivée des recherches de navigation. Il peut s'agir d'une latitude/longitude ou d'une adresse au format de requête. Si la chaîne de requête renvoie plusieurs résultats, le premier est sélectionné.

  • place définit le point de terminaison sur "domicile" ou "travail". Spécifiez "Home" (Maison) pour accéder au domicile de l'utilisateur et "Work" (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éages
    • h pour les autoroutes
    • f pour les ferries
  • waypoints spécifie un ou plusieurs lieux intermédiaires pour calculer l'itinéraire vers la destination finale spécifiée par q. 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 au parcours dans l'ordre dans lequel ils sont listés dans l'URL. Chaque point de repère peut être une adresse ou des coordonnées de latitude/longitude séparées par une virgule. Vous pouvez également inclure des adresses et des coordonnées de latitude/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 en Berlin%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:

  1. Google Sydney

  2. Opéra de Sydney

  3. 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 planifié pour un 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 en VE et Google Maps.

Pour les arrêts-recharge, les intents de trajet:

  • Doit contenir un nom et des coordonnées géographiques
  • Peut éventuellement contenir la puissance de sortie, à utiliser pour calculer le temps de charge

Google utilise le nom et les coordonnées de la borne de recharge pour trouver un lieu correspondant et afficher des données détaillées 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

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 de q_type est 1.
  • q_power_output_kw: nombre double correspondant à la puissance de sortie de la borne de recharge en kilowatts. Facultatif.

Repères

Pour les points de cheminement, tous les paramètres sont des tableaux parallèles de valeurs séparés par un signe | 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 incorrect.

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) et 1 à 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.

En cas de correspondance, 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. 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

Accéder à une destination finale via 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:

  1. Borne de recharge ChargePoint (emplacement: -32.9599188,151.6240806, puissance de sortie: 6,6 kW)

  2. Borne de recharge Evie (coordonnées: -31.9432539,152.4699808, puissance de sortie : 350 kW)

  3. 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 électrique 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:

  1. Borne de recharge ChargePoint (emplacement: -32.9599188,151.6240806, puissance: inconnue)

  2. 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:

  1. Zoo de Taronga, Sydney (Australie)

  2. Borne de recharge ChargePoint (emplacement: -32.9599188,151.6240806, puissance: inconnue)

  3. 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);