Implementowanie intencji aplikacji do nawigacji

Gemini używa 3 różnych formatów intencji, które mogą być obsługiwane przez Twoją aplikację do nawigacji. Aby zapewnić interoperacyjność i zintegrować aplikację z Gemini, zadeklaruj w manifeście aplikacji filtry intencji opisane na tej stronie. Więcej informacji o intencjach znajdziesz w Intent.

Klasa aplikacji do nawigacji Gemini Intent obsługuje te intencje:

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

Przepływ danych o zamiarach

Rysunek 1. Przepływ danych o intencjach.

Parametry w danych o zamiarze

Dane intencji mają format URI zawierający parametry oparte na przekazywanej intencji. Niektóre parametry są zawsze podawane w danych. Oznacza to, że możesz oczekiwać, że zawsze będą miały wartość wyrażoną w sposób jawny. W przypadku parametrów opcjonalnych nie zawsze jest ustawiona wartość w danych. Więcej informacji znajdziesz w artykule Test danych.

Zamiary offline

Wszystkie intencje wymienione na tej stronie mają dostępne warianty offline. Możesz je odróżnić, dodając do schematu symbol .offline. Na przykład intencja nawigacji korzysta ze schematu geo.offline. Te filtry intencji w pliku manifestu oznaczają, że aplikacja może obsługiwać te działania 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 spośród kilku opcji.

Filtry intencji w pliku manifestu

Zadeklaruj w pliku manifestu aplikacji ten format intencji, aby Gemini 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 typu żą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 tej opcji 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 w 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 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 działań niestandardowych, 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, ż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

Oczekuje się, że w dostarczonych danych intencji działania niestandardowego będą 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ć instrukcje 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 o zamiarach w działaniu niestandardowym.

Para klucz-wartość:

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

Każda czynność niestandardowa ma zawsze parametr act jako klucz. W podanym 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 klucze: accident_typeroad_direction.

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

Możliwe wartości

Tabela zawiera możliwe wartości, które Gemini może 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 opłaty.
avoid_ferries Zmień preferencje trasy, aby unikać promów.
avoid_highways Zmień preferencje trasy, aby unikać autostrad.
avoid_tolls Zmień ustawienia 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ż, co będzie następne.
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ć aktywność 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świetl szacowany czas dotarcia do następnego zakrętu.
unmute Włącz wskazówki głosowe.

Pobieranie stanu nawigacji

Aby mieć pewność, ż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. Wskazówki dotyczące implementacji znajdziesz w artykule Przekazywanie metadanych nawigacji.