Ab Android 14 wird die Audio-HAL-Schnittstelle mit Stable AIDL definiert. Partner und SoC-Anbieter werden aufgefordert, ihr Audio-HAL neu zu implementieren, um eine AIDL-Schnittstelle bereitzustellen.
Durch Erweitern der libaudiohal
-Bibliothek wird Framework-Unterstützung für AIDL-HAL hinzugefügt.
Bei der AIDL-Implementierung wird die Spezifikation der Audiokonfiguration in die AIDL-HAL verschoben. Mit dieser Änderung ruft der Audio Policy Manager (APM) die Konfiguration aus dem HAL ab, anstatt sie aus der vom Anbieter bereitgestellten XML-Datei zu verwenden.
Audio AIDL HAL API
In diesem Abschnitt werden die Core-, Effects- und Common-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 Kerneltreibern interagieren.
Informationen zur Verzeichnisstruktur des Audio-HAL für AIDL finden Sie in der README-Datei für das Audio-HAL.
Core HAL
Einige der wichtigsten Schnittstellen der Core-HAL, die AIDL verwenden, sind:
IModule.aidl
ist der Einstiegspunkt in die API.- Streams sind unidirektional und werden von AudioFlinger verwendet, um Audio über
IStreamOut.aidl
undIStreamIn.aidl
an die HAL zu senden oder von der HAL zu empfangen. ITelephony.aidl
bietet Einstellungen speziell für Telefoniefunktionen.IBluetooth.aidl
bietet BT SCO- und HFP-Steuerelemente, die in der HIDL-API aufIPrimaryModule
waren.IConfig.aidl
stellt systemweite Konfigurationsparameter bereit.ISoundDose.aidl
bietet Unterstützung für die Schallbelastung. Weitere Informationen finden Sie unter Schalldosis.- Die neueste Version der Core HAL API in der 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/
.
HAL für Effekte
Einige der wichtigsten Schnittstellen der Effects HAL mit AIDL sind:
IFactory.aidl
ist der Einstiegspunkt in die API.Descriptor.aidl
enthält alle Informationen wie Funktionen und Attribute für eine Effektimplementierung.Capability.aidl
definiert Effektfunktionen, die sich zur Laufzeit nicht ändern.Parameter.aidl
definiert alle Parameter, die von der Effektinstanz unterstützt werden.- Mit
IEffect.aidl
werden bestimmte Effektinstanzen konfiguriert und gesteuert. Effektspezifische Parcelables, die nach dem Effekt benannt sind.
Die aktuelle Version der Effects HAL API in der Entwicklung befindet sich in
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/
.Die aktuelle 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.
Gemeinsame HAL
Datenstrukturen und Schnittstellen, die von verschiedenen HALs wie BT HAL, Core- und Effects-Audio-HALs gemeinsam genutzt werden, befinden sich im Common HAL.
Die neueste Version der Common AIDL HAL in der Entwicklung befindet sich in
/hardware/interfaces/audio/aidl/android/hardware/audio/common/
.Die aktuelle veröffentlichte Version der Common HAL API ist in
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.common/current/android/hardware/audio/common/
verfügbar.
Häufige stabile Datentypen
Sowohl HALs als auch das Framework verwenden stabile Definitionen der Datenstruktur.
Die aktuelle Version der stabilen Datentypen in der Entwicklung finden Sie unter
/system/hardware/interfaces/media/aidl/android/media/audio/common/
.Die neueste veröffentlichte Version der stabilen Datentypen finden Sie unter
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Audio-AIDL-HAL-API testen
Für die AIDL-Schnittstelle sind neue VTS-Tests verfügbar.
Die neue HAL-Version enthält keine Änderungen, die sich auf die Sicherheit auswirken können.