Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Audio
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Die Audio-Hardware-Abstraktionsschicht (HAL) von Android verbindet die höherwertigen, audiospezifischen Framework-APIs in android.media mit dem zugrunde liegenden Audiotreiber und der zugrunde liegenden Hardware. Dieser Abschnitt enthält Implementierungsanleitungen und Tipps zur Leistungssteigerung.
Die Android-Audioarchitektur definiert, wie Audiofunktionen implementiert werden, und verweist auf den relevanten Quellcode, der an der Implementierung beteiligt ist.
Abbildung 1: Android-Audioarchitektur
-
Anwendungsframework
-
Das Anwendungs-Framework enthält den App-Code, der die android.media APIs zur Interaktion mit der Audiohardware verwendet. Intern ruft dieser Code entsprechende JNI-Bindungsklassen auf, um auf den nativen Code zuzugreifen, der mit der Audiohardware interagiert.
-
JNI
-
Der JNI-Code, der mit android.media verknüpft ist, ruft nativen Code auf niedrigerer Ebene auf, um auf die Audiohardware zuzugreifen. JNI befindet sich unter
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 audiospezifischen Dienste des Mediaservers zuzugreifen.
Der native Framework-Code befindet sich in
frameworks/av/media/libmedia
.
-
Binder IPC
-
Binder-IPC-Proxys erleichtern die Kommunikation über Prozessgrenzen hinweg. Proxys befinden sich in
frameworks/av/media/libmedia
und beginnen mit dem Buchstaben „I“.
-
Mediaserver
-
Der Mediaserver enthält Audiodienste, also den Code, der mit Ihren HAL-Implementierungen interagiert. Der Mediaserver befindet sich unter
frameworks/av/services/audioflinger
.
-
HAL
-
Die HAL definiert die Standardschnittstelle, die von Audiodiensten aufgerufen wird und die Sie implementieren müssen, damit Ihre Audiohardware ordnungsgemäß funktioniert. Weitere Informationen finden Sie in der Audio-HAL-Schnittstelle und in den Kommentaren in den
*.hal
-Dateien des entsprechenden HAL-Versionsverzeichnisses.
-
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 external/tinyalsa
für den Nutzerbereich des Treibers aufgrund der kompatiblen Lizenzierung (die Standard-User-Mode-Bibliothek ist GPL-lizenziert).
-
Natives Android-Audio basierend auf Open SL ES (nicht dargestellt)
-
Diese API wird als Teil des Android NDK freigegeben und befindet sich auf derselben Architekturebene wie android.media.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Audio\n\nAndroid's audio Hardware Abstraction Layer (HAL) connects the higher-level,\naudio-specific framework APIs in [android.media](http://developer.android.com/reference/android/media/package-summary.html) to the underlying audio driver and\nhardware. This section includes implementation instructions and tips for\nimproving performance.\n\n\nAndroid audio architecture defines how audio functionality is implemented and\npoints to the relevant source code involved in the implementation.\n\n\n**Figure 1.** Android audio architecture\n\n\nApplication framework\n:\n The application framework includes the app code, which uses the [android.media](http://developer.android.com/reference/android/media/package-summary.html) APIs to\n interact with audio hardware. Internally, this code calls corresponding JNI glue\n classes to access the native code that interacts with audio hardware.\n\n\nJNI\n:\n The JNI code associated with [android.media](http://developer.android.com/reference/android/media/package-summary.html) calls lower level native code to access audio\n hardware. JNI is located in `frameworks/base/core/jni/` and\n `frameworks/base/media/jni`.\n\n\nNative framework\n:\n The native framework provides a native equivalent to the [android.media](http://developer.android.com/reference/android/media/package-summary.html) package, calling\n Binder IPC proxies to access the audio-specific services of the media server.\n Native framework code is located in `frameworks/av/media/libmedia`.\n\n\nBinder IPC\n:\n Binder IPC proxies facilitate communication over process boundaries. Proxies are\n located in `frameworks/av/media/libmedia` and begin with the letter\n \"I\".\n\n\nMedia server\n:\n The media server contains audio services, which are the actual code that\n interacts with your HAL implementations. The media server is located in\n `frameworks/av/services/audioflinger`.\n\n\nHAL\n:\n The HAL defines the standard interface that audio services call into and that\n you must implement for your audio hardware to function correctly. For more details, refer to the [audio HAL\n interface](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/audio/) and comments in the `*.hal` files of the corresponding HAL version directory.\n\n\nKernel driver\n\n: The audio driver interacts with your hardware and HAL implementation. You can use Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS), or a custom driver (HAL is driver-agnostic). **Note** : If you use ALSA, we recommend\n `external/tinyalsa` for the user portion of the driver because of its\n compatible licensing (the standard user-mode library is GPL-licensed).\n\n\nAndroid native audio based on Open SL ES *(not shown)*\n:\n This API is exposed as part of\n [Android NDK](https://developer.android.com/tools/sdk/ndk/index.html)\n and is at the same architecture level as\n [android.media](http://developer.android.com/reference/android/media/package-summary.html)."]]