Integrationsabläufe

Die Auswahl der aktiven VIA erfolgt über ManageAssistActivity in den Fahrzeugeinstellungen. Dieser Ablauf wird von der PackageInstaller App im Bereich „Standard-Apps“ auf dem Einstellungsbildschirm ausgelöst.

Standard-Apps auf dem Einstellungsbildschirm

Abbildung 1: Standard-Apps auf dem Einstellungsbildschirm

Die ausgewählte VIA wird dem System auf zwei Arten zur Verfügung gestellt:

  1. Im Rahmen des RolesManager-Systemdienstes
  2. Über die VoiceInteractionManagerService über die interne AssistUtils API.

Eine Liste der Kandidaten für virtuelle Standorte kann mit RolesManager und dem Rollennamen android.app.role.ASSISTANT abgerufen werden.

Hotword-Trigger

Android bietet AlwaysOnHotwordDetector als Abstraktion über dem Hardware-DSP. So können Sie ganz einfach ein 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.

Hotword-Trigger

Abbildung 2: Hotword-Trigger

Legende. Systemdienste werden in Hellblau und VIA-Komponenten in Grün angezeigt.

PTT-Trigger

Das gilt für langes oder kurzes Drücken der Hardwaretaste. In AAOS wird die Push-to-Talk-Funktion von CarInputService verwaltet. Bei einer Standardimplementierung verarbeitet dieser Dienst Eingabeereignisse, die über die Vehicle HAL empfangen werden. Im Fall der Sprachinteraktion wird die folgende Logik auf wichtige Ereignisse angewendet:

  • Kurze PTT-Ereignisse (KeyEvent.KEYCODE_VOICE_ASSIST) werden an VoiceInteractionManagerService weitergeleitet, um eine neue Sprachsitzung zu starten.
  • Lange PTT-Ereignisse werden zuerst an Projektionsempfänger (z. B. Android Auto oder CarPlay), dann an 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.

PTT-Trigger

Abbildung 3: PTT-Trigger

Informationen zur Integration einer Hardware-Schaltfläche für die Sprachsteuerung in AAOS finden Sie unter Automotive Key Input.

Auslöser für die Sprachsuche durch Tippen (oder Softwaretaste)

Die Sprachinteraktion über die System-UI wird mit AssistUtil ausgelöst. Dies ist eine ausgeblendete System-API, die nur von gebündelten System-Apps wie der System-Benutzeroberfläche verwendet werden kann. Sie ermöglicht Folgendes:

  • Mit VoiceInteractionManagerService interagieren, um Sprachsteuerungssitzungen zu starten.
  • Ermitteln Sie, 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 finden Sie in CarSystemUI, AssistantButton.

Auslösen der Funktion „Zum Sprechen tippen“

Abbildung 4: Auslösen der Funktion „Zum Sprechen tippen“

Sprachassistent – Tippen zum Vorlesen

In der Automobilbranche enthalten Benachrichtigungen, die im Benachrichtigungscenter als INBOX- oder INBOX_IN_GROUP-Benachrichtigungen gekennzeichnet sind (z. B. SMS-Nachrichten), die Schaltfläche „Abspielen“. Über diese Schaltfläche kann der Nutzer die Benachrichtigungen von der ausgewählten Sprachschnittstelle vorlesen lassen und optional per Sprachbefehl antworten.

Benachrichtigungen

Abbildung 5: Benachrichtigungen

Weitere Informationen zur Implementierung dieses Ablaufs findest du unter Messaging-Befehle verarbeiten.

VIA über den Auto-Launcher starten

Wie jede andere App können auch virtuelle Assistenten-Apps eine oder mehrere Launcher-Aktivitäten in ihrem Manifest enthalten. Es liegt in der Verantwortung 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 Sie über ein Launcher-Symbol aktivieren möchten, während der Fahrt verfügbar sein muss, fügen Sie sie entweder der Zulassungsliste hinzu (wenn Sie ein OEM sind) oder versehen Sie die Aktivität mit distractionOptimized-Metadaten. Weitere Informationen finden Sie in den Richtlinien zu Ablenkungen für Fahrer.

DSP und Audio-HAL

Lesen Sie sich die aktualisierten Richtlinien zur gleichzeitigen Audioaufzeichnung und 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

Systemberechtigungen gewähren

Da eine Berechtigung mit erhöhten Befugnissen nicht vom Nutzer erteilt werden kann, müssen OEMs ihre APKs in ihre System-Images vorladen und diese Berechtigungen in ihren Builds ausdrücklich erteilen, wenn eine VIA eine davon benötigt. Weitere Informationen finden Sie unter Berechtigungen anfordern.

Fügen Sie dazu Ihrem Projekt eine Abhängigkeit von der Berechtigungs-Zulassungsliste hinzu:

Android.bp

android_app {
     ...
     required: ["privapp_allowlist_com.example.myvoicecontrol"],
     ...
}

Fügen Sie 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>

Vorabgewährung gefährlicher 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 finden Sie 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 finden Sie im Abschnitt 9 des Android-Dokuments zur Kompatibilitätsdefinition (CDD).

Wichtig: In allen Fällen wurden diese Berechtigungen nur der Standard-VIA vorab gewährt. Wenn auf dem System mehrere VIAs vorinstalliert sind, muss die nicht standardmäßige VIA im Rahmen der Einrichtung oder bei der ersten Verwendung ausdrücklich Berechtigungen vom Nutzer anfordern.

Bereitstellung (Updates vorinstallieren und bereitstellen)

Vorinstallierte VIAs müssen sich in /product/priv-apps- oder /vendor/priv-apps-Partitionen und ‑Ordnern befinden. Weitere Informationen zu Partitionen finden Sie unter Partitionen – Übersicht und Produktpartitionen erstellen.

Im zweiten Fall können hier gehostete Apps nicht auf 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 Mobilitäts-Apps integriert werden können, die von OEMs angepasst werden sollen. So kann ein einzelnes APK so erstellt werden, dass seine Benutzeroberfläche an das Design jedes Automodells angepasst werden kann.