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.aidlist der Einstiegspunkt in die API.- Streams sind unidirektional und werden von AudioFlinger verwendet, um Audio über
IStreamOut.aidlundIStreamIn.aidlan die HAL zu senden oder von der HAL zu empfangen. ITelephony.aidlbietet Einstellungen speziell für Telefoniefunktionen.IBluetooth.aidlbietet BT SCO- und HFP-Steuerelemente, die in der HIDL-API aufIPrimaryModulewaren.IConfig.aidlstellt systemweite Konfigurationsparameter bereit.ISoundDose.aidlbietet 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.aidlist der Einstiegspunkt in die API.Descriptor.aidlenthält alle Informationen wie Funktionen und Attribute für eine Effektimplementierung.Capability.aidldefiniert Effektfunktionen, die sich zur Laufzeit nicht ändern.Parameter.aidldefiniert alle Parameter, die von der Effektinstanz unterstützt werden.- Mit
IEffect.aidlwerden 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.