Implementowanie intencji aplikacji do nawigacji

Gemini i Asystent Google używają 3 różnych formatów intencji, które może obsługiwać Twoja aplikacja do nawigacji. Możesz zapewnić interoperacyjność i zintegrować aplikację z Gemini lub Asystentem Google, deklarując w pliku manifestu aplikacji filtry intencji opisane na tej stronie. Więcej informacji o intencjach znajdziesz w Intent.

Aplikacja nawigacyjna Gemini lub Asystenta Google Intent obsługuje te intencje:

  • Intencja nawigacyjna
  • Zamiar wyszukiwania
  • Zamiar działania niestandardowego

Przepływ danych o intencjach

Rysunek 1. Przepływ danych o intencjach.

Parametry w danych o zamiarze

Dane o zamiarach są zgodne z formatem URI zawierającym parametry oparte na przekazywanych zamiarach. Niektóre parametry są zawsze podawane w danych. Oznacza to, że zawsze mają one wyraźną wartość. Jednak parametry opcjonalne nie zawsze mają ustawioną wartość w danych. Więcej informacji znajdziesz w sekcji Testowanie danych.

Zamiary offline

Wszystkie intencje wymienione na tej stronie mają warianty offline. Możesz je odróżnić, dodając do schematu symbol .offline. Na przykład intencja nawigacji używa schematu geo.offline. Te filtry intencji w pliku manifestu oznaczają, że aplikacja obsługuje te działania w trybie offline.

Użyj intencji nawigacji, aby spełnić prośbę użytkownika o przejście do określonego miejsca docelowego. Może to być pojedyncza lokalizacja (adres) lub wiele lokalizacji (np. kawiarnie i stacje benzynowe). Dane o intencjach są zgodne z formatem URI określonym dla każdej intencji.

Format intencji

Klasa Intent używa tego formatu w przypadku intencji aplikacji do nawigacji:

Kategoria: android.intent.category.DEFAULT

Działanie:

  • Android Auto i system operacyjny Android Automotive: androidx.car.app.action.NAVIGATE
  • Inne formaty:android.intent.action.NAVIGATE

Schemat: geo

Przykłady:

  • geo:0,0?q=Googleplex
  • geo:0,0?q=1600+Amphitheatre+parkway&mode=b&intent=add_a_stop
  • geo:0,0?q=coffee+shop&mode=w&intent=navigation
  • geo:1.1,2.2?q=Starbucks+on+Main+Street&mode=w&intent=navigation

Sugerowane działanie aplikacji: rozpoczyna się nawigacja do określonej lokalizacji lub użytkownik jest proszony o wybór jednej z kilku opcji.

Filtry intencji w pliku manifestu

Zadeklaruj w pliku manifestu aplikacji ten format intencji, aby Gemini lub Asystent Google wiedział, że Twoja aplikacja do nawigacji może odbierać intencje nawigacyjne.

Wszystkie formaty z wyjątkiem Androida Auto i systemu operacyjnego Android Automotive:

<intent-filter>
  <action android:name="android.intent.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Android Auto i system operacyjny Android Automotive:

<intent-filter>
  <action android:name="androidx.car.app.action.NAVIGATE" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Podane parametry

Oczekuje się, że w dostarczonych danych intencji aplikacji do nawigacji będą dostępne te parametry.

Zapytanie o lokalizację lub współrzędne geograficzne

Każde zapytanie dotyczące intencji nawigacyjnych zawiera co najmniej jeden z tych parametrów, w zależności od rodzaju żądanych danych:

  • Zapytanie o lokalizację

    Odnosi się do lokalizacji, do której użytkownik próbuje wyznaczyć trasę. Użyj tych danych, aby określić miejsce docelowe użytkownika.

    Klucz parametru: q
    Wartość: miejsce docelowe, o które pyta użytkownik.

    Przykład: geo:0,0?q=Golden+Gate+Bridge
    Interpretacja: użytkownik chce przejść do mostu Golden Gate.

  • Współrzędne geograficzne (szerokość i długość geograficzna)

    Odwołuje się do konkretnych współrzędnych używanych przez użytkownika do nawigacji.

    Klucz parametru: geo:lat,long
    Wartość: współrzędne zapytania użytkownika.

    Przykład: geo:1.1,2.2?mode=w&intent=navigation
    Interpretacja: użytkownik chce przejść do współrzędnych (1.1, 2.2).

Parametry opcjonalne

Opcjonalne parametry podane w danych intencji aplikacji do nawigacji są opisane w tej sekcji.

Intencja

Określa intencję użytkownika. Jeśli ten parametr nie jest ustawiony, domyślny zamiar użytkownika jest traktowany jako navigation.

Klucz parametru: intent
Możliwe wartości:

  • navigation [wartość domyślna] – zastępuje miejsce docelowe i rozpoczyna nawigację. Używaj tego w przypadku zapytań takich jak nawiguj do x.
  • add_a_stop – dodaje przystanek jako następne miejsce docelowe wraz z poprzednimi miejscami docelowymi. Używaj tej opcji w przypadku zapytań takich jak dodaj przystanek w miejscu x.
  • directions – wyświetla wskazówki dojazdu bez rozpoczynania nawigacji. Użyj tego w przypadku zapytań takich jak wskazówki dojazdu do x.

Przykład: geo:47.61594547836694,-122.20373173098756?q=575+Bellevue+Square,+Bellevue,+WA+98004&intent=add_a_stop Interpretacja: użytkownik chce dodać przystanek w Bellevue Square, Bellevue, o obecnych współrzędnych [47.6, -122.2].

Unikaj

Określa, czego należy unikać podczas nawigacji.

Klucz parametru: avoid
Możliwe wartości:

  • f – promy
  • h – autostrady
  • t – opłaty za przejazd

Przykład: geo:0,0?q=googleplex&avoid=tf
Interpretacja: użytkownik chce dojechać do Googleplexu, unikając dróg płatnych i promów.

Tryb podróży

Środek transportu to metoda transportu określona w zapytaniu przez użytkownika.

Klucz parametru: mode
Możliwe wartości:

  • b – rower
  • d – dojazd
  • x – taksówka
  • l – motocykl
  • r – transport publiczny
  • w – pieszo

Przykład: geo:0,0?q=Googleplex&mode=r
Interpretacja: użytkownik chce dojechać do Googleplexu środkami transportu publicznego.

Wpis

Służy do rejestrowania źródła wejścia.

Możliwe wartości: assistant

Przykład: geo:47.61594547836694,-122.20373173098756?entry=assistant

Zamiar wyszukiwania

Użyj zamiaru wyszukiwania, aby wyszukać zapytanie i wyświetlić wiele wyników na trasie podczas jazdy.

Format intencji

Klasa Intent używa tego formatu w przypadku intencji wyszukiwania:

Kategoria: android.intent.category.DEFAULT

Działanie: android.intent.action.VIEW

Schemat: geo

Przykład: geo:0,0?q=restaurants+nearby

Sugerowane działanie aplikacji: otwórz listę lokalizacji pasujących do zapytania użytkownika.

Filtry intencji w pliku manifestu

Zadeklaruj w pliku manifestu aplikacji ten format intencji, aby Gemini lub Asystent Google wiedział, że Twoja aplikacja do nawigacji może odbierać intencje wyszukiwania:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo" />
</intent-filter>

Podane parametry

W dostarczonych danych o zamiarach wyszukiwania powinny być dostępne te parametry.

Zapytanie o lokalizację

Zapytanie o lokalizację to lokalizacja, której użytkownik szuka podczas jazdy. To zapytanie może być nieprecyzyjne lub dotyczyć aktywnej trasy nawigacji.

Klucz parametru: q
Wartość: wyszukiwane przez użytkownika hasło, które może być typem lokalizacji, np. kawiarnia lub uczelnia, ale może też zawierać kwantyfikatory, np. -w pobliżu lub -z najwyższą oceną.

Przykład: geo:0,0?q=restaurants+nearby
Interpretacja: użytkownik chce wyszukać restauracje w pobliżu.

Zamiar działania niestandardowego

Używaj niestandardowego zamiaru w przypadku niestandardowych działań, takich jak zgłaszanie wypadków i kończenie nawigacji. Główny typ działania jest definiowany przez parametr zapytania act. W zależności od typu działania możesz ustawić dodatkowe parametry.

Format intencji

Klasa Intent używa tego formatu w przypadku zamiaru działania niestandardowego:

Kategoria: android.intent.category.DEFAULT

Działanie: android.intent.action.VIEW

Schemat: geo.action

Przykład: geo.action:?act=report&accident_type=major

Filtry intencji w pliku manifestu

Zadeklaruj w pliku manifestu aplikacji ten format intencji, aby poinformować Gemini lub Asystenta Google, że Twoja aplikacja do nawigacji może odbierać intencje działań niestandardowych.

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:scheme="geo.action" />
</intent-filter>

Podane parametry

W dostarczonych danych intencji działania niestandardowego powinny być dostępne te parametry:

Typ działania

Określa typ działania niestandardowego, które użytkownik chce wykonać.

Klucz parametru: act

Przykłady:

  • geo.action:?act=report_crash&accident_type=major
    Interpretacja: użytkownik chce zgłosić poważny wypadek.

  • geo.action:?act=mute
    Interpretacja: użytkownik chce wyciszyć wskazówki głosowe.

  • geo.action:?act=exit_navigation
    Interpretacja: użytkownik chce zakończyć bieżącą nawigację.

Sugerowane działanie aplikacji: wykonaj żądane działanie w aplikacji do nawigacji lub wyświetl komunikat o nieobsługiwanym działaniu.

Na ilustracji poniżej przedstawiono przykład par klucz-wartość w zapytaniu o odpowiedź:

Przepływ danych o zamiarach w działaniu niestandardowym

Rysunek 2. Przepływ danych intencji działania niestandardowego.

Para klucz-wartość:

"act": "report_crash"
"road_direction": other_side"

Każda czynność niestandardowa ma zawsze parametr act jako klucz. W przytoczonym wyżej przykładowym kodzie niektóre działania mogą mieć dodatkowe pary klucz-wartość. Na przykład act=report_crash obsługuje te dodatkowe klawisze: accident_typeroad_direction.

Klucz accident_type może mieć 2 wartości: minormajor.

Możliwe wartości

W tabeli znajdziesz możliwe wartości, które Gemini lub Asystent Google mogą przekazywać jako działanie, które użytkownik próbuje wykonać w aplikacji do nawigacji.

Wartość Opis Opcjonalne klucze parametrów Wartości parametrów opcjonalnych
allow_ferries Zmień preferencje trasy, aby zezwolić na promy.
allow_highways Zmień preferencje trasy, aby zezwolić na autostrady.
allow_tolls Zmień ustawienia trasy, aby zezwolić na przejazdy płatnymi drogami.
avoid_ferries Zmień preferencje trasy, aby unikać promów.
avoid_highways Zmień preferencje trasy, aby unikać autostrad.
avoid_tolls Zmień preferencje dotyczące trasy, aby unikać opłat.
distance_to_destination Wyświetl odległość od miejsca docelowego.
distance_to_next_turn wyświetlać odległość do następnego zakrętu;
eta Wyświetl szacowany czas dotarcia na miejsce docelowe.
exit_navigation Zakończ lub anuluj nawigację.
follow_mode Zmień widok mapy na tryb śledzenia.
go_back Wróć do poprzedniego działania na mapie.
hide_satellite Zmień ustawienia mapy, aby ukryć informacje satelitarne.
hide_traffic Zmień ustawienia mapy, aby ukryć informacje o natężeniu ruchu.
mute Wycisz wskazówki głosowe.
query_current_road Pokaż, na jakiej drodze znajduje się użytkownik.
query_destination Pokaż miejsce docelowe.
query_next_turn Pokaż, gdzie mam następny skręt.
report_crash zgłaszać wypadki; accident_type minor
major
road_direction this_side
other_side
report_hazard zgłaszać zagrożenia; hazard_type animal
broken_traffic_light
construction
flooding
fog
hail
ice
missing_sign
object_on_road
pothole
roadkill
snow
vehicle
weather
road_direction this_side
other_side
location_on_road on_road
on_shoulder
report_police zgłaszać działania policji, road_direction this_side
other_side
report_road_closure zgłaszać zamknięcia dróg; road_closure_type partial
full
report_traffic Zgłoś natężenie ruchu. traffic_type moderate
heavy
standstill
road_direction this_side
other_side
route_overview Pokaż opis trasy.
show_alternates Pokaż trasy alternatywne.
show_directions_list Wyświetl szczegółowe wskazówki.
show_satellite Wyświetl informacje o satelitach na mapie.
show_traffic Pokaż natężenie ruchu na mapie.
time_to_destination Wyświetlanie szacowanego czasu dotarcia do miejsca docelowego.
time_to_next_turn Wyświetlaj szacowany czas dotarcia do następnego skrętu.
unmute Włącz wskazówki głosowe.

Pobieranie stanu nawigacji (tylko Gemini)

Aby zapewnić, że Gemini może przekazywać użytkownikowi dokładne informacje w czasie rzeczywistym, gdy zapyta o stan podróży, Twoja aplikacja musi udostępniać metadane nawigacji za pomocą usługi NavigationManager. W szczególności musi ona udostępniać funkcje i zgodę użytkownika na udostępnianie informacji Gemini za pomocą NavigationManager.setVoiceAssistantCapabilities. Wskazówki dotyczące implementacji znajdziesz w artykule Przekazywanie metadanych nawigacji.