Google Maps für Android Automotive Intents

Haftungsausschluss

Dieses Produkt oder diese Funktion ändert sich und unterliegt keinem Service Level Agreement (SLA) oder einer Richtlinie zur Einstellung von Produkten und Diensten. Die Implementierung kann sich in zukünftigen Versionen ändern.

In Bezug auf Beispielsoftware, Datendateien und/oder Quellcode, die dieser Dokumentation beigefügt sind, gilt: Dieses Produkt wird "wie besehen" und ohne Gewährleistung jeglicher Art bereitgestellt. Google lehnt ausdrücklich alle Gewährleistungen ab, unabhängig davon, ob sie ausdrücklich, stillschweigend, gesetzlich oder anderweitig, einschließlich, aber nicht beschränkt auf Gewährleistungen in Bezug auf Gebrauchstauglichkeit, Eignung für einen bestimmten Zweck und Verletzung jeglicher Rechte in Bezug auf dieses Produkt.


Über Android Automotive-Intents können Sie die Navigation in Google Maps starten.

Weitere Informationen finden Sie unter Google Maps Intents for Android.

Weitere Informationen zur Bereitstellung Ihrer App in Fahrzeugen mit Android Auto oder Android Automotive OS finden Sie unter Android für Autos.

Überblick

Auf dieser Seite werden die Intents beschrieben, die Sie mit Google Maps for Android Automotive verwenden können. Eine ausführliche Android-Entwicklerdokumentation finden Sie hier:

Intent-Anfragen

Um Google Maps for Android Automotive mit einem Intent zu starten, musst du zuerst ein Intent-Objekt erstellen und dessen Aktion, URI und Paket angeben.

  • Aktion: Alle Google Maps-Intents werden als Aufrufaktion ACTION_VIEW aufgerufen.

  • URI: Google Maps-Intents verwenden URI-codierte Strings, mit denen die gewünschte Aktion angegeben wird, sowie Daten, mit denen die Aktion ausgeführt werden soll.

  • Paket Durch das Aufrufen von setPackage("com.google.android.apps.maps") wird der Intent von der Google Maps App für Android verarbeitet. Wenn das Paket nicht festgelegt ist, bestimmt das System, welche Apps den Intent verarbeiten können. Wenn mehrere Apps verfügbar sind, werden Sie möglicherweise gefragt, welche App Sie verwenden möchten.

Nachdem Sie den Intent erstellt haben, können Sie auf verschiedene Weise anfordern, dass das System die zugehörige Anwendung startet. Eine gängige Methode besteht darin, den Intent an die Methode [startActivity()] zu übergeben. Das System startet die erforderliche App, in diesem Fall Google Maps, und startet die entsprechende Activity.

// 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);

Wenn das System keine App identifizieren kann, die auf den Intent reagieren kann, kann Ihre App abstürzen. Prüfen Sie daher zuerst, ob eine empfangende Anwendung installiert ist, bevor Sie einem Nutzer einen dieser Intents präsentieren.

Wenn Sie prüfen möchten, ob eine App für den Empfang des Intents verfügbar ist, rufen Sie [resolveActivity()] im Objekt [Intent] auf. Wenn das Ergebnis nicht „null“ ist, gibt es mindestens eine Anwendung, die den Intent verarbeiten kann, und Sie können [startActivity()] bedenkenlos aufrufen. Ist das Ergebnis null, sollten Sie den Intent nicht verwenden und nach Möglichkeit die Funktion deaktivieren, die den Intent aufruft.

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

Wenn Sie beispielsweise die detaillierte Routenführung für den Taronga Zoo in Sydney starten möchten, können Sie den folgenden Code verwenden:

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);
}

URI-codierte Abfragestrings

Alle Zeichenfolgen, die an die Google Maps-Intents weitergegeben werden, müssen URI-codiert werden. Der String „1st & Pike, Seattle“ sollte beispielsweise zu 1st%20%26%20Pike%2C%20Seattle werden. Leerzeichen im String können mit %20 codiert oder durch das Pluszeichen (+) ersetzt werden.

Mit der Methode android.net.Uri parse() können Sie Ihre Strings codieren. Beispiel:

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

Detaillierte Routenführung starten

Verwenden Sie diesen Intent, um die Google Maps-Navigation mit detaillierter Routenführung zu einer oder mehreren angegebenen Adressen oder Koordinaten zu starten. Wegbeschreibungen basieren immer auf dem aktuellen Standort der Nutzer.

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

Parameters

Verwenden Sie place oder q mit waypoints, um die Navigation zu starten. Dies ist optional. Wie Sie einen Wegpunkt als Ladestation markieren, erfahren Sie unter Fahrplan für ein Elektrofahrzeug an Google Maps senden.

  • q legt den Endpunkt für Navigationssuchen fest. Dies kann ein Breiten- und Längengrad oder eine Adresse im Abfrageformat sein. Wenn es ein Abfragestring ist, der mehr als ein Ergebnis zurückgibt, wird das erste Ergebnis ausgewählt.

  • place legt als Endpunkt „Zuhause“ oder „Arbeit“ fest. Geben Sie das Zuhause an, um zum Zuhause des Nutzers zu gelangen, und „Arbeit“, um zum Arbeitsplatz des Nutzers zu gelangen.

  • Mit avoid werden Features festgelegt, die auf der Route vermieden werden sollten. avoid ist optional und kann auf einen oder mehrere der folgenden Werte festgelegt werden:

    • t für Mautgebühren
    • h für Autobahnen
    • f für Fähren
  • waypoints gibt einen oder mehrere Zwischenorte für die Route zu dem in q festgelegten endgültigen Ziel an. Sie können mehrere Wegpunkte angeben, indem Sie die Stellen durch einen senkrechten Strich (|) trennen, z. B. Berlin,Germany|Paris,France. Sie können beliebig viele Wegpunkte verwenden. Die Wegpunkte werden der Route in derselben Reihenfolge hinzugefügt, in der sie in der URL aufgeführt sind. Jeder Wegpunkt kann entweder eine Adresse oder durch Kommas getrennte Breiten-/Längenkoordinaten sein. Im selben Intent können Sie auch Adressen und Längen- und Breitengrade angeben. Strings sollten URL-codiert sein. Wegpunkte wie "Berlin,Germany|Paris,France" sollten also in Berlin%2CGermany%7CParis%2CFrance umgewandelt werden.

Beispiele

Dieser Intent fordert eine detaillierte Routenführung zum Taronga Zoo in Sydney in Australien an:

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

Wenn Sie weder Mautgebühren zahlen noch eine Fähre nutzen möchten, können Sie eine Routenanfrage anfordern, bei der versucht wird, diese Situationen zu vermeiden:

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

Wenn Sie lieber zu Ihrem Zuhause navigieren möchten, verwenden Sie:

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

Wenn Sie die detaillierte Routenführung zu den folgenden drei Adressen in der richtigen Reihenfolge starten möchten, übergeben Sie den Taronga Zoo als endgültiges Ziel-q und das Google Sydney and Sydney Opera House als Wegpunkte:

  1. Google Sydney

  2. Sydney Opera House

  3. Taronga Zoo, Sydney, Australien

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

Ähnlich wie bei q können Sie jeden Wegpunkt durch einen kommagetrennten Wert für Breiten- und Längengrad anstelle einer Adresse darstellen. So können Sie beispielsweise dieselbe Navigation starten und dabei den Breitengrad/Längengrad für das Opernhaus von Sydney anstelle der Adresse übergeben:

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

Fahrtenplan für ein Elektrofahrzeug an Google Maps senden

Verwenden Sie diesen Navigations-Intent mit mehreren Zielen, um einige Ziele als Ladestopps für Elektrofahrzeuge anzugeben. Dieser Intent, der den Multi-Wegpunkt-Intent erweitert, trägt dazu bei, dass der Akku der Elektrofahrzeuge ausreichend geladen ist, um ihre Ziele zu erreichen. Dazu werden Informationen zu Ladestopps zwischen den Apps für die Reiseplanung für Elektrofahrzeuge und Google Maps synchronisiert.

Für Ladestopps gilt Folgendes:

  • Muss „name“ und „lat-long“ enthalten
  • Kann optional die Ausgangsleistung enthalten, damit die Ladezeit berechnet werden kann

Google verwendet den Namen und den Breitengrad der Ladestation, um einen passenden Ort für die Ladestation zu finden, um Rich-Daten wie Connector-Typen, Summen, Geschwindigkeiten und Echtzeit-Verfügbarkeit, unterstützte Zahlungsmethoden und Host-POIs (Points of Interest) anzuzeigen. Zum Beispiel Wegbeschreibungen auf Parkplätzen im Freien für den letzten Teil der Navigation, Öffnungszeiten und Bewertungen. Damit Ladestationen gut mit Google-Daten übereinstimmen, verwende <brand name>, z. B. ChargePoint.

Parameters

Zielbahnhof

So legen Sie eine Ladestation als endgültiges Ziel fest:

  • q: Muss den Breiten- und Längengrad der Ladestation enthalten.
  • q_type: 1 gibt an, dass das endgültige Ziel eine Ladestation ist.
  • q_name: Der Name des endgültigen Ziels. Erforderlich, wenn q_type 1 ist.
  • q_power_output_kw: Eine doppelte Zahl für die Ausgangsleistung der Ladestation in Kilowatts. Optional.

Wegpunkte

Bei Wegpunkten sind alle Parameter parallele, |-getrennte Arrays von Werten in der gleichen Reihenfolge wie Wegpunkte, ohne das endgültige Ziel. Eine Abweichung der Anzahl von Elementen in parallelen Arrays wird als fehlerhafter Intent behandelt.

Wenn Sie einen oder mehrere Wegpunkte für Ladestationen hinzufügen möchten, verwenden Sie die folgenden Parameter, die alle optional sind. Ist eines der Ziele als Ladestation gekennzeichnet, wird der Wegpunktname für dieses Ziel obligatorisch.

  • waypoints: Liste der Wegpunkte, wie im Intent für die detaillierte Routenführung beschrieben. Muss ein lat-long-Wert für Wegpunkte der Ladestation sein.

  • waypoint_types: Typen pro Wegpunkt, angegeben als Zahl. 0 ist eine beliebige Haltestelle (Standardwert) und 1 ist die Ladestation.

  • waypoint_names: Wegpunktnamen Dieses Feld ist für Ladestationen obligatorisch.

  • waypoint_power_outputs_kw: doppelte Zahlen für den Stromverbrauch der Ladestation in Kilowatts. Für Ladestationen können Sie optional einen Ausgangswert für Wegpunkte angeben, der als Fallback verwendet wird, wenn die entsprechende Station nicht gefunden wird. Ein leerer Slot bedeutet, dass kein Wert angegeben wurde.

User Experience (UX)

Bei Fahrtabsichten mit mehreren Zielen wird zwar die Routenübersicht angezeigt, die Navigation jedoch nicht automatisch gestartet.

Bei einem korrekt formatierten Intent wird in Google Maps eine Routenübersicht für die Fahrt angezeigt. Auf dem Bildschirm mit der Routenübersicht werden alle Wegpunkte und das endgültige Ziel des Intents angezeigt. Gegebenenfalls werden auch Ladeempfehlungen angezeigt.

Bei Wegpunkten oder Zielorten, die als Ladestation gekennzeichnet sind, sucht Google Maps in der Datenbank von Google nach einem übereinstimmenden Ort.

Wenn eine Übereinstimmung gefunden wird, verwendet Google Maps Google-Daten, um die Ladestation in der Benutzeroberfläche (UI) anzuzeigen und eine Ladeempfehlung für die Ladestation zu geben. Wenn keine Übereinstimmung gefunden wird, werden die im Intent für eine Ladestation angegebenen Daten (Breitenwert, Name und Ausgangsleistung) verwendet, um diese Ladestation in der Benutzeroberfläche anzuzeigen und eine Ladeempfehlung an dieser Ladestation zu bieten.

Beispiele

Route über mehrere Ladestationen zu deinem Zielort

Der folgende Intent navigiert über die beiden Ladestationen ChargePoint und Evie zum endgültigen Ziel, Port Macquarie NSW.

Reiseziele in dieser Reihenfolge:

  1. ChargePoint-Ladestation (Standort: -32.9599188,151.6240806, Ausgangsleistung: 6,6 kW)

  2. Evie-Ladestation (Standort: -31.9432539,152.4699808, Ausgangsleistung: 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);

Unbekannte Ausgangsleistung

Wenn der Wert für die Ausgangsleistung unbekannt ist, lassen Sie den entsprechenden Slot von waypoint_power_outputs_kw leer. Wenn alle Slots leer sind, muss der Parameter waypoint_power_outputs_kw nicht angegeben werden.

Reiseziele in dieser Reihenfolge:

  1. ChargePoint-Ladestation (Standort: -32.9599188,151.6240806, Ausgangsleistung: unbekannt)

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

Ziel als Ladestation markieren

Wenn du das endgültige Ziel als Ladestation markieren möchtest, musst du die Parameter q_type, q_name und q_power_output_kw angeben.

Reiseziele in dieser Reihenfolge:

  1. Taronga Zoo, Sydney, Australien

  2. ChargePoint-Ladestation (Standort: -32.9599188,151.6240806, Ausgangsleistung: unbekannt)

  3. Evie-Ladestation (Standort: -31.9432539,152.4699808, Ausgangsleistung: 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);