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 auf- IPrimaryModulewaren.
- 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.
