Sterowanie głosowe umożliwia kierowcom wykonywanie zadań bez odrywania rąk od kierownicy i wzroku od drogi. Dzięki akcjom w aplikacji samochodowej kierowcy mogą używać Gemini lub Asystenta Google do sterowania aplikacjami na Androida w systemie multimedialnym, wypowiadając polecenia takie jak „OK Google, znajdź parking przy ulicy w ExampleApp”.
Akcje w aplikacji działają z aplikacjami samochodowymi, które wskazują ważne miejsca (POI). Z tego przewodnika dowiesz się, jakie są konkretne wymagania i ograniczenia dotyczące integracji akcji w aplikacji z aplikacją wskazującą ciekawe miejsca.
Jak to działa
Akcje w aplikacji rozszerzają funkcje aplikacji na Gemini lub Asystenta Google, umożliwiając użytkownikom dostęp do funkcji aplikacji za pomocą głosu. Gdy użytkownik wywoła działanie w aplikacji,
Gemini lub Asystent Google dopasuje zapytanie do wbudowanej intencji (BII) zadeklarowanej w pliku
shortcuts.xml aplikacji i uruchomi aplikację na żądanym ekranie.
Obsługę wbudowanych intencji deklarujesz w aplikacji za pomocą elementów capability na Androidzie.
Gdy prześlesz aplikację za pomocą Konsoli Google Play, Google zarejestruje zadeklarowane w niej możliwości i udostępni je użytkownikom w Gemini lub Asystencie Google.
- Użytkownik aktywuje Gemini lub Asystenta Google i wysyła prośbę głosową dotyczącą konkretnej aplikacji.
- Gemini lub Asystent Google dopasowuje prośbę do wytrenowanego modelu (wbudowanej intencji) i wyodrębnia wszystkie parametry obsługiwane przez tę intencję.
- W tym przykładzie Gemini lub Asystent Google dopasowuje zapytanie do
GET_CHARGING_STATIONwbudowanej intencji, wyodrębnia parametr lokalizacji „SFO” i tłumaczy lokalizację na jej współrzędne geograficzne. - Aplikacja jest aktywowana za pomocą definicji realizacji dla tej wbudowanej intencji.
- Aplikacja przetwarza realizację i wyświetla opcje stacji ładowania w systemie multimedialnym kierowcy.
Ograniczenia
Implementacje akcji w aplikacji w samochodzie mają te ograniczenia:
Akcje w aplikacji samochodowej muszą być realizowane za pomocą precyzyjnych linków na Androidzie . Więcej informacji o realizacjach akcji w aplikacji znajdziesz w artykule Podawanie szczegółów realizacji wbudowanych intencji.
Implementacje w samochodzie obsługują tylko te wbudowane intencje:
- Parkowanie –
GET_PARKING_FACILITY - Ładowanie –
GET_CHARGING_STATION
- Parkowanie –
Wymagania
Aby przygotować aplikację samochodową do akcji w aplikacji:
- Spełnij ogólne wymagania dotyczące aplikacji na Androida w przypadku akcji w aplikacji.
- Dodaj zależność od biblioteki aplikacji samochodowych. Więcej informacji znajdziesz w artykule Deklarowanie zależności.
Określanie intencji i realizacji
Pierwszym krokiem do włączenia obsługi głosowej w aplikacji samochodowej za pomocą akcji w aplikacji jest określenie, które polecenia głosowe użytkownika lub intencje są obsługiwane przez aplikację. Następnie definiujesz realizację dla każdej intencji, aby określić, jak aplikacja ma spełnić prośbę.
Jakie intencje obsługuje Twoja aplikacja samochodowa?
Akcje w aplikacji udostępniają wytrenowane modele głosu, zwane intencjami wbudowanymi, które mogą rozumieć i interpretować polecenia głosowe użytkownika, gdy mówi on, „OK Google”. Aby odpowiadać na prośby głosowe, wystarczy zadeklarować w Gemini lub Asystencie Google wbudowane intencje, które obsługuje Twoja aplikacja. Jeśli na przykład chcesz, aby aplikacja pomagała w znajdowaniu miejsc parkingowych, zaimplementuj
GET_PARKING_FACILITYwbudowaną intencję. Możesz też zaimplementowaćGET_CHARGING_STATIONwbudowaną intencję, aby pomagać użytkownikom w znajdowaniu stacji ładowania samochodów elektrycznych.Jak aplikacja ma realizować każdą intencję?
Aplikacja realizuje prośbę głosową, uruchamiając się na odpowiednim ekranie. Akcje w aplikacji przekazują do realizacji parametry wyodrębnione z prośby użytkownika, co umożliwia dostosowanie odpowiedzi do potrzeb użytkownika.
Integracja akcji w aplikacji
Po określeniu strategii realizacji wykonaj te czynności, aby włączyć obsługę głosową w aplikacji samochodowej:
Otwórz główną aktywność
AndroidManifest.xmli zadeklaruj obsługę skrótów na Androidzie. Za pomocą elementów skrótucapabilitydeklarujesz w Gemini lub Asystencie Google wbudowane intencje, które obsługuje Twoja aplikacja. Więcej informacji znajdziesz w artykule Dodawanie możliwości.<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />Następnie dodaj element
<intent-filter>doAndroidManifest.xml. Umożliwi to Gemini lub Asystentowi Google używanie precyzyjnych linków do łączenia się z treścią aplikacji.W przypadku realizacji w Androidzie Auto element
<intent-filter>jest taki sam jak w Twojej aplikacji mobilnej.W przypadku systemu operacyjnego Android Automotive OS sesja
CarAppServiceaplikacji aktywuje Gemini lub Asystenta Google. Aby sesja mogła aktywować precyzyjny link, określ element<intent-filter>w elemencie<activity>plikuAndroidManifest.xml.
<!-- AndroidManifest.xml --> <activity ... android:name="androidx.car.app.activity.CarAppActivity"> ... <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="YOUR_SCHEME" android:host="YOUR_HOST" /> </intent-filter> </activity>Jeśli w katalogu
res/xmlaplikacji nie masz jeszcze plikushortcuts.xml, utwórz nowy. Więcej informacji o tym, jak akcje w aplikacji używają skrótów na Androidzie, znajdziesz w artykule Tworzenie pliku shortcuts.xml.W pliku
shortcuts.xmlzaimplementujcapabilitydla wybranej wbudowanej intencji. Następnie dodaj zagnieżdżony element<intent>, aby zdefiniować realizację aplikacji.<!-- shortcuts.xml --> <?xml version="1.0" encoding="utf-8"?> <shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <capability android:name="actions.intent.GET_PARKING_FACILITY"> <intent> <url-template android:value="YOUR_SCHEME://YOUR_HOST{?name,address,disambiguatingDescription,latitude,longitude}"> <!-- Facility name, e.g. "Googleplex" --> <parameter android:name="parkingFacility.name" android:key="name"/> <!-- Address, e.g. "1600 Amphitheatre Pkwy, Mountain View, CA 94043" --> <parameter android:name="parkingFacility.address" android:key="address"/> <!-- Disambiguate the type of service, e.g. "valet" --> <parameter android:name="parkingFacility.disambiguatingDescription" android:key="disambiguatingDescription"/> <!-- Latitude, e.g. "37.3861" --> <parameter android:name="parkingFacility.geo.latitude" android:key="latitude"/> <!-- Longitude, e.g. "-122.084" --> <parameter android:name="parkingFacility.geo.longitude" android:key="longitude"/> </intent> </capability> </shortcuts>Na koniec zaktualizuj logikę
Session()aplikacji samochodowej, aby obsługiwać przychodzącą realizację działań w aplikacji. Poniższe przykłady pokazują obsługę intencji w przypadkuSession.onCreateScreen()iSession.onNewIntent().onCreateScreen()
Kotlin
@Override fun onCreateScreen(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public Screen onCreateScreen(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
onNewIntent()
Kotlin
@Override fun onNewIntent(@NonNull intent: Intent): Screen { if (intent.getData() != null) { val uri: Uri = intent.getData() // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Java
@Override public void onNewIntent(@NonNull Intent intent) { if (intent.getData() != null) { Uri uri = intent.getData(); // uri = "YOUR_SCHEME://YOUR_HOST?name=Levis%20center" // Build your Templates with parsed uri parameters ... } }
Wyświetlanie podglądu, testowanie i publikowanie aplikacji
Akcje w aplikacji udostępniają narzędzia do wyświetlania podglądu i testowania aplikacji. Więcej informacji o tych narzędziach oraz o tym, jak opublikować w Sklepie Play aplikację samochodową z obsługą głosową, znajdziesz w artykule Omówienie akcji w aplikacji.