Procesy integracji

Wybór aktywnego VIA jest dokonywany przez ManageAssistActivityw CarSettings. Ten proces jest uruchamiany przez aplikację PackageInstaller w ramach sekcji Aplikacje domyślne na ekranie Ustawienia.

Aplikacje domyślne na ekranie Ustawienia

Rysunek 1. Aplikacje domyślne na ekranie Ustawienia

Wybrany identyfikator VIA jest udostępniany systemowi na 2 sposoby:

  1. W ramach usługi RolesManagersystem
  2. przez VoiceInteractionManagerService za pomocą wewnętrznego interfejsu API AssistUtils.

Listę kandydatów do VIA można uzyskać za pomocą funkcji RolesManager z nazwą roli android.app.role.ASSISTANT.

Aktywowanie słowa-klucza

Android udostępnia klasę AlwaysOnHotwordDetector jako abstrakcję na potrzeby sprzętowego procesora DSP. Dzięki temu możesz łatwo powiązać VoiceInteractionService z modelem rozpoznawania mowy w trybie niskiego zużycia energii. Jest to najpopularniejszy i najbardziej znany schemat interakcji, w którym użytkownik prosi o interaktywność z aplikacją głosową (VA), aby rozpocząć nową rozmowę. Sesje głosowe rozpoczęte w ten sposób są oznaczane jako SHOW_SOURCE_ASSIST_GESTURE flag.

Aktywowanie słowa-klucza

Rysunek 2. Aktywowanie słów-kluczy

Legenda. Usługi systemowe są oznaczone na jasnoniebiesko, a komponenty VIA na zielono.

Aktywacja PTT

Dotyczy to długiego i krótkiego naciśnięcia przycisku sprzętowego. W AAOS funkcja PTT jest obsługiwana przez CarInputService. W domyślnej implementacji ta usługa obsługuje zdarzenia wejściowe otrzymywane przez interfejs HAL pojazdu, a w szczególnym przypadku interakcji głosowej stosuje do kluczowych zdarzeń następującą logikę:

  • Krótkie zdarzenia PTT (KeyEvent.KEYCODE_VOICE_ASSIST) są kierowane do VoiceInteractionManagerService, aby rozpocząć nową sesję głosową.
  • Długie zdarzenia PTT są najpierw przekazywane odbiornikom projekcji (np. Android Auto lub CarPlay), a potem urządzeniom połączonym przez Bluetooth i w końcu do lokalnej aplikacji VIA.

Sesje rozpoczęte za pomocą tego procesu są oznaczane symbolem SHOW_SOURCE_PUSH_TO_TALK.

Aktywacja PTT

Rysunek 3. Aktywacja PTT

Aby zintegrować przycisk sterowania głosem z AAOS, zapoznaj się z informacjami o integracji Automotive Key Input.

Funkcja Dotknij i mów (lub przycisk programowy)

Interakcje głosowe w interfejsie systemu są wywoływane za pomocą AssistUtil. Jest to ukryty interfejs API systemu, z którego mogą korzystać tylko wbudowane aplikacje systemowe, takie jak interfejs użytkownika systemu, który umożliwia:

  • Interakcja z VoiceInteractionManagerService w celu rozpoczęcia sesji sterowania głosem.
  • Określ, która z nich jest obecnie wybrana.

Aby dynamicznie wyświetlić wybraną aplikację VIA, interfejs systemu może używać RoleManageri śledzić zmiany w roli ROLE_ASSISTANT. Przykład implementacji funkcji uruchamiania TTT można znaleźć w CarSystemUI, AssistantButton.

Aktywowanie funkcji „Dotknij i mów”

Rysunek 4. Aktywowanie funkcji „Dotknij i mów”

Asystent głosowy – funkcja „Kliknij, aby przeczytać” (TTR)

W systemach samochodowych powiadomienia publikowane w centrum powiadomień o typie INBOX lub INBOX_IN_GROUP (np. SMS-y) zawierają przycisk Odtwórz, który umożliwia użytkownikowi odsłuchanie powiadomienia przez wybrane urządzenie VIA. Można też za pomocą głosu odpowiedzieć na powiadomienie.

Powiadomienia

Rysunek 5. Powiadomienia

Więcej informacji o wdrażaniu tego procesu znajdziesz w artykule Przetwarzanie poleceń w wiadomościach.

Uruchamianie VIA z menu uruchamiającego w samochodzie

Podobnie jak inne aplikacje, VIA może zawierać w swoim pliku manifestu co najmniej 1 aktywność w wywołaczu. To deweloper aplikacji i OEM decydują o tym, jakie działania będą wykonywane przez wstępnie zainstalowaną aplikację.

Ważne. W przypadku Automotive wszystkie działania, w tym działania systemu, podlegają ograniczeniom związanym z UX podczas jazdy. Jeśli funkcja, którą chcesz włączyć za pomocą ikony w menu, musi być dostępna podczas jazdy, dodaj ją do listy dozwolonych (jeśli jesteś producentem OEM) lub dodaj do niej adnotacje za pomocą metadanych distractionOptimized. Więcej informacji znajdziesz w wytycznych dotyczących rozpraszania uwagi kierowcy.

DSP i HAL audio

Zapoznaj się z aktualnymi wytycznymi dotyczącymi jednoczesnego nagrywania dźwięku w trybie zawsze włączonym i interfejsu audio HAL w artykule Jednoczesne rejestrowanie. Dostęp do tych interfejsów API może mieć znaczący wpływ na skuteczność wykrywania słów kluczowych, jak wyjaśniono w artykule Reagowanie na słowa kluczowe.

Uprawnienia

Przyznawanie uprawnień uprzywilejowanego systemu

Uprawnienia o podwyższonych uprawnieniach nie mogą być przyznawane przez użytkownika, więc jeśli VIA potrzebuje któregoś z nich, producenci OEM muszą wstępnie załadować plik APK w obrazach systemu i przyznawać te uprawnienia w ramach swoich kompilacji. Zobacz Prośba o uprawnienia.

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 folderu yourdata/etc/car:

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>

Przyznawanie uprawnień niebezpiecznych

Jak wskazano w prośbie o przyznanie uprawnień, VIA wymaga zgody użytkownika na dostęp do niektórych funkcji. Niektóre z tych uprawnień są przyznawane domyślnie VoiceInteractionService (patrz DefaultPermissionGrantPolicy.java). Więcej informacji o uprawnieniach domyślnych modułów obsługi znajdziesz w artykule Uprawnienia używane tylko w domyślnych modułach obsługi. Możesz też przyznać uprawnienia z wyprzedzeniem, używając pliku konfiguracji default-permissions.xml. Szczegółowe informacje o ograniczeniach dotyczących wstępnego przyznawania uprawnień znajdziesz w sekcji 9 dokumentu zdefiniowania zgodności (CDD) na temat Androida.

Ważne. We wszystkich przypadkach te uprawnienia byłyby przyznawane tylko domyślnej wersji interfejsu VIA. Jeśli w systemie jest więcej niż 1 wstępnie załadowana VIA, VIA inna niż domyślna musi wyraźnie poprosić użytkownika o przyznanie uprawnień podczas konfiguracji lub pierwszego użycia.

dystrybucja (wstępne instalowanie i wdrażanie aktualizacji);

Wstępnie zainstalowane VIA muszą znajdować się w particjach i folderach /product/priv-apps lub /vendor/priv-apps (więcej informacji o particjach znajdziesz w artykule Omówienie partycjiTworzenie partycji w produkcie).

W drugim przypadku, ponieważ partycja dostawcy może być aktualizowana niezależnie od systemu, aplikacje hostowane na tej partycji nie będą mogły uzyskiwać dostępu do interfejsów API systemu @hide. W zależności od lokalizacji wstępnie zainstalowanych aplikacji aktualizacje mogą być przeprowadzane w ramach OTA (patrz aktualizacje OTA) lub za pomocą aktualizacji aplikacji ze sklepu z aplikacjami.

Dostosowywanie

Jak wspomniano w artykule Pojęcia związane z motoryzacją, spójność i dostosowywanie interfejsu użytkownika są w przypadku motoryzacji ważniejsze niż w przypadku innych formuł. Aby zapewnić maksymalną interoperacyjność, zdecydowanie zalecamy korzystanie z biblioteki interfejsu Car UI w AAOS. Biblioteka ta zawiera komponenty i zasoby, które można zintegrować z aplikacją samochodową, aby umożliwić jej dostosowanie przez producentów OEM. Dzięki temu można skompilować 1 plik APK w taki sposób, aby jego interfejs był dostosowywany do projektu każdego modelu samochodu.