Gleichzeitige Aufnahme

Android 10 verbessert die Nutzerfreundlichkeit bei der gleichzeitigen aktiven Audioaufnahme, z. B. wenn der Nutzer einen VoIP-Anruf oder eine Videoaufzeichnung mit Sprachbefehlen steuern möchte, die von einem Barrierefreiheitsdienst bereitgestellt werden.

Das Audio-Framework implementiert die Richtlinie, die es nur bestimmten privilegierten Apps erlaubt, gleichzeitig mit regulären Apps Audio aufzunehmen.

Die Richtlinie zur gleichzeitigen Nutzung wird umgesetzt, indem die erfassten Audiodaten stummgeschaltet werden, anstatt zu verhindern, dass eine Anwendung mit der Erfassung beginnt. So kann das Framework dynamisch auf Änderungen bei der Anzahl und den Arten aktiver Erfassungsanwendungsfälle reagieren, ohne zu verhindern, dass eine App mit der Erfassung beginnt, wenn sie nach Abschluss der Erfassung durch eine andere App wieder vollen Zugriff auf das Mikrofon erhalten kann.

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

CDD-Anforderungen

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

Situationen aus dem Audio-HAL erfassen

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

Gleichzeitigkeit kann zwischen Folgendem auftreten:

  • Mehrere Eingabestreams vom Anwendungsprozessor (AP)
  • Eingabestreams und Sprachanruf
  • Eingabestreams und ein Audio-DSP, der eine Hotword-Erkennung mit geringem Stromverbrauch implementiert

Gleichzeitige Aktivität von AP-Eingabestreams

Die Audio-Richtlinienkonfigurationsdatei audio_policy_configuration.xml wird vom Audio-Framework verwendet, um zu bestimmen, wie viele Eingabestreams gleichzeitig geöffnet und aktiv sein können.

Das Audio-HAL muss mindestens eine Instanz jedes Eingabeprofils (mixPort der Rolle sink) unterstützen, das in der offenen und aktiven Konfigurationsdatei aufgeführt ist.

Geräteauswahl

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

Wenn mehrere Eingabestreams aktiv sind, kann für jeden Stream ein anderes Gerät ausgewählt werden.

Wenn die Technologie kompatibel ist, wird empfohlen, dass die Audio-HAL und das Subsystem die Aufnahme von verschiedenen Streams von verschiedenen Geräten wie einem Bluetooth-Headset und einem integrierten Mikrofon ermöglichen.

Bei Inkompatibilitäten (z. B. wenn sich zwei Geräte dieselbe digitale Audioschnittstelle oder dasselbe Backend teilen) muss der Audio-HAL auswählen, welcher Stream die Geräteauswahl steuert.

In diesem Fall:

  • Der resultierende Status muss konsistent sein und bei Wiederholung desselben Szenarios dieselbe Geräteauswahl bieten.
  • Wenn der Zustand der gleichzeitigen Nutzung endet, muss der verbleibende aktive Stream an das Gerät weitergeleitet werden, das ursprünglich für diesen Stream angefordert wurde.

Wenn eine Prioritätsreihenfolge vom Audio-HAL zwischen aktiven Anwendungsfällen definiert wird, folge derselben Reihenfolge wie in source_priority() in frameworks/av/services/audiopolicy/common/include/policy.h.

Auswahl der Vorverarbeitung

Das Audio-Framework kann die Vorverarbeitung eines Eingabestreams mit den HAL-Methoden addEffect() oder removeEffect() anfordern.

Für die Vorverarbeitung eines bestimmten Eingabestreams ermöglicht das Audio-Framework nur die Konfiguration, die dem aktiven Anwendungsfall mit der höchsten Priorität für den Eingabestream entspricht. Bei der Aktivierung und Deaktivierung von Anwendungsfällen kann es jedoch zu Überschneidungen kommen, sodass zwei gleichzeitig aktive Prozesse (z. B. zwei Instanzen der Echounterdrückung) für denselben Eingabestream ausgeführt werden. In diesem Fall wählt die HAL-Implementierung aus, welche Anfrage akzeptiert wird. Sie verfolgt die aktiven Anfragen und stellt den richtigen Status wieder her, wenn einer der Prozesse deaktiviert wird.

Wenn mehrere Erfassungsstreams gleichzeitig aktiv sind, werden möglicherweise verschiedene Vorverarbeitungsanfragen für verschiedene Streams ausgeführt.

Die HAL- und Audiosubsystem-Implementierungen sollten es ermöglichen, verschiedene 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 erfolgen.

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

Gleichzeitiger Sprachanruf und Aufnahme über AP

Die Aufnahme über den AP kann erfolgen, während ein Sprachanruf aktiv ist. Diese Situation ist in Android 10 nicht neu und steht nicht in direktem Zusammenhang mit der Funktion für die gleichzeitige Aufnahme. Es ist jedoch sinnvoll, die Richtlinien für dieses Szenario zu erwähnen.

Während eines Anrufs sind zwei verschiedene Arten von Aufnahmen vom AP erforderlich.

Anruf-RX und ‑TX erfassen

Die Erfassung von RX- und TX-Anrufen 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 ein Eingabeprofil (mixPort der Rolle sink) mit einem verfügbaren Pfad vom Gerät AudioDevice.IN_TELEPHONY_RX bereitstellen.

Wenn ein Anruf verbunden ist (der Audiomodus ist AudioMode.IN_CALL), sollte mindestens ein aktiver Aufnahmestream vom Gerät AudioDevice.IN_TELEPHONY_RX möglich sein.

Aufnahme von Eingabegeräten, wenn ein Anruf aktiv ist

Wenn ein Anruf aktiv ist (der Audiomodus ist AudioMode.IN_CALL), sollten Eingabestreams von der AP gemäß Abschnitt Gleichzeitige Aktivität von AP-Eingabestreams geöffnet und aktiviert werden können.

Die Priorität für die Geräteauswahl und die Vorverarbeitung sollte jedoch immer durch den Sprachanruf bestimmt werden, falls es zu Konflikten mit den Anfragen aus den AP-Eingabestreams kommt.

Gleichzeitige Erfassung von DSP und AP

Wenn das Audiosubsystem einen DSP enthält, der Low-Power-Audio-Kontext- oder Hotword-Erkennungsfunktionen unterstützt, sollte die Implementierung die gleichzeitige Erfassung durch den AP und den Audio-DSP unterstützen. Dies umfasst sowohl die Erfassung durch den DSP während der ersten Erkennungsphase als auch die Erfassung durch die AP mit AudioSource.HOTWORD , nachdem die Erkennung durch den DSP ausgelöst wurde.

Dies sollte durch das Flag für die gleichzeitige Erfassung widergespiegelt werden, das von der Sound Trigger HAL über den Implementierungsdeskriptor gemeldet wird: ISoundTriggerHw.Properties.concurrentCapture = true.

Das Audio-HAL sollte auch ein Eingabeprofil für die Hotword-Erfassung 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 Soundmodelle entspricht, die gleichzeitig von der Sound-Trigger-HAL geladen werden können.

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

Auswirkungen auf Assistant-Implementierungen

Anforderungen an die Datennutzung und Nutzerbenachrichtigung

Da die gleichzeitige Mikrofonnutzung bei Missbrauch private Nutzerdaten preisgeben kann, müssen die folgenden Bedingungen und Garantien für die privilegierten vorinstallierten Apps gelten, die die Assistant-Rolle anfordern.

  • Über das Mikrofon erhobene Daten dürfen das Gerät nur verlassen, wenn der Nutzer mit dem Assistant interagiert. Zum Beispiel, nachdem das Hotword ausgelöst wurde.
  • Anwendungen, die gleichzeitig zuhören, sollten dem Nutzer nach der Erkennung des Hotwords visuelle Hinweise geben. So können Nutzer nachvollziehen, dass weitere Unterhaltungen über eine andere App wie Assistant geführt werden.
  • Nutzer sollten die Möglichkeit haben, das Mikrofon oder die Assistant-Trigger zu deaktivieren.
  • Wenn Audioaufnahmen gespeichert werden, sollten Nutzer jederzeit darauf zugreifen, sie überprüfen und löschen können.

Funktionale Verbesserungen für Android 10

Assistants blockieren sich nicht gegenseitig

Unter Android 9 oder niedriger kann nur einer von zwei Assistenten, die immer aktiv sind, auf sein Hotword reagieren. Daher war es erforderlich, zwischen den beiden Assistenten zu wechseln. In Android 10 kann der Standardassistent gleichzeitig mit dem anderen Assistenten zuhören. Das führt zu einer deutlich besseren Nutzererfahrung.

Apps, die das Mikrofon geöffnet halten

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

Bei Assistant-Apps, die nicht als Standard festgelegt sind, ändert sich das Verhalten unter Android 10 nicht.

Beispiel für die Audio-HAL-Implementierung

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