Ab Android 14 wird die Audio-HAL-Schnittstelle mit Stable AIDL definiert. Partner und SoC-Anbieter werden aufgefordert, ihre Audio-HAL neu zu implementieren, um eine AIDL-Schnittstelle bereitzustellen.
Durch die Erweiterung der libaudiohal
Bibliothek wird Framework-Unterstützung für AIDL HAL hinzugefügt. Mit der AIDL-Implementierung wird die Audiorichtlinien-Konfigurationsspezifikation nach AIDL HAL verschoben. Mit dieser Änderung erhält der Audio Policy Manager (APM) die Konfiguration vom HAL, anstatt sie aus der vom Anbieter bereitgestellten XML-Datei zu nutzen.
Audio AIDL HAL API
In diesem Abschnitt werden die Kern-, Effekt- und allgemeinen HAL-APIs für AIDL beschrieben.
Verwenden Sie die Standardimplementierung der AIDL-API unter /hardware/interfaces/audio/aidl/default/
als Referenz, wenn Sie neue Versionen von Audio-HALs implementieren, die mit Kernel-Treibern interagieren.
Informationen zur Audio-HAL-Verzeichnisstruktur für AIDL finden Sie in der Audio-HAL-README-Datei .
Kern-HAL
Einige der wichtigsten Schnittstellen von Core HAL , die AIDL verwenden, sind wie folgt:
-
IModule.aidl
ist der Einstiegspunkt in die API. - Streams sind unidirektional und werden von AudioFlinger verwendet, um Audio über
IStreamOut.aidl
undIStreamIn.aidl
an und von der HAL zu senden oder zu empfangen. -
ITelephony.aidl
bietet Steuerelemente speziell für Telefonfunktionen. -
IBluetooth.aidl
stellt BT SCO- und HFP-Steuerelemente bereit, die sich aufIPrimaryModule
in der HIDL-API befanden. -
IConfig.aidl
stellt systemweite Konfigurationsparameter bereit. -
ISoundDose.aidl
bietet Unterstützung für die Schalldosis. Weitere Informationen finden Sie unter Schalldosis . - Die neueste Version der Core HAL API in Entwicklung befindet sich in
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
. - Die neueste veröffentlichte Version der Core HAL API befindet sich in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/
.
Effekte HAL
Einige der wichtigsten Schnittstellen von Effects HAL, die AIDL verwenden, sind wie folgt:
-
IFactory.aidl
ist der Einstiegspunkt in die API. -
Descriptor.aidl
enthält alle Informationen wie Fähigkeiten und Attribute für eine Effektimplementierung. -
Capability.aidl
definiert Effektfunktionen, die sich zur Laufzeit nicht ändern. -
Parameter.aidl
definiert alle von der Effektinstanz unterstützten Parameter. -
IEffect.aidl
wird zum Konfigurieren und Steuern bestimmter Effektinstanzen verwendet. Effektspezifische Parzellen, benannt nach dem Effekt.
Die neueste Version der Effects HAL API in Entwicklung befindet sich in
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.Die neueste veröffentlichte Version der Effects HAL API befindet sich in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect
.
Weitere Informationen finden Sie unter Audioeffekte .
Gemeinsames HAL
Datenstrukturen und Schnittstellen, die von verschiedenen HALs gemeinsam genutzt werden, z. B. BT-HALs, Kern- und Effekt-Audio-HALs, befinden sich im Common HAL.
Die neueste Version des Common AIDL HAL in der Entwicklung befindet sich in
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.Die neueste veröffentlichte Version der Common HAL API befindet sich in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
.
Gängige stabile Datentypen
Stabile Datenstrukturdefinitionen werden sowohl von HALs als auch vom Framework verwendet.
Die neueste Version der stabilen Datentypen in der Entwicklung befindet sich in
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.Die neueste veröffentlichte Version der stabilen Datentypen befindet sich in
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Testen der Audio AIDL HAL API
Für die AIDL-Schnittstelle werden neue VTS- Tests bereitgestellt.
In der neuen HAL-Version gibt es keine Änderungen, die sich auf die Sicherheit auswirken können.