Mapy Google na Androida Automotive

Za pomocą intencji Androida Automotive możesz uruchomić nawigację w Mapach Google.

Omówienie

Na tej stronie opisano intencje, których możesz używać w Mapach Google na Androida w Automotive. Szczegółowe informacje znajdziesz w tej dokumentacji dla deweloperów aplikacji na Androida:

Żądania dotyczące intencji

Aby uruchomić Mapy Google na Androida Automotive za pomocą intencji, musisz najpierw utworzyć obiekt Intent, określając jego działanie, identyfikator URI i pakiet.

  • Działanie. Wszystkie intencje Map Google są wywoływane jako działanie wyświetlania.ACTION_VIEW

  • Identyfikator URI. Intencje Map Google używają ciągów z kodowanym identyfikatorem URI, które określają wybrane działanie wraz z niektórymi danymi potrzebnymi do jego wykonania.

  • Pakiet. Wywołanie setPackage("com.google.android.apps.maps") zapewnia, że aplikacja Mapy Google na Androida obsłuży ten zamiar. Jeśli pakiet nie jest ustawiony, system określa, które aplikacje mogą obsługiwać intencję. Jeśli dostępnych jest kilka aplikacji, może pojawić się pytanie, której z nich chcesz użyć.

Po utworzeniu intencji możesz poprosić system o uruchomienie odpowiedniej aplikacji na kilka sposobów. Typową metodą jest przekazanie intencji do metody startActivity(). System uruchomi niezbędną aplikację, w tym przypadku Mapy Google, i odpowiednią 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);

Jeśli system nie może zidentyfikować aplikacji, która może odpowiedzieć na intencję, aplikacja może się zawiesić. Dlatego zanim przedstawisz użytkownikowi jeden z tych intencji, najpierw sprawdź, czy aplikacja odbiorcza jest zainstalowana.

Aby sprawdzić, czy aplikacja może odebrać intencję, wywołaj funkcję resolveActivity() w obiekcie Intent. Jeśli wynik jest niezerowany, istnieje co najmniej 1 aplikacja, która może obsłużyć intencję, i można bezpiecznie wywołać funkcję startActivity(). Jeśli wynik jest pusty, nie używaj intencji i w miarę możliwości wyłącz funkcję, która wywołuje intencję.

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

Aby na przykład uruchomić nawigację krok po kroku do Taronga Zoo w Sydney, możesz użyć tego kodu:

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

Ciągi zapytań zakodowane w identyfikatorze URI

Wszystkie ciągi przekazywane do Map Google Intents muszą być zakodowane w formacie URI. Na przykład ciąg znaków „1st & Pike, Seattle” powinien zostać zamieniony na 1st%20%26%20Pike%2C%20Seattle. Spacje w ciągu można zakodować za pomocą znaku %20 lub zastąpić znakiem plusa .

Do kodowania ciągów znaków możesz użyć metody android.net.Uri parse(). Przykład:

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

Uruchomienie nawigacji zakręt po zakręcie

Użyj tego zamiaru, aby uruchomić nawigację w Mapach Google z szczegółowymi wskazówkami do jednego lub kilku adresów lub współrzędnych. Trasy są zawsze obliczane na podstawie bieżącej lokalizacji użytkownika.

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

Parametry

Aby uruchomić nawigację, użyj place lub qwaypoints (opcjonalnie). Aby opcjonalnie oznaczyć punkt drogi jako stację ładowania, przeczytaj artykuł Wysyłanie planu podróży pojazdem elektrycznym do Map Google.

  • q ustawia punkt końcowy dla wyszukiwań nawigacyjnych. Może to być szerokość i długość geograficzna lub adres w formacie zapytania. Jeśli jest to ciąg zapytania zwracający więcej niż 1 wynik, zostanie wybrany pierwszy wynik.

  • place ustawia punkt końcowy na dom lub pracę. Określ „dom”, aby przejść do domu użytkownika, i „praca”, aby przejść do miejsca pracy użytkownika.

  • avoid określa cechy, których trasa powinna unikać. avoid jest opcjonalny i może być ustawiony na jedną z tych wartości:

    • t za opłaty drogowe
    • h na autostradach
    • f promów
  • waypoints określa co najmniej 1 miejsce pośrednie na trasie do miejsca docelowego określonego przez q. Możesz określić wiele punktów pośrednich, używając znaku kreski pionowej (|) do rozdzielania miejsc, na przykład Berlin,Germany|Paris,France. Możesz użyć dowolnej liczby punktów pośrednich. Punkty pośrednie zostaną dodane do trasy w tej samej kolejności, w jakiej są wymienione w adresie URL. Każdy punkt kontrolny może być adresem lub współrzędnymi szerokości i długości geograficznej rozdzielonymi przecinkami. W ramach tego samego zamiaru możesz podać adresy i współrzędne szerokości i długości geograficznej. Ciągi tekstowe powinny być otagowane zgodnie z formatem adresu URL, dlatego punkty pośrednie takie jak „Berlin,Niemcy|Paryż,Francja” powinny zostać przekonwertowane na Berlin%2CGermany%7CParis%2CFrance.

Przykłady

Ten zamiar będzie prosił o szczegółową nawigację do Taronga Zoo w Sydney w Australii:

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

Jeśli nie chcesz płacić za przejazd przez bramki lub nie chcesz korzystać z promu, możesz poprosić o wyznaczenie trasy, która będzie unikać takich sytuacji:

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

Jeśli wolisz nawigację do domu, użyj:

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

Aby uruchomić nawigację krok po kroku do 3 adresów w kolejności: Taronga Zoo jako miejsca docelowegoq oraz Google Sydney i Sydney Opera House jako punktów pośrednich:

  1. Google Sydney

  2. Opera w Sydney

  3. Taronga Zoo, Sydney, Australia

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

Podobnie jak w przypadku q, możesz reprezentować dowolny punkt pośredni za pomocą szerokości i długości geograficznej rozdzielanych przecinkami zamiast adresu. Aby na przykład uruchomić tę samą nawigację, podając współrzędne geograficzne opery w Sydney zamiast adresu:

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

Wysyłanie planu podróży pojazdem elektrycznym do Map Google

Używaj tego zamiaru nawigacji z wieloma miejscami docelowymi, aby wskazywać niektóre miejsca docelowe jako przystanki do ładowania pojazdów elektrycznych. Ta intencja, która rozszerza intencję z wieloma punktami, pomaga kierowcom utrzymać wystarczającą ilość energii w bateriach pojazdów elektrycznych, aby dotrzeć do celu podróży, poprzez synchronizację informacji o postojach na ładowanie między aplikacjami do planowania podróży EV a Mapami Google.

W przypadku postojów na ładowanie:

  • Musi zawierać nazwę i dane geograficzne w formacie szerokość-długość.
  • Opcjonalnie może zawierać moc wyjściową, która służy do obliczania czasu ładowania.

Google używa nazwy stacji ładowania i współrzędnych geograficznych, aby znaleźć pasujące miejsce stacji ładowania i wyświetlić szczegółowe dane, takie jak typy złączy, łączne dane, prędkości i dostępność w czasie rzeczywistym, obsługiwane formy płatności i miejsca odbiorców. Na przykład wskazówki dojazdu do parkingu na zewnątrz na ostatnim etapie nawigacji, godziny otwarcia, oceny. Aby zapewnić dokładne dopasowanie stacji ładowania do danych Google, użyj <brand name>, na przykład ChargePoint.

Parametry

Parametry te umożliwiają określenie szczegółów miejsca docelowego oraz dowolnych punktów pośrednich, w tym tych oznaczonych jako stacje ładowania EV.

Ostateczne miejsce docelowe

Aby ustawić stację ładowania jako miejsce docelowe:

  • q: musi zawierać współrzędne geograficzne stacji ładowania.
  • q_type: 1 określa, że miejsce docelowe to stacja ładowania.
  • q_name: nazwa miejsca docelowego. Wymagany, jeśli q_type to 1.
  • q_power_output_kw: podwójna liczba określająca moc wyjściową stacji ładowania w kilowatach. Opcjonalnie:

Punkty pośrednie

W przypadku punktów pośrednich wszystkie parametry są równoległe, rozdzielone znakiem | tablice wartości w tej samej kolejności co punkty pośrednie, bez uwzględnienia miejsca docelowego. Niezgodność liczby elementów w równoległych tablicach jest traktowana jako źle sformułowana intencja.

Aby dodać co najmniej 1 punkt pośredni stacji ładowania, użyj tych parametrów, z których wszystkie są opcjonalne. Jeśli jedno z miejsc docelowych jest oznaczone jako stacja ładowania, nazwa punktu kontrolnego staje się obowiązkowa dla tego miejsca docelowego.

  • waypoints: lista punktów pośrednich zgodnie z intencją szczegółowej nawigacji. W przypadku punktów pośrednich stacji ładowania musi to być wartość lat-long.

  • waypoint_types: typy punktów drogi określone jako liczby. 0 to dowolny przystanek (wartość domyślna), a 1 to stacja ładowania.

  • waypoint_names: nazwy punktów na trasie. To pole jest wymagane w przypadku stacji ładowania.

  • waypoint_power_outputs_kw: podwójne wartości mocy stacji ładowania w kilowatach. W przypadku stacji ładowania możesz opcjonalnie określić wartość mocy wyjściowej punktu orientacyjnego, która jest używana jako wartość zastępcza, jeśli nie można znaleźć pasującej stacji. Pusty slot oznacza, że nie podano żadnej wartości.

Wrażenia użytkownika (UX)

W przypadku intencji podróży z większą liczbą miejsc docelowych wyświetla się ekran podglądu trasy, ale nawigacja nie uruchamia się automatycznie.

W przypadku prawidłowo sformatowanego zamiaru Mapy Google wyświetlą ekran z przebiegiem trasy. Na ekranie podglądu trasy wyświetlane są wszystkie punkty pośrednie i miejsce docelowe z intencji, a w stosownych przypadkach – rekomendacje dotyczące ładowania.

W przypadku punktów pośrednich lub miejsca docelowego oznaczonego jako stacja ładowania Mapy Google będą wyszukiwać pasujące miejsce w bazie danych Google. Aby zapewnić jak najlepsze wyświetlanie informacji o stacji ładowania:

  • Jeśli zostanie znalezione dopasowanie, Mapy Google wyświetlą stację ładowania w interfejsie użytkownika (UI) i zaproponują jej użycie.

  • Jeśli nie uda się znaleźć dopasowania, dane podane w intencji dotyczącej stacji ładowania (szerokość i długość geograficzna, nazwa i moc wyjściowa) są używane do wyświetlania tej stacji w interfejsie użytkownika i do udzielania rekomendacji dotyczących ładowania na tej stacji.

Przykłady

Poniższe przykłady pokazują, jak tworzyć intencje w różnych scenariuszach planowania podróży pojazdem elektrycznym, w tym nawigacji z użyciem wielu stacji ładowania i obsługi nieznanych mocy wyjściowych.

Nawigacja do miejsca docelowego z uwzględnieniem kilku stacji ładowania

Następująca intencja prowadzi do miejsca docelowego, Port Macquarie NSW, przez 2 stacje ładowania: ChargePoint i Evie.

Miejsca docelowe w kolejności:

  1. Stacja ładowania ChargePoint (lokalizacja: -32.9599188,151.6240806, moc: 6,6 kW)

  2. Stacja ładowania Evie (lokalizacja: -31.9432539,152.4699808, moc: 350 kW)

  3. Port Macquarie, Nowa Południowa Walia

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

Nieznana moc wyjściowa

Jeśli wartość mocy wyjściowej jest nieznana, pozostaw odpowiednie pole waypoint_power_outputs_kw puste. Jeśli wszystkie sloty są puste, nie musisz podawać parametru waypoint_power_outputs_kw.

Miejsca docelowe w kolejności:

  1. Stacja ładowania ChargePoint (lokalizacja: -32.9599188,151.6240806, moc wyjściowa: nieznana)

  2. Port Macquarie, Nowa Południowa Walia

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

Oznaczanie miejsca docelowego jako stacji ładowania

Aby oznaczyć miejsce docelowe jako stację ładowania, określ parametry q_type, q_nameq_power_output_kw.

Miejsca docelowe w kolejności:

  1. Taronga Zoo, Sydney, Australia

  2. Stacja ładowania ChargePoint (lokalizacja: -32.9599188,151.6240806, moc wyjściowa: nieznana)

  3. Stacja ładowania Evie (lokalizacja: -31.9432539,152.4699808, moc wyjściowa: 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);

Intencje działań

Dostępne są te intencje działań z interfejsami:

Działanie Opis
geo.action:?act=mute Wyciszanie wszystkich wskazówek głosowych nawigacji.
geo.action:?act=unmute Włącza wskazówki głosowe nawigacji.
geo.action:?act=show_traffic Wyświetla na mapie linie natężenia ruchu.
geo.action:?act=hide_traffic Ukrywa linie natężenia ruchu na mapie.
geo.action:?act=show_satellite Wyświetla zdjęcia satelitarne na mapie.
geo.action:?act=hide_satellite Ukrywa zdjęcia satelitarne na mapie.
geo.action:?act=show_alternates Mapy Google otwierają ekran z trasami alternatywnymi (działa tylko podczas nawigacji).
geo.action:?act=query_next_turn Mapy Google mówią, co będzie na następnym skrzyżowaniu (działa tylko podczas nawigacji).
geo.action:?act=distance_to_next_turn Mapy Google mówią, jak daleko jest do następnego skrętu (działa tylko podczas nawigacji).
geo.action:?act=time_to_next_turn Mapy Google mówią, kiedy nastąpi następny skręt (działa tylko podczas nawigacji).
geo.action:?act=distance_to_destination Mapy Google mówią, jaka jest odległość do miejsca docelowego (działa to tylko podczas nawigacji).
geo.action:?act=go_back Mapy Google wracają do poprzedniego ekranu w interfejsie.
geo.action:?act=query_current_road Mapy Google mówią, jaką drogą się jedzie.
geo.action:?act=query_destination Mapy Google wypowiadają nazwę miejsca docelowego.
geo.action:?act=traffic_report Mapy Google odczytają raport o ruchu drogowym.
geo.action:?act=clear_search_results Mapy Google zamykają ekran wyników wyszukiwania (jeśli jest otwarty).
geo.action:?act=apply_electric_vehicle_connector_filter Stosuje filtr typu wtyczki do wyników wyszukiwania stacji ładowania pojazdów elektrycznych.
geo.action:?act=remove_electric_vehicle_connector_filter Usuwa filtr typu wtyczki w wynikach wyszukiwania stacji ładowania pojazdów elektrycznych.
geo.action:?act=apply_electric_vehicle_payment_filter Stosuje filtr płatności do wyników wyszukiwania stacji ładowania pojazdów elektrycznych.
geo.action:?act=remove_electric_vehicle_payment_filter Usuwa filtr płatności z wyników wyszukiwania stacji ładowania pojazdów elektrycznych.
geo.action:?act=apply_electric_vehicle_fast_charging_filter Stosuje filtr szybkiego ładowania w wynikach wyszukiwania stacji ładowania pojazdów elektrycznych.
geo.action:?act=remove_electric_vehicle_fast_charging_filter Usuwa filtr szybkiego ładowania w wynikach wyszukiwania stacji ładowania pojazdów elektrycznych.
geo.action:?act=avoid_tolls Jeśli użytkownik korzysta z nawigacji, informuje Mapy Google, aby unikały tras z opłatami drogowymi. Może to spowodować zmianę trasy, jeśli obecna trasa zawiera odcinki płatne.
geo.action:?act=allow_tolls Jeśli użytkownik korzysta z nawigacji, informuje Mapy Google, aby zezwoliły na trasy z opłatami drogowymi. Może to spowodować zmianę trasy, jeśli zezwolenie na opłaty drogowe spowoduje, że będzie dostępna lepsza trasa.
geo.action:?act=avoid_ferries Jeśli użytkownik korzysta z nawigacji, informuje Mapy Google, aby omijały trasy z promami. Może to spowodować zmianę trasy, jeśli obecna aktywna trasa zawiera promy.
geo.action:?act=allow_ferries Jeśli użytkownik nawiguje, informuje Mapy Google, aby zezwalały na trasy z promami. Może to spowodować zmianę trasy, jeśli uwzględnienie promów spowoduje, że dostępna będzie lepsza trasa.
geo.action:?act=avoid_highways Jeśli użytkownik korzysta z nawigacji, informuje Mapy Google, aby unikały tras z autostradami. Może to spowodować zmianę trasy, jeśli bieżąca aktywna trasa zawiera autostrady.
geo.action:?act=allow_highways Jeśli użytkownik korzysta z nawigacji, informuje Mapy Google, aby zezwalały na trasy z autostradami. Może to spowodować zmianę trasy, jeśli zezwolenie na korzystanie z autostrad spowoduje, że dostępna będzie lepsza trasa.
geo.action:?act=eta Jeśli użytkownik korzysta z nawigacji, Mapy Google mówią szacowany czas dotarcia do miejsca docelowego (np. 9:15).
geo.action:?act=time_to_destination Jeśli użytkownik korzysta z nawigacji, Mapy Google mówią, ile czasu zajmie dotarcie do celu (np. 15 minut).
geo.action:?act=exit_navigation Zakończ nawigację.
geo.action:?act=select_search_result&id=0 Jeśli na ekranie wyświetlają się wyniki wyszukiwania (jak na załączonym obrazie), rozpoczyna się nawigacja do n poziomu na podstawie podanego parametru identyfikatora. Zwróć uwagę, że indeks jest oparty na 0 (czyli geo.action:?act=select_search_result&id=0 wybierze pierwszy wynik na liście).

Wyniki wyszukiwania wyświetlane na ekranie