Mapy Google na Androida Automotive

Wyłączenie odpowiedzialności

Ta usługa lub funkcja ulegnie zmianie i nie podlega żadnej umowie o gwarancji jakości usług (SLA) ani zasadom wycofywania. W kolejnych wersjach implementacja może ulec zmianie.

Jeśli chodzi o próbne oprogramowanie, pliki danych lub kod źródłowy, które towarzyszą tej dokumentacji: ten produkt jest dostarczany „w stanie takim, w jakim jest”, bez jakiejkolwiek gwarancji. Google wyraźnie wyklucza wszelkie gwarancje, wyraźne, dorozumiane, ustawowe lub inne, w tym między innymi gwarancje przydatności do określonego celu i nienaruszania praw osób trzecich.


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

Więcej informacji znajdziesz w artykule Intencja Map Google na Androida.

Więcej informacji o dostępności aplikacji w pojazdach z Androidem Auto lub systemem operacyjnym Android Automotive znajdziesz w artykule Android w samochodach.

Omówienie

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

Żądania dotyczące intencji

Aby uruchomić Mapy Google na Androidzie 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ą pożądane 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ą Aktywność.

// 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()] obiektu [Intent]. Jeśli wynik jest inny niż null, oznacza to, że istnieje co najmniej 1 aplikacja, która może obsłużyć ten zamiar, i można ją bezpiecznie wywołać.[startActivity()] Jeśli wynik jest pusty, nie używaj intencji i w miarę możliwości wyłącz funkcję, która ją wywołuje.

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 „1st & Pike, Seattle” powinien zostać zastąpiony przez 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"));

Uruchom nawigację 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 orientacyjny 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ć współrzędna szerokości i długości geograficznej lub adres w formacie zapytania. Jeśli jest to ciąg zapytania, który zwraca 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 dla 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, rozdzielając je znakiem pionowym (|), 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 tym samym zamiarze mogą występować zarówno adresy, jak i współrzędne szerokości i długości. Ciągi znaków powinny być zakodowane w sposób odpowiedni do adresów URL, dlatego punkty drogi 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, podaj Taronga Zoo jako miejsce docelowe q, a Google Sydney i Sydney Opera House jako punkty pośrednie:

  1. Google Sydney

  2. Sydney Opera House

  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 oddzielonych 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 tej intencji nawigacji z wieloma miejscami docelowymi, aby wskazywać niektóre miejsca docelowe jako przystanki do ładowania pojazdów elektrycznych (EV). 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, dzięki synchronizacji 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 współrzędne geograficzne.
  • Opcjonalnie może zawierać moc wyjściową, która służy do obliczania czasu ładowania.

Google używa nazwy stacji ładowania i długości geograficznej i szerokości geograficznej, aby znaleźć pasujące miejsce stacji ładowania i wyświetlić szczegółowe dane, takie jak typy złączy, łączna liczba, prędkości i dostępność w czasie rzeczywistym, obsługiwane formy płatności oraz punkty zainteresowania (POI). 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

Ostateczny cel podróży

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 oznaczają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 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 orientacyjnego staje się obowiązkowa.

  • 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 podane 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ć punkt orientacyjny z wartością mocy wyjściowej, 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 także rekomendacje dotyczące opłat.

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.

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 oraz moc wyjściowa) zostaną użyte do wyświetlenia tej stacji w interfejsie użytkownika i do przedstawienia rekomendacji dotyczącej ładowania na tej stacji.

Przykłady

Nawigacja do miejsca docelowego przez kilka stacji ładowania

Ten zamiar 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 wyjściowa: 6,6 kW)

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