Integrationsflüsse

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.

Standard-Apps auf dem Einstellungsbildschirm

Abbildung 1. Standard-Apps auf dem Einstellungsbildschirm

Die ausgewählte VIA wird dem System auf zwei Arten zugänglich gemacht:

  1. Als Teil des RolesManager Systemdienstes
  2. Vom VoiceInteractionManagerService über die interne AssistUtils 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.

Hotword-Auslösung

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 an VoiceInteractionManagerService 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.

PTT-Auslösung

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 .

Tap-to-Talk-Auslösung

Abbildung 4. Tap-to-Talk-Auslösung

Sprachassistent Tap-to-Read (TTR)

In der Automobilbranche enthalten an das Benachrichtigungscenter gesendete Benachrichtigungen, die als INBOX 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.

Benachrichtigungen

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.