In Android 14 und höher wird die Audio-HAL-Schnittstelle mit Stable AIDLdefiniert. Partner und SoC-Anbieter werden aufgefordert, ihre Audio-HAL neu zu implementieren, um eine AIDL-Schnittstelle bereitzustellen.
Durch das Erweitern der libaudiohal-Bibliothek wird die Framework-Unterstützung für AIDL HAL hinzugefügt.
Mit der AIDL-Implementierung wird die Spezifikation der Audiopolicy-Konfiguration in die AIDL HAL verschoben. Mit dieser Änderung ruft der Audio Policy Manager (APM) die Konfiguration von der 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.
Die Verzeichnisstruktur der Audio-HAL für AIDL finden Sie in der README-Datei der Audio-HAL.
Core HAL
Einige der wichtigsten Schnittstellen der Core HAL, mit AIDL 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 ihr zu empfangen. ITelephony.aidlbietet Steuerelemente speziell für Telefoniefunktionen.IBluetooth.aidlbietet BT SCO- und HFP-Steuerelemente, die in der HIDL API inIPrimaryModuleenthalten waren.IConfig.aidlbietet systemweite Konfigurationsparameter.ISoundDose.aidlbietet Unterstützung für die Schalldosis. Weitere Informationen finden Sie unter Schalldosis.- Die neueste Version der Core HAL API in der Entwicklung finden Sie unter
/hardware/interfaces/audio/aidl/android/hardware/audio/core/. - Die neueste veröffentlichte Version der Core HAL API finden Sie unter
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.core/.
Effects HAL
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.IEffect.aidlwird verwendet, um bestimmte Effektinstanzen zu konfigurieren und zu steuern.Effektspezifische Parcelables, die nach dem Effekt benannt sind.
Die neueste Version der Effects HAL API in der Entwicklung finden Sie unter
/hardware/interfaces/audio/aidl/android/hardware/audio/effect/.Die neueste veröffentlichte Version der Effects HAL API finden Sie unter
/hardware/interfaces/audio/aidl/aidl_api/android.hardware.audio.effect.
Weitere Informationen finden Sie unter Audioeffekte.
Common HAL
Datenstrukturen und Schnittstellen, die von verschiedenen HALs gemeinsam genutzt werden, z. B. BT HAL, Core- und Effects-Audio-HALs, befinden sich in der Common HAL.
Die neueste Version der Common AIDL HAL in der Entwicklung finden Sie unter
/hardware/interfaces/audio/aidl/android/hardware/audio/common/.Die neueste veröffentlichte Version der Common HAL API finden Sie unter
/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 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.
In der neuen HAL-Version gibt es keine Änderungen, die sich auf die Sicherheit auswirken können.