Gleichzeitige Aufnahme

Android 10 verbessert die Nutzerfreundlichkeit, wenn mehr als eine aktive Audioaufnahme gleichzeitig erforderlich ist, z. B. wenn der Nutzer einen VoIP-Anruf oder Videorekorder mit Sprachbefehlen steuern möchte, die von einem Dienst zur Barrierefreiheit bereitgestellt werden.

Das Audio-Framework implementiert die Richtlinie, die erlaubt, dass nur bestimmte privilegierte Anwendungen gleichzeitig mit regulären Anwendungen Daten erfassen.

Die Gleichzeitigkeitsrichtlinie wird implementiert, indem die aufgezeichneten Audiodaten stummgeschaltet werden, statt zu verhindern, dass eine Anwendung die Aufzeichnung startet. So kann das Framework dynamisch auf Änderungen bei der Anzahl und den Arten der Anwendungsfälle für die aktive Aufnahme reagieren, ohne dass eine App daran gehindert wird, die Aufnahme zu starten, wenn sie den vollen Zugriff auf das Mikrofon wiederherstellen kann, nachdem eine andere App die Aufnahme beendet hat.

Das bedeutet, dass die Audio-HAL und das Audio-Subsystem mehrere aktive Eingabestreams gleichzeitig unterstützen müssen, auch wenn in einigen Fällen nur ein Stream Audio an einen aktiven Client liefert.

Anforderungen an die Einwilligung zur Datenverarbeitung

Die Anforderungen für die Unterstützung der gleichzeitigen Erfassung finden Sie im CDD.

Situationen aus Audio-HAL aufnehmen

Ein gleichzeitiges Aufnahmeszenario kann zu unterschiedlichen Situationen in Bezug auf die Anzahl der aktiven Eingabestreams, die Auswahl des Eingabegeräts oder die Konfiguration der Vorverarbeitung führen.

Gleichzeitige Ausführung kann zwischen folgenden Elementen auftreten:

  • Mehrere Eingabestreams vom Anwendungsprozessor (AP)
  • Eingabestreams und ein Sprachanruf
  • Eingabestreams und ein Audio-DSP mit einer Hotword-Erkennung mit geringem Stromverbrauch

Gleichzeitige Aktivität von AP-Eingabestreams

Die Konfigurationsdatei für die Audiorichtlinie audio_policy_configuration.xml wird vom Audio-Framework verwendet, um zu bestimmen, wie viele Eingabestreams gleichzeitig geöffnet und aktiv sein können.

Die Audio-HAL muss mindestens mindestens eine Instanz jedes Eingabeprofils (mixPort der Rolle sink) unterstützen, die in der geöffneten und aktiven Konfigurationsdatei aufgeführt ist.

Geräteauswahl

Wenn mehrere aktive Clients an denselben HAL-Eingabestream angehängt sind, wählt das Framework das entsprechende Gerät für diesen Eingabestream anhand der Priorität des Anwendungsfalls aus.

Wenn mehrere Eingabestreams aktiv sind, kann jeder Stream eine andere Geräteauswahl haben.

Wenn die Technologie kompatibel ist, wird empfohlen, dass die Audio-HAL und das ‑Subsystem die Erfassung verschiedener Streams von verschiedenen Geräten zulassen, z. B. von einem Bluetooth-Headset und einem integrierten Mikrofon.

Bei einer Inkompatibilität (z. B. wenn zwei Geräte dieselbe digitale Audioschnittstelle oder dasselbe Back-End verwenden), muss die Audio-HAL auswählen, welcher Stream die Geräteauswahl steuert.

In diesem Fall gilt Folgendes:

  • Der resultierende Status muss konsistent sein und dieselbe Geräteauswahl bieten, wenn dasselbe Szenario wiederholt wird.
  • Wenn der Parallelitätsstatus endet, muss der verbleibende aktive Stream an das ursprünglich angeforderte Gerät in diesem Stream weitergeleitet werden.

Wenn die Audio-HAL eine Prioritätsreihenfolge für aktive Anwendungsfälle definiert, folge der Reihenfolge in source_priority() in frameworks/av/services/audiopolicy/common/include/policy.h.

Auswahl der Vorverarbeitung

Das Audio-Framework kann mit den HAL-Methoden addEffect() oder removeEffect() eine Vorverarbeitung für einen Eingabestream anfordern.

Für die Vorverarbeitung eines bestimmten Eingabestreams aktiviert das Audio-Framework nur die Konfiguration, die dem aktiven Anwendungsfall mit der höchsten Priorität im Eingabestream entspricht. Es kann jedoch zu Überschneidungen bei der Aktivierung und Deaktivierung des Anwendungsfalls kommen, was dazu führt, dass zwei gleichzeitig aktive Prozesse (z. B. zwei Instanzen des Echo-Cancellers) auf demselben Eingabestream ausgeführt werden. In diesem Fall wählt die HAL-Implementierung aus, welche Anfrage akzeptiert wird. Sie überwacht die aktiven Anfragen und stellt den korrekten Status wieder her, wenn einer der beiden Prozesse deaktiviert wird.

Wenn mehrere Aufnahmestreams gleichzeitig aktiv sind, werden möglicherweise unterschiedliche Anfragen zur Vorverarbeitung für verschiedene Streams ausgeführt.

Die HAL- und Audio-Subsystem-Implementierungen sollten es ermöglichen, unterschiedliche Vorverarbeitungen auf verschiedene Streams anzuwenden, auch wenn sie dasselbe Eingabegerät verwenden. Das heißt, die Vorverarbeitung sollte angewendet werden, nachdem die Streams von der primären Erfassungsquelle getrennt wurden.

Wenn dies bei einem bestimmten Audio-Subsystem aus technischen Gründen nicht möglich ist, sollte die Audio-HAL Prioritätsregeln anwenden, die denen in Geräteauswahl ähneln.

Gleichzeitiger Sprachanruf und Aufzeichnung über ZP

Die Aufnahme durch den Zugangspunkt kann auch während eines aktiven Sprachanrufs erfolgen. Diese Situation ist in Android 10 nicht neu und hat keinen direkten Bezug zur Funktion zur gleichzeitigen Aufnahme. Es ist jedoch nützlich, die Richtlinien für dieses Szenario zu erwähnen.

Während eines Anrufs sind zwei verschiedene Arten der Erfassung vom ZP erforderlich.

Anruf-Empfang und -Übertragung erfassen

Die Aufzeichnung von Anruf-Empfang und -Übertragung wird durch die Verwendung der Audioquelle AudioSource.VOICE_UPLINK oder AudioSource.VOICE_DOWNLINK und/oder des Geräts AudioDevice.IN_TELEPHONY_RX ausgelöst.

Audio-HALs sollten im Eingabeprofil (mixPort der Rolle sink) mit einer verfügbaren Route vom Gerät AudioDevice.IN_TELEPHONY_RX bereitgestellt werden.

Wenn eine Verbindung hergestellt wird (Audiomodus ist AudioMode.IN_CALL), sollte es möglich sein, mindestens einen aktiven Aufnahmestream vom Gerät AudioDevice.IN_TELEPHONY_RX zu haben.

Daten von Eingabegeräten erfassen, wenn ein Anruf aktiv ist

Wenn ein Anruf aktiv ist (Audiomodus ist AudioMode.IN_CALL), sollten Sie wie im Abschnitt Gleichzeitige Aktivität von AP-Eingabestreams beschrieben Eingabestreams vom ZP öffnen und aktivieren können.

Die Priorität für die Geräteauswahl und Vorverarbeitung sollte jedoch immer vom Sprachaufruf abhängen, falls es zu einem Konflikt mit den Anfragen aus den AP-Eingabestreams kommt.

Gleichzeitige Erfassung von DSP und AP

Wenn das Audio-Subsystem einen DSP enthält, der Funktionen zur Erkennung von Audiokontexten mit geringem Energieverbrauch oder Hotwords unterstützt, sollte die Implementierung die gleichzeitige Aufnahme vom ZP und vom Audio-DSP unterstützen. Dazu gehören sowohl die Erfassung durch die DSP während der anfänglichen Erkennungsphase als auch die Erfassung durch das AP mit AudioSource.HOTWORD , nachdem die Erkennung durch die DSP ausgelöst wurde.

Dies sollte durch das Flag für die gleichzeitige Erfassung widergespiegelt werden, das vom HAL des Audiotriggers über den Implementierungs-Descriptor ISoundTriggerHw.Properties.concurrentCapture = true gemeldet wird.

Die Audio-HAL sollte auch ein Eingabeprofil für die Hotword-Erkennung bereitstellen, das durch das Flag AudioInputFlag.HW_HOTWORD gekennzeichnet ist. Die Implementierung sollte das Öffnen und Aktivieren einer Anzahl von Streams in diesem Profil unterstützen, die mindestens der Anzahl der Audiomodelle entspricht, die gleichzeitig von der HAL des Audiotriggers geladen werden können.

Die Erfassung von diesem Eingabeprofil sollte möglich sein, während andere Eingabeprofile aktiv sind.

Auswirkungen auf Assistant-Implementierungen

Anforderungen an die Datennutzung und Nutzerbenachrichtigungen

Da die gleichzeitige Verwendung des Mikrofons bei Missbrauch zu privaten Daten des Nutzers führen kann, müssen die folgenden Bedingungen und Garantien auf die privilegierten vorab geladenen Apps angewendet werden, die die Assistant-Rolle anfordern.

  • Über das Mikrofon erhobene Daten dürfen das Gerät nur dann verlassen, wenn der Nutzer mit Assistant interagiert. Beispielsweise, nachdem das Hotword ausgelöst wurde.
  • Bei gleichzeitiger Erfassung sollten Anwendungen dem Nutzer visuelle Hinweise geben, nachdem das Hotword erkannt wurde. So erkennen Nutzer, dass weitere Unterhaltungen über eine andere App wie Assistant geführt werden.
  • Nutzer sollten die Möglichkeit haben, das Mikrofon oder die Assistant-Trigger auszuschalten.
  • Wenn Audioaufnahmen gespeichert werden, sollten Nutzer jederzeit auf die Aufnahmen zugreifen, sie überprüfen und löschen können.

Funktionelle Verbesserungen für Android 10

Assistants blockieren sich nicht gegenseitig

Wenn auf einem Gerät mit Android 9 oder niedriger zwei „Immer-an“-Assistants installiert sind, kann nur einer von ihnen auf das Hotword achten. Daher musste zwischen den beiden Assistants gewechselt werden. Unter Android 10 kann der Standard-Assistant gleichzeitig mit dem anderen Assistant zuhören. Das führt zu einer deutlich besseren Nutzererfahrung für Nutzer, die beide Assistenten verwenden.

Apps halten das Mikrofon eingeschaltet

Wenn Apps wie Shazam oder Waze das Mikrofon geöffnet halten, kann der Standard-Assistant weiterhin auf das Hotword warten.

Bei nicht standardmäßigen Assistant-Apps ändert sich das Verhalten unter Android 10 nicht.

Beispiel für Audio-HAL-Implementierung

Ein Beispiel für eine Audio-HAL-Implementierung, die den Richtlinien in diesem Dokument entspricht, finden Sie in AOSP.