Die Auswahl des aktiven VIA erfolgt durch ManageAssistActivity
in CarSettings. Dieser Ablauf wird von der PackageInstaller
App als Teil des Abschnitts „Standard-Apps“ des Einstellungsbildschirms ausgelöst.
Abbildung 1. Standard-Apps auf dem Einstellungsbildschirm
Die ausgewählte VIA wird dem System auf zwei Arten zugänglich gemacht:
- Als Teil des
RolesManager
Systemdienstes - Vom
VoiceInteractionManagerService
über die interneAssistUtils
API.
Eine Liste der Kandidaten-VIAs kann mit RolesManager
mit dem Rollennamen android.app.role.ASSISTANT
abgerufen werden.
Hotword-Auslösung
Android stellt AlwaysOnHotwordDetector als Abstraktion zusätzlich zum Hardware-DSP bereit. Dies bietet eine bequeme Möglichkeit, einen VoiceInteractionService
einem Sprachmodell für eine energieeffiziente, ständig aktive Spracherkennung zuzuordnen. Dies ist der häufigste und bekannteste Interaktionsablauf, bei dem der Benutzer eine Interaktion mit einer Sprachanwendung (Voice Application, VA) anfordert, um ein neues Gespräch zu initiieren. Auf diese Weise gestartete Sprachsitzungen werden mit SHOW_SOURCE_ASSIST_GESTURE flag
identifiziert.
Abbildung 2. Hotword-Triggerung
Legende. Systemdienste werden in Hellblau angezeigt, VIA-Komponenten in Grün.
PTT-Auslösung
Dies gilt für einen langen oder kurzen Tastendruck auf die Hardware. In AAOS wird PTT von CarInputService verwaltet. In einer Standardimplementierung verarbeitet dieser Dienst Eingabeereignisse, die über die Fahrzeug-HAL empfangen werden, und wendet im besonderen Fall der Sprachinteraktion die folgende Logik auf Schlüsselereignisse an:
- Kurze PTT-Ereignisse (
KeyEvent.KEYCODE_VOICE_ASSIST
) werden anVoiceInteractionManagerService
weitergeleitet, um eine neue Sprachsitzung zu starten. - Lange PTT-Ereignisse werden zunächst an Projektionsempfänger (z. B. Android Auto oder CarPlay), dann an über Bluetooth verbundene Geräte und schließlich an die lokale VIA-App weitergeleitet.
Mit diesem Ablauf gestartete Sitzungen werden mit SHOW_SOURCE_PUSH_TO_TALK
identifiziert.
Abbildung 3. PTT-Auslösung
Informationen zur Integration einer Hardware-Sprachsteuerungstaste in AAOS finden Sie unter Automotive Key Input- Integration.
Tap-to-Talk-Auslösung (oder Softwaretaste)
Das Auslösen der Sprachinteraktion über die Benutzeroberfläche des Systems erfolgt mithilfe von AssistUtil . Dies ist eine versteckte System-API, die nur von gebündelten System-Apps wie der System-Benutzeroberfläche verwendet werden kann, die Folgendes ermöglicht:
- Interaktion mit
VoiceInteractionManagerService
zum Starten von Sprachsteuerungssitzungen. - Bestimmen Sie, welches VIA aktuell ausgewählt ist.
Um die ausgewählte VIA-App dynamisch darzustellen, kann die Systembenutzeroberfläche RoleManager
verwenden und Änderungen am Rolleninhaber für ROLE_ASSISTANT
verfolgen. Ein Beispiel für die Implementierung der TTT-Triggerung finden Sie in CarSystemUI, AssistantButton
.
Abbildung 4. Tap-to-Talk-Auslösung
Sprachassistent Tap-to-Read (TTR)
In der Automobilbranche enthalten an das Benachrichtigungscenter gesendete Benachrichtigungen, die alsINBOX
oder INBOX_IN_GROUP
Benachrichtigungen gekennzeichnet sind (z. B. SMS-Nachrichten), eine Wiedergabe-Aktionsschaltfläche, mit der der Benutzer Benachrichtigungen von der ausgewählten VIA vorlesen lassen und optional per Spracheingabe antworten kann.Abbildung 5. Benachrichtigungen
Weitere Informationen zur Implementierung dieses Ablaufs finden Sie unter Messaging-Befehle verarbeiten .
Starten Sie VIA über den Autostarter
Wie jede andere App können auch VIAs eine oder mehrere Launcher-Aktivitäten in ihr Manifest aufnehmen. Es obliegt dem App-Entwickler und dem OEM, der die Vorinstallation dieser App akzeptiert, zu entscheiden, was diese Aktivitäten bewirken.
Wichtig. Im Automobilbereich unterliegen alle Aktivitäten, einschließlich Systemaktivitäten, während der Fahrt UX-Einschränkungen. Wenn das Erlebnis, das Sie über ein Launcher-Symbol aktivieren möchten, während der Fahrt verfügbar sein muss, fügen Sie es entweder zur Zulassungsliste hinzu (wenn Sie ein OEM sind) oder kommentieren Sie die Aktivität mit distractionOptimized
Metadaten. Weitere Informationen finden Sie unter Richtlinien zur Ablenkung des Fahrers .
DSP und Audio-HAL
Lesen Sie unbedingt die aktualisierten Richtlinien zur gleichzeitigen ständig aktiven Audioaufzeichnung und zum Audio-HAL unter „Gleichzeitige Aufnahme“ . Der Zugriff auf diese APIs kann erhebliche Auswirkungen auf die Leistung der Hotword-Erkennung haben, wie unter „Reagieren auf Hotwords“ erläutert.
Berechtigungen
Gewähren Sie systemprivilegierte Berechtigungen
Da der Benutzer keine privilegierten Berechtigungen gewähren kann, müssen OEMs, wenn ein VIA eine davon benötigt, ihre APK in ihren System-Images vorladen und diese Berechtigungen explizit in ihren Builds gewähren. Siehe Berechtigungen anfordern .
Fügen Sie dazu Ihrem Projekt eine Abhängigkeit von der Berechtigungsliste hinzu:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
Fügen Sie die Berechtigungsdatei „system-privilegeallowlist“ zum 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>
Gefährliche Vorabgenehmigungen von Berechtigungen
Wie unter „Berechtigungen anfordern“ angegeben, benötigt VIA für den Zugriff auf bestimmte Funktionen die Zustimmung des Benutzers. Einige dieser Berechtigungen sind dem Standard- VoiceInteractionService
vorab gewährt (siehe DefaultPermissionGrantPolicy.java
). Weitere Informationen zu Berechtigungen für Standardhandler finden Sie unter Berechtigungen, die nur in Standardhandlern verwendet werden . Es ist auch möglich, Berechtigungen mithilfe der Konfigurationsdatei default-permissions.xml
vorab zu erteilen. Einzelheiten zu Einschränkungen bei der Voraberteilung von Berechtigungen finden Sie in Abschnitt 9 im Android Compatibility Definition Document (CDD) .
Wichtig. In allen Fällen wären diese Berechtigungen nur dem Standard-VIA vorab erteilt. Wenn auf dem System mehr als ein VIA vorinstalliert ist, muss das nicht standardmäßige VIA im Rahmen seiner Einrichtung oder bei der ersten Verwendung explizit Berechtigungen für den Benutzer anfordern.
Verteilung (Updates vorinstallieren und bereitstellen)
Vorinstallierte VIAs müssen sich unter den Partitionen und Ordnern /product/priv-apps
oder /vendor/priv-apps
befinden (weitere Informationen zu Partitionen finden Sie unter Partitionsübersicht und Produktpartitionen erstellen ).
Im zweiten Fall können hier gehostete Apps nicht auf @hide-System-APIs zugreifen, da die Herstellerpartition separat vom System aktualisiert werden könnte. Je nach Standort der vorinstallierten Apps können Updates als OTA (siehe OTA-Updates ) oder über App-Updates aus einem App Store durchgeführt werden.
Anpassung
Wie in Automotive-spezifische Konzepte erwähnt, sind UI/UX-Konsistenz und -Anpassung im Automotive-Bereich wichtiger als in jedem anderen Formfaktor. Für maximale Interoperabilität wird die Verwendung der AAOS Car UI-Bibliothek dringend empfohlen. Diese Bibliothek umfasst Komponenten und Ressourcen, die in Automobil-Apps integriert werden können, die von OEMs individuell angepasst werden können. Auf diese Weise kann ein einzelnes APK so erstellt werden, dass seine Benutzeroberfläche an das Design jedes Automodells angepasst werden kann.