Przepływy integracji

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.

Domyślne aplikacje na ekranie Ustawienia

Rysunek 1. Domyślne aplikacje na ekranie Ustawienia

Wybrany VIA jest ujawniany dla systemu na 2 sposoby:

  1. W ramach: RolesManager usługa systemowa
  2. 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.

Wyzwalanie słowa-klucza

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 do VoiceInteractionManagerService, 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.

Aktywator PTT

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.

Włączanie funkcji Dotknij, by rozmawiać

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 z INBOX 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.

Powiadomienia

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.