Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Audio

Android Audio HAL-Symbol

Die Audio-Hardware-Abstraktionsschicht (HAL) von Android verbindet die übergeordneten, audio-spezifischen Framework-APIs in android.media mit dem zugrunde liegenden Audiotreiber und der zugrunde liegenden Hardware. Dieser Abschnitt enthält Implementierungsanweisungen und Tipps zur Verbesserung der Leistung.

Die Android-Audioarchitektur definiert, wie die Audiofunktionalität implementiert wird, und verweist auf den relevanten Quellcode, der an der Implementierung beteiligt ist.

Audio-Architektur

Abbildung 1. Android-Audioarchitektur

Anwendungsrahmen
Das Anwendungsframework enthält den App-Code, der die android.media- APIs verwendet, um mit Audio-Hardware zu interagieren. Intern ruft dieser Code entsprechende JNI-Kleberklassen auf, um auf den nativen Code zuzugreifen, der mit Audio-Hardware interagiert.
JNI
Der mit android.media verknüpfte JNI-Code ruft nativen Code niedrigerer Ebene auf, um auf Audio-Hardware zuzugreifen. JNI befindet sich in frameworks/base/core/jni/ und frameworks/base/media/jni .
Natives Framework
Das native Framework bietet ein natives Äquivalent zum Paket android.media und ruft Binder IPC-Proxys auf, um auf die audio-spezifischen Dienste des Medienservers zuzugreifen. Der native Framework-Code befindet sich in frameworks/av/media/libmedia .
Binder IPC
Binder IPC-Proxys erleichtern die Kommunikation über Prozessgrenzen hinweg. Proxies befinden sich in frameworks/av/media/libmedia und beginnen mit dem Buchstaben "I".
Medienserver
Der Medienserver enthält Audiodienste, bei denen es sich um den eigentlichen Code handelt, der mit Ihren HAL-Implementierungen interagiert. Der Medienserver befindet sich in frameworks/av/services/audioflinger .
Hal
Die HAL definiert die Standardschnittstelle, über die Audiodienste aufrufen und die Sie implementieren müssen, damit Ihre Audiohardware ordnungsgemäß funktioniert. Die Audio-HAL-Schnittstellen befinden sich in hardware/libhardware/include/hardware . Einzelheiten finden Sie unter audio.h .
Kernel-Treiber
Der Audiotreiber interagiert mit Ihrer Hardware- und HAL-Implementierung. Sie können Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) oder einen benutzerdefinierten Treiber verwenden (HAL ist treiberunabhängig).

Hinweis : Wenn Sie ALSA verwenden, empfehlen wir aufgrund der kompatiblen Lizenzierung external/tinyalsa für den Benutzerteil des Treibers (die Standardbibliothek für den Benutzermodus ist GPL-lizenziert).

Natives Android-Audio basierend auf Open SL ES (nicht gezeigt)
Diese API wird als Teil von Android NDK verfügbar gemacht und befindet sich auf derselben Architekturstufe wie android.media .