Wybór aktywnego VIA należy do:
ManageAssistActivity
w CarSettings. Ten proces jest wywoływany przez aplikację PackageInstaller
w ramach
w sekcji Aplikacje domyślne na ekranie Ustawienia.
Rysunek 1. Domyślne aplikacje na ekranie Ustawienia
Wybrany VIA jest ujawniany dla systemu na 2 sposoby:
- W ramach:
RolesManager
usługa systemowa - Przez:
VoiceInteractionManagerService
przez:AssistUtils
wewnętrzny interfejs API.
Listę kandydatów VIA można uzyskać za pomocą funkcji RolesManager
z rolą android.app.role.ASSISTANT
.
Wyzwalanie słowa-klucza
Android udostępnia funkcję AlwaysOnHotwordDetector
jako abstrakcja w stosunku do sprzętowej platformy DSP. To wygodny sposób
Powiąż urządzenie VoiceInteractionService
z modelem głosu, który jest zawsze włączony przy niskiej energii
rozpoznawania głosu. Jest to najczęstszy i najbardziej znany proces interakcji, w którym użytkownik
prosi o interakcję z aplikacją głosową w celu rozpoczęcia nowej rozmowy. Rozmowa głosowa
sesje rozpoczęte w ten sposób są identyfikowane za pomocą parametru SHOW_SOURCE_ASSIST_GESTURE flag
.
Rysunek 2. Wyzwalanie słowa-klucza
Legenda. Usługi systemowe są wyświetlane w kolorze jasnoniebieskim, a komponenty VIA – na zielono.
Aktywator PTT
Dotyczy to długiego lub krótkiego naciśnięcia przycisku sprzętowego. W AAOS PTT jest obsługiwany przez CarInputService, W implementacji domyślnej ta usługa obsługuje zdarzeń związanych z wprowadzaniem danych odbieranych przez HAL pojazdu, a w konkretnym przypadku na głos , stosuje tę logikę do kluczowych zdarzeń:
- Krótkie zdarzenia PTT (
KeyEvent.KEYCODE_VOICE_ASSIST
) są kierowane doVoiceInteractionManagerService
, aby rozpocząć nową sesję głosową. - Długie zdarzenia PTT są w pierwszej kolejności odbierane przez odbiorniki (np. Android Auto) lub CarPlay), potem do urządzeń połączonych przez Bluetooth, a na koniec do lokalnego VIA. .
Sesje, w których rozpoczęto ten proces, są oznaczone tagiem SHOW_SOURCE_PUSH_TO_TALK
.
Rysunek 3. Aktywator PTT
Aby zintegrować sprzętowy przycisk sterowania głosem z systemem AAOS, zapoznaj się z informacjami o integracji z automatycznym wprowadzaniem kluczyka.
Uruchamianie funkcji „Dotknij, by rozmawiać” (lub przycisk oprogramowania)
Interakcję głosową możesz aktywować w interfejsie systemu za pomocą narzędzia AssistUtil. To ukryty systemowy interfejs API, którego mogą używać tylko pakietu aplikacji systemowych, np. interfejsu użytkownika systemu, który umożliwia:
- Wejdź w interakcję z urządzeniem
VoiceInteractionManagerService
, aby rozpocząć sesje sterowania głosem. - Określ, który jest obecnie wybrany VIA.
Do dynamicznego wyświetlania wybranej aplikacji VIA można używać w interfejsie użytkownika
RoleManager
i postępuj zgodnie ze zmianami dotyczącymi roli użytkownika ROLE_ASSISTANT
.
Przykład implementacji funkcji TTT znajdziesz w CarSystemUI na stronie AssistantButton
.
Rysunek 4. Włączanie funkcji Dotknij, by rozmawiać
Asystent głosowy – tryb „Dotknij, by przeczytać” (TTR)
W wersji samochodowej powiadomienia publikowane w Centrum powiadomień jako Powiadomienia zINBOX
lub INBOX_IN_GROUP
(np. SMS-y)
zawierać przycisk odtwarzania, który pozwala odczytać powiadomienia na głos.
przez wybrany VIA i opcjonalnie odpowiedzieć głosowo.
Rysunek 5. Powiadomienia
Więcej informacji o wdrażaniu tego procesu znajdziesz w sekcji Nick .
Uruchom VIA z programu uruchamiającego w samochodzie
Podobnie jak w przypadku każdej innej aplikacji, ViA może zawierać co najmniej 1 działanie programu uruchamiającego ich pliku manifestu. Decyzja o zaakceptowaniu przez producenta aplikacji i producenta aplikacji zależy od tego, wcześniej zainstalować tę aplikację, aby określić jej działanie.
Ważne. W sekcji Motoryzacja wszystkie aktywności, w tym system
podlegają ograniczeniom UX podczas jazdy. Jeśli chcesz korzystać z różnych funkcji
aby można było włączyć z ikony programu uruchamiającego, musi być dostępna podczas jazdy, dodaj ją do
dodać do listy dozwolonych (jeśli jesteś producentem OEM) lub dodać adnotację do aktywności za pomocą distractionOptimized
metadanych. Więcej informacji:
Wskazówki dotyczące rozpraszania uwagi kierowcy
DSP i HAL audio
Zapoznaj się ze zaktualizowanymi wytycznymi dotyczącymi zawsze aktywnego dźwięku nagrywanie i nagrywanie dźwięku HAL na Jednoczesnym nagrywaniu. Dostęp do tych interfejsów API może mieć znaczny wpływ na działanie słowa-klucza wykrywaniem zgodnie z opisem na stronie Odpowiadanie na słów-kluczy.
Uprawnienia
Przyznawanie uprawnień z podwyższonymi uprawnieniami systemowymi
W związku z tym, że użytkownik nie może przyznać uprzywilejowanych uprawnień, jeśli VIA wymaga: OEM musi mieć włączone wstępne wczytywanie plików APK w obrazach systemu i przyznawać im te uprawnienia bezpośrednio w swoich kompilacjach. Zobacz Wyślij prośbę .
Aby to zrobić, dodaj do projektu zależność listy dozwolonych uprawnień:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
Dodaj plik uprawnień do listy dozwolonych uprawnień systemowych do aplikacji yourdata/etc/car
folder:
vendor/…/data/etc/car/Android.bp
prebuilt_etc { name:privapp_allowlist_com.example.myvoicecontrol", sub_dir: "permissions", src: "com.example.myvoicecontrol.xml", filename_from_src: true, }
vendor/…/data/etc/car/com.example.myvoicecontrol.xml
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.android.car.voicecontrol"> <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> </privapp-permissions> </permissions>
Wstępne przyznanie niebezpiecznych uprawnień
Jak wskazano w
Wyślij prośbę
, VIA wymaga zgody użytkownika na dostęp do niektórych funkcji. Niektóre z tych
uprawnienia domyślnie przyznane VoiceInteractionService
(zobacz
DefaultPermissionGrantPolicy.java
).
Więcej informacji o uprawnieniach domyślnych modułów obsługi znajdziesz tutaj
Uprawnienia
używane tylko w domyślnych modułach obsługi. Możesz również wstępnie przyznać uprawnienia za pomocą interfejsu default-permissions.xml
. Więcej informacji:
ograniczeń dotyczących wstępnego przyznawania uprawnień, zob. artykuł 9 w sekcji
Dokument z definicją zgodności (CDD).
Ważne. We wszystkich przypadkach tylko domyślna VIA miałaby te uprawnienia zostały wstępnie przyznane. Jeśli w systemie jest wstępnie wczytanych więcej niż 1 interfejs VIA, inny niż domyślny VIA musi wyraźnie zażądać uprawnień w ramach podczas konfiguracji lub pierwszego użycia.
Rozpowszechnianie (wstępna instalacja i wdrażanie aktualizacji)
Wstępnie zainstalowane VIA muszą być aktywne poniżej /product/priv-apps
lub
partycji i folderów /vendor/priv-apps
(więcej informacji o partycjach znajdziesz w omówieniu partycji i
Utwórz usługę
partycje).
W drugim przypadku, ponieważ partycję dostawcy można zaktualizować oddzielnie. z systemu, aplikacje hostowane w tym miejscu nie będą miały dostępu do systemowych interfejsów API @hide. Aktualizacje mogą być wykonywane w zależności od lokalizacji zainstalowanych fabrycznie aplikacji jako aktualizacje OTA (zobacz aktualizacje OTA) lub aktualizacje ze sklepu z aplikacjami.
Dostosowywanie
Jak wspomniano w: Pojęcia związane z samochodami, Spójność i dostosowywanie interfejsu użytkownika/UX są ważniejsze w motoryzacji niż w jakichkolwiek innych formatach. Aby uzyskać maksymalną interoperacyjność, użyj AAOS Zdecydowanie zalecamy korzystanie z biblioteki interfejsu samochodowego. Ta biblioteka zawiera komponenty i zasoby, które można zintegrować z technologią motoryzacyjną zaprojektowane z myślą o dostosowaniu produktów przez OEM. Dzięki temu pojedynczy plik APK można umieścić w pakiecie dzięki czemu jego interfejs użytkownika może być dostosowany do projektu każdego modelu samochodu.