A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Audio
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
L'Hardware Abstraction Layer (HAL) audio di Android collega le API di framework specifiche per l'audio di livello superiore in android.media al driver e all'hardware audio sottostanti. Questa sezione include istruzioni per l'implementazione e suggerimenti per migliorare le prestazioni.
L'architettura audio di Android definisce in che modo viene implementata la funzionalità audio e fa riferimento al codice sorgente pertinente coinvolto nell'implementazione.
Figura 1. Architettura audio Android
-
Framework per applicazioni
-
Il framework dell'applicazione include il codice dell'app, che utilizza le API android.media per interagire con l'hardware audio. All'interno, questo codice chiama le classi di JNI glue corrispondente per accedere al codice nativo che interagisce con l'hardware audio.
-
JNI
-
Il codice JNI associato ad android.media chiama il codice nativo di livello inferiore per accedere all'hardware audio. JNI si trova in
frameworks/base/core/jni/
e
frameworks/base/media/jni
.
-
Framework nativo
-
Il framework nativo fornisce un equivalente nativo al pacchetto android.media, chiamando i proxy IPC Binder per accedere ai servizi audio specifici del media server.
Il codice del framework nativo si trova in
frameworks/av/media/libmedia
.
-
Binder IPC
-
I proxy IPC di Binder facilitano la comunicazione oltre i confini dei processi. I proxy si trovano in
frameworks/av/media/libmedia
e iniziano con la lettera "I".
-
Server multimediale
-
Il media server contiene i servizi audio, ovvero il codice effettivo che interagisce con le implementazioni HAL. Il media server si trova in
frameworks/av/services/audioflinger
.
-
HAL
-
L'HAL definisce l'interfaccia standard chiamata dai servizi audio e che
devi implementare affinché l'hardware audio funzioni correttamente. Per ulteriori dettagli, consulta l'interfaccia HAL audio e i commenti nei file
*.hal
della directory della versione HAL corrispondente.
-
Driver del kernel
-
Il driver audio interagisce con l'hardware e l'implementazione HAL. Puoi
utilizzare Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) o un
driver personalizzato (HAL è indipendente dal driver).
Nota: se utilizzi ALSA, ti consigliamo di usare external/tinyalsa
per la parte utente del driver a causa delle licenze compatibili (la libreria in modalità utente standard è in licenza GPL).
-
Audio nativo Android basato su Open SL ES (non mostrato)
-
Questa API è esposta nell'ambito di
Android NDK
ed è allo stesso livello di architettura di
android.media.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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)."]]