Gleichzeitige Erfassung

Android 10 verbessert das Benutzererlebnis, bei dem mehr als eine aktive Audioaufnahme gleichzeitig erfolgen muss, beispielsweise wenn der Benutzer einen VoIP-Anruf oder einen Videorecorder mit Sprachbefehlen steuern möchte, die von einem Eingabehilfedienst bereitgestellt werden.

Das Audio-Framework implementiert die Richtlinie, die nur bestimmten privilegierten Apps die gleichzeitige Aufnahme mit regulären Apps ermöglicht.

Die Parallelitätsrichtlinie wird implementiert, indem das aufgenommene Audio stummgeschaltet wird, anstatt zu verhindern, dass eine Anwendung mit der Aufnahme beginnt. Dadurch kann das Framework dynamisch auf Änderungen in der Anzahl und Art aktiver Anwendungsfälle für die Erfassung eingehen, ohne zu verhindern, dass eine App mit der Aufnahme beginnt, wenn sie nach Abschluss der Aufnahme durch eine andere App wieder vollen Zugriff auf das Mikrofon erhalten kann.

Die Konsequenz für das Audio-HAL und das Audio-Subsystem besteht darin, dass sie mehrere aktive Eingabestreams gleichzeitig unterstützen müssen, auch wenn in manchen Fällen nur ein Stream einem aktiven Client nicht stilles Audio bereitstellt.

CDD-Anforderungen

Die Anforderungen für die gleichzeitige Erfassungsunterstützung finden Sie im CDD .

Erfassen Sie Situationen aus Audio-HAL

Ein gleichzeitiges Erfassungsszenario kann zu unterschiedlichen Situationen hinsichtlich der Anzahl aktiver Eingabeströme, der Auswahl des Eingabegeräts oder der Vorverarbeitungskonfiguration führen.

Parallelität kann zwischen Folgendem auftreten:

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

Gleichzeitige Aktivität von AP-Eingabeströmen

Die Audiorichtlinien-Konfigurationsdatei 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 eine Instanz jedes Eingabeprofils ( mixPort der sink ) unterstützen, das in der geöffneten und aktiven Konfigurationsdatei aufgeführt ist.

Geräteauswahl

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

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

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

Wenn eine Inkompatibilität vorliegt (z. B. zwei Geräte teilen sich dieselbe digitale Audioschnittstelle oder dasselbe Back-End), muss der Audio-HAL auswählen, welcher Stream die Geräteauswahl steuert.

In diesem Fall:

  • Der resultierende Zustand muss konsistent sein und die gleiche 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 durch die Audio-HAL eine Prioritätsreihenfolge zwischen aktiven Anwendungsfällen definiert ist, befolgen Sie dieselbe Reihenfolge wie in source_priority() in frameworks/av/services/audiopolicy/common/include/policy.h

Vorverarbeitungsauswahl

Das Audio-Framework kann mithilfe der 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. Allerdings kann es bei der Aktivierung und Deaktivierung des Anwendungsfalls zu Überschneidungen kommen, die dazu führen, dass zwei gleichzeitig aktive Prozesse (z. B. zwei Instanzen des Echokompensators) auf demselben Eingabestream ausgeführt werden. In diesem Fall wählt die HAL-Implementierung aus, welche Anfrage akzeptiert wird; Es verfolgt die aktiven Anforderungen und stellt den korrekten Status wieder her, wenn einer der Prozesse deaktiviert wird.

Wenn mehrere Capture-Streams gleichzeitig aktiv sind, können unterschiedliche Vorverarbeitungsanforderungen auf verschiedenen Streams ausgeführt werden.

Die HAL- und Audio-Subsystem-Implementierungen sollten die Anwendung unterschiedlicher Vorverarbeitungen auf verschiedene Streams ermöglichen, selbst wenn sie dasselbe Eingabegerät verwenden. Das heißt, die Vorverarbeitung sollte nach dem Demuxen der Streams von der primären Erfassungsquelle angewendet werden.

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

Gleichzeitiger Sprachanruf und Erfassung vom AP

Die Erfassung vom 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 zur gleichzeitigen Erfassung, es ist jedoch sinnvoll, die Richtlinien für dieses Szenario zu erwähnen.

Während eines Anrufs sind zwei verschiedene Arten der Erfassung durch den AP erforderlich.

Erfassen Sie Anruf RX und TX

Die Erfassung von Anruf RX und TX 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 sink ) mit einer verfügbaren Route vom Gerät AudioDevice.IN_TELEPHONY_RX verfügbar gemacht werden.

Wenn ein Anruf verbunden ist (Audiomodus ist AudioMode.IN_CALL ), sollte es möglich sein, mindestens einen aktiven Aufnahmestream vom Gerät AudioDevice.IN_TELEPHONY_RX zu haben.

Erfassung von Eingabegeräten, wenn ein Anruf aktiv ist

Wenn ein Anruf aktiv ist (Audiomodus ist AudioMode.IN_CALL ), sollte es möglich sein, Eingabeströme vom AP zu öffnen und zu aktivieren, wie im Abschnitt „Gleichzeitige Aktivität von AP-Eingabeströmen“ angegeben.

Allerdings sollte die Priorität für die Geräteauswahl und Vorverarbeitung immer vom Sprachanruf bestimmt werden, falls es zu einem Konflikt mit den Anforderungen der AP-Eingabeströme kommt.

Gleichzeitige Erfassung von DSP und AP

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

Dies sollte sich im Flag für gleichzeitige Erfassung widerspiegeln, das vom Sound-Trigger-HAL über den Implementierungsdeskriptor gemeldet wird: ISoundTriggerHw.Properties.concurrentCapture = true .

Die Audio-HAL sollte auch ein spezifisches Profil für die Hotword-Erfassung bereitstellen und eingeben, das durch das Flag AudioInputFlag.HW_HOTWORD identifiziert wird. 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 vom Sound-Trigger-HAL geladen werden können.

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

Implikation für Assistant-Implementierungen

Anforderungen an die Datennutzung und Benutzerbenachrichtigung

Da die gleichzeitige Nutzung von Mikrofonen bei Missbrauch dazu führen kann, dass private Benutzerdaten verloren gehen, müssen die folgenden Bedingungen und Garantien auf die privilegierten vorinstallierten Apps angewendet werden, die die Rolle des Assistenten übernehmen möchten.

  • Über das Mikrofon erfasste Daten sollten das Gerät nicht verlassen, es sei denn, der Benutzer interagiert mit dem Assistenten. Zum Beispiel, nachdem das Hotword ausgelöst wurde.
  • Anwendungen, die gleichzeitig lauschen, sollten dem Benutzer visuelle Hinweise geben, nachdem das Hotword erkannt wurde. Dies hilft Benutzern zu verstehen, dass weitere Gespräche über eine andere App, wie z. B. Assistant, laufen würden.
  • Benutzer sollten die Möglichkeit haben, das Mikrofon oder die Auslöser des Assistenten auszuschalten.
  • Wenn Audioaufzeichnungen gespeichert werden, sollten Benutzer jederzeit die Möglichkeit haben, auf die Aufzeichnungen zuzugreifen, sie zu überprüfen und zu löschen.

Funktionsverbesserungen für Android 10

Assistenten blockieren sich nicht gegenseitig

Wenn unter Android 9 oder niedriger zwei ständig aktive Assistenten auf dem Gerät vorhanden sind, wartet möglicherweise nur einer von ihnen auf sein Hotword. Daher bestand die Notwendigkeit, zwischen den beiden Assistenten zu wechseln. In Android 10 kann der Standardassistent gleichzeitig mit dem anderen Assistenten zuhören. Dies führt zu einem viel reibungsloseren Erlebnis für Benutzer mit beiden Assistenten.

Apps halten das Mikrofon offen

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

Bei nicht standardmäßigen Assistenten-Apps gibt es für Android 10 keine Verhaltensänderung.

Beispiel-Audio-HAL-Implementierung

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