Ab Android 14 wird die Audio HAL-Schnittstelle mit Stable AIDL definiert. Partnern und SoC-Anbietern wird empfohlen, 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.
Bei der AIDL-Implementierung wird die Konfigurationsspezifikation der Audiorichtlinie in die AIDL HAL verschoben. Durch diese Änderung erhält der Audio Policy Manager (APM) die Konfiguration von der HAL, anstatt sie aus der vom Anbieter bereitgestellten XML-Datei zu beziehen.
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 Audio HAL-Verzeichnisstruktur für AIDL finden Sie in der README-Datei für die 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 einseitig und werden von AudioFlinger verwendet, um Audio über
IStreamOut.aidl
undIStreamIn.aidl
an die HAL zu senden oder von ihr zu empfangen. ITelephony.aidl
bietet Einstellungen speziell für Telefonfunktionen.IBluetooth.aidl
bietet BT-SCO- und HFP-Steuerelemente, die in der HIDL API inIPrimaryModule
enthalten waren.IConfig.aidl
bietet systemweite Konfigurationsparameter.ISoundDose.aidl
bietet Unterstützung für die Lautstärke. Weitere Informationen finden Sie unter Lautstärkedosis.- Die neueste Version der Core HAL API, die sich in der Entwicklung befindet, ist in
/hardware/interfaces/audio/aidl/android/hardware/audio/core/
verfügbar. - 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
Im Folgenden sind einige der wichtigsten Schnittstellen von Effects HAL unter Verwendung von AIDL aufgeführt:
IFactory.aidl
ist der Einstiegspunkt in die API.Descriptor.aidl
enthält alle Informationen wie Funktionen und Attribute für die Implementierung eines Effekts.Capability.aidl
definiert Effektfunktionen, die sich während der Laufzeit nicht ändern.- Mit
Parameter.aidl
werden alle Parameter definiert, die von der Effektinstanz unterstützt werden. - Mit
IEffect.aidl
werden bestimmte Effektinstanzen konfiguriert und gesteuert. Effektspezifische Pakete, die nach dem Effekt benannt sind.
Die neueste Version der in der Entwicklung befindlichen Effects HAL API 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.
Gemeinsame HAL
Datenstrukturen und Schnittstellen, die von verschiedenen HALs gemeinsam genutzt werden, z. B. BT HAL, Kern- und Effekte-HALs, befinden sich im Common HAL.
Die neueste Version der Common AIDL HAL, die in der Entwicklung ist, 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, die sich in der Entwicklung befinden, ist in
/system/hardware/interfaces/media/aidl/android/media/audio/common/
verfügbar.Die neueste veröffentlichte Version der stabilen Datentypen befindet sich in
/system/hardware/interfaces/media/aidl_api/android.media.audio.common.types/
.
Audio AIDL HAL API testen
Für die AIDL-Schnittstelle werden neue VTS-Tests bereitgestellt.
Die neue HAL-Version enthält keine Änderungen, die sich auf die Sicherheit auswirken können.