Gleichzeitige Aufnahme

Android 10 verbessert die Nutzerfreundlichkeit in Fällen, in denen mehrere aktive Audioaufnahmen gleichzeitig erforderlich sind, z. B. wenn der Nutzer einen VoIP-Anruf oder Videorekorder mit Sprachbefehlen steuern möchte, die von einem Dienst zur Barrierefreiheit bereitgestellt werden.

Im Audio-Framework wird die Richtlinie implementiert, dass nur bestimmte privilegierte Apps Daten aufzeichnen dürfen. und reguläre Apps.

Die Richtlinie zur Gleichzeitigkeit wird durch Stummschalten des aufgezeichneten Audios implementiert, anstatt 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 über die Audio HAL erfassen

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.

In folgenden Fällen kann es zu einer Parallelität kommen:

  • 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 „audio_policy_configuration.xml“ der Audiorichtlinie wird vom Audio- Framework, um zu bestimmen, wie viele Eingabestreams gleichzeitig geöffnet und aktiv sein können.

Der Audio-HAL muss mindestens mindestens eine Instanz jeder Eingabe unterstützen Profil (mixPort der Rolle sink) in der offenen Liste und aktive Konfigurationsdatei.

Geräteauswahl

Wenn mehrere aktive Clients mit demselben HAL-Eingabestream verbunden sind, wählt das Framework das entsprechende Gerät für diesen Eingabestream basierend auf der Priorität des Anwendungsfalls aus.

Wenn mehrere Eingabestreams aktiv sind, kann jeder Stream ein anderes Gerät haben. Auswahl.

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 verwenden oder Backend), muss der Audio-HAL festlegen, welcher Stream die Geräteauswahl steuert.

In diesem Fall gilt Folgendes:

  • Der resultierende Status muss einheitlich sein und dieselbe Geräteauswahl bieten, wenn die gleichen wird das Szenario wiederholt.
  • Wenn der Gleichzeitigkeitsstatus endet, muss der verbleibende aktive Stream an den ursprünglichen Stream weitergeleitet werden. das angeforderte Gerät in diesem Stream.

Wenn der Audio-HAL eine Prioritätsreihenfolge zwischen aktiven Anwendungsfällen definiert, folgen Sie dieser Reihenfolge: gefunden 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 Eingabestreams. Es kann jedoch zu einer Überschneidung 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; die aktiven Anfragen verfolgt und den korrekten Status wiederhergestellt, wenn entweder Prozess ist deaktiviert.

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. Die Vorverarbeitung sollte also nach dem Demultiplexen der Streams aus der primären Aufnahmequelle angewendet werden.

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 Aufnahme über AP

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 Aufnahmearten vom AP 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 Anrufverbindung hergestellt wird (Audiomodus ist AudioMode.IN_CALL), sollte es möglich sein, um mindestens einen aktiven Aufnahmestream von 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), sollte es möglich sein, Eingabestreams vom AP wie im Abschnitt beschrieben öffnen und aktivieren Gleichzeitige Aktivität von AP-Eingabestreams.

Die Priorität bei der Geräteauswahl und Vorverarbeitung sollte jedoch immer von der Stimme abhängen. aufrufen, falls es zu einem Konflikt mit den Anfragen der 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. Dies umfasst sowohl die Erfassung durch die DSP während der anfänglichen Erkennungsphase als auch die Erfassung durch den 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 über dieses Eingabeprofil sollte möglich sein, während andere Eingabeprofile aktiv sind.

Auswirkungen auf Assistant-Implementierungen

Anforderungen an die Datennutzung und Nutzerbenachrichtigungen

Da die gleichzeitige Nutzung des Mikrofons bei Missbrauch zu einer Weitergabe privater Nutzerdaten führen kann, müssen die folgenden Bedingungen und Garantien für die vorinstallierten Apps mit Berechtigungen gelten, die die Rolle „Assistant“ anfordern.

  • Über das Mikrofon erhobene Daten dürfen das Gerät nur dann verlassen, wenn der Nutzer mit Assistant interagieren. Zum Beispiel, nachdem das Hotword ausgelöst wurde.
  • Gleichzeitig zuhörende Anwendungen sollten dem Nutzer nach dem Hotword visuelle Hinweise geben. erkannt wird. So können Nutzende verstehen, dass weitere Gespräche wie z. B. Assistant.
  • 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.

Funktionale Verbesserungen für Android 10

Assistant 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. In Android 10 kann Assistant gleichzeitig mit Assistant den anderen Assistant. Das führt zu einer deutlich besseren Nutzererfahrung für Nutzer, die beide Assistenten verwenden.

Apps, die das Mikrofon dauerhaft aktiviert lassen

Wenn Apps wie Shazam oder Waze das Mikrofon geöffnet halten, hört der Standardassistent weiterhin zu nach dem Hotword suchen.

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.