Die Auswahl des aktiven VIA erfolgt durch
ManageAssistActivity
in CarSettings. Dieser Ablauf wird von der PackageInstaller App im Abschnitt „Standard-Apps“ der Einstellungen ausgelöst.

Abbildung 1: Standard-Apps auf dem Bildschirm „Einstellungen“
Die ausgewählte VIA wird dem System auf zwei Arten zur Verfügung gestellt:
- Als Teil des
RolesManager-Systemdienstes - Über
VoiceInteractionManagerServicedurch die interneAssistUtilsAPI.
Eine Liste der Kandidaten für virtuelle Standorte lässt sich mit RolesManager und dem Rollennamen android.app.role.ASSISTANT abrufen.
Hotword-Auslösung
Android bietet AlwaysOnHotwordDetector als Abstraktion über dem Hardware-DSP. So kannst du ganz einfach einen VoiceInteractionService mit einem Sprachmodell für die energieeffiziente, ständige Spracherkennung verknüpfen. Dies ist der häufigste und bekannteste Interaktionsablauf, bei dem der Nutzer die Interaktion mit einer Sprachanwendung (VA) anfordert, um eine neue Unterhaltung zu starten. So gestartete Sprachsitzungen werden mit SHOW_SOURCE_ASSIST_GESTURE flag gekennzeichnet.

Abbildung 2: Hotword-Auslösung
Legende Systemdienste werden hellblau und VIA-Komponenten grün dargestellt.
PTT-Auslösung
Dies gilt für langes oder kurzes Drücken der Hardwaretaste. In AAOS wird PTT von CarInputService verarbeitet. In einer Standardimplementierung verarbeitet dieser Dienst Eingabeereignisse, die über die Vehicle HAL empfangen werden. Im Fall der Sprachinteraktion wird die folgende Logik auf Schlüsselereignisse angewendet:
- Kurze PTT-Ereignisse (
KeyEvent.KEYCODE_VOICE_ASSIST) werden anVoiceInteractionManagerServiceweitergeleitet, um eine neue Sprachsitzung zu starten. - Lange PTT-Ereignisse werden zuerst an Projektionsempfänger (z. B. Android Auto oder CarPlay), dann an per Bluetooth verbundene Geräte und schließlich an die lokale VIA-App übergeben.
Sitzungen, die mit diesem Ablauf gestartet wurden, werden mit SHOW_SOURCE_PUSH_TO_TALK gekennzeichnet.

Abbildung 3: PTT-Auslösung
Informationen zur Integration einer Hardware-Schaltfläche für die Sprachsteuerung in AAOS findest du unter Automotive Key Input.
Auslösen von „Zum Sprechen tippen“ (oder Software-Schaltfläche)
Die Sprachinteraktion über die System-UI wird mit AssistUtil ausgelöst. Dies ist eine verborgene System-API, die nur von gebündelten System-Apps wie der System-UI verwendet werden kann. Sie ermöglicht Folgendes:
- Interaktion mit
VoiceInteractionManagerServicezum Starten von Sprachsteuerungs-Sitzungen. - Herausfinden, welche VIA derzeit ausgewählt ist.
Um die ausgewählte VIA-App dynamisch anzuzeigen, kann die System-UI RoleManager verwenden und Änderungen am Rolleninhaber für ROLE_ASSISTANT verfolgen.
Ein Beispiel für die Implementierung der TTT-Triggerung findest du in CarSystemUI, AssistantButton.

Abbildung 4: „Zum Sprechen tippen“ auslösen
Sprachassistent – Zum Vorlesen tippen
In Automotive enthalten Benachrichtigungen, die im Benachrichtigungscenter alsINBOX- oder INBOX_IN_GROUP-Benachrichtigungen (z. B. SMS-Nachrichten) gekennzeichnet sind, eine Schaltfläche „Wiedergeben“. Damit kann der Nutzer Benachrichtigungen von der ausgewählten VIA vorlesen lassen und optional per Sprache antworten.

Abbildung 5: Benachrichtigungen
Weitere Informationen zur Implementierung dieses Ablaufs finden Sie unter Messaging-Befehle verarbeiten.
VIA über den Car Launcher starten
Wie jede andere App können VIAs eine oder mehrere Launcher-Aktivitäten in ihrem Manifest enthalten. Es liegt im Ermessen des App-Entwicklers und des OEM, der die Vorinstallation dieser App akzeptiert, zu entscheiden, was diese Aktivitäten bewirken.
Wichtig: Im Bereich Automotive unterliegen alle Aktivitäten, einschließlich Systemaktivitäten, während der Fahrt UX-Einschränkungen. Wenn die Funktion, die du über ein Launcher-Symbol aktivieren möchtest, während der Fahrt verfügbar sein muss, füge sie entweder der Zulassungsliste hinzu (wenn du ein OEM bist) oder versieh die Aktivität mit distractionOptimized-Metadaten. Weitere Informationen findest du in den Richtlinien zu Ablenkungen für Fahrer.
DSP- und Audio-HAL
Lies dir die aktualisierten Richtlinien zur gleichzeitigen Audioaufzeichnung und zu Audio-HAL unter Gleichzeitige Aufnahme durch. Der Zugriff auf diese APIs kann sich erheblich auf die Leistung der Hotword-Erkennung auswirken, wie unter Auf Hotwords reagieren erläutert.
Berechtigungen
Systemprivilegierte Berechtigungen erteilen
Da eine Berechtigung mit erweiterten Befugnissen nicht vom Nutzer erteilt werden kann, müssen OEMs ihre APKs vorab in ihre System-Images laden und diese Berechtigungen in ihren Builds ausdrücklich erteilen, wenn eine VIA eine davon benötigt. Weitere Informationen findest du unter Berechtigungen anfordern.
Füge dazu deinem Projekt eine Abhängigkeit von der Berechtigungs-Zulassungsliste hinzu:
Android.bp
android_app {
...
required: ["privapp_allowlist_com.example.myvoicecontrol"],
...
}Füge die Berechtigungsdatei für die Zulassungsliste für Systemberechtigungen dem Ordner yourdata/etc/car hinzu:
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>
Vorab gewährte gefährliche Berechtigungen
Wie unter Berechtigungen anfordern angegeben, ist für den Zugriff auf bestimmte Funktionen die Einwilligung des Nutzers erforderlich. Einige dieser Berechtigungen werden dem Standard-VoiceInteractionService vorab gewährt (siehe DefaultPermissionGrantPolicy.java). Weitere Informationen zu Berechtigungen für Standard-Handler findest du unter Nur in Standard-Handlern verwendete Berechtigungen. Es ist auch möglich, Berechtigungen über die Konfigurationsdatei default-permissions.xml vorab zu gewähren. Details zu den Einschränkungen beim Voraberteilen von Berechtigungen findest du in Abschnitt 9 des
Android-Dokuments zur Kompatibilitätsdefinition (CDD).
Wichtig: In allen Fällen sind diese Berechtigungen nur für das Standard-VIA vorab gewährt. Wenn auf dem System mehr als eine VIA vorab geladen ist, muss die nicht standardmäßige VIA im Rahmen der Einrichtung oder bei der ersten Verwendung explizit Berechtigungen vom Nutzer anfordern.
Verteilung (Vorinstallation und Bereitstellung von Updates)
Vorinstallierte VIAs müssen sich in /product/priv-apps- oder /vendor/priv-apps-Partitionen und ‑Ordnern befinden. Weitere Informationen zu Partitionen findest du unter Partitionen – Übersicht und Produktpartitionen erstellen.
Im zweiten Fall können hier gehostete Apps nicht auf ausgeblendete System-APIs zugreifen, da die Anbieterpartition unabhängig vom System aktualisiert werden kann. Je nach Speicherort der vorinstallierten Apps können Updates als OTA (siehe OTA-Updates) oder über App-Updates aus einem App-Shop durchgeführt werden.
Personalisierung
Wie bereits in den branchenspezifischen Konzepten für die Automobilbranche erwähnt, sind Konsistenz und Anpassung von UI/UX in der Automobilbranche wichtiger als in jedem anderen Formfaktor. Für maximale Interoperabilität wird die Verwendung der Car UI-Bibliothek von AAOS dringend empfohlen. Diese Bibliothek enthält Komponenten und Ressourcen, die in Automotive-Apps eingebunden werden können, die von OEMs angepasst werden sollen. Damit kann ein einzelnes APK so erstellt werden, dass seine Benutzeroberfläche an das Design jedes Automodells angepasst werden kann.