À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Son
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
La couche d'abstraction matérielle (HAL) audio d'Android connecte les API de framework de niveau supérieur spécifiques à l'audio dans android.media au pilote audio et au matériel sous-jacents. Cette section inclut des instructions d'implémentation et des conseils pour améliorer les performances.
L'architecture audio Android définit la manière dont la fonctionnalité audio est implémentée et pointe vers le code source pertinent impliqué dans l'implémentation.
Figure 1 : Architecture audio Android
-
Framework d'application
-
Le framework d'application inclut le code de l'application, qui utilise les API android.media pour interagir avec le matériel audio. En interne, ce code appelle les classes de liaison JNI correspondantes pour accéder au code natif qui interagit avec le matériel audio.
-
JNI
-
Le code JNI associé à android.media appelle le code natif de niveau inférieur pour accéder au matériel audio. JNI se trouve dans
frameworks/base/core/jni/
et frameworks/base/media/jni
.
-
Framework natif
-
Le framework natif fournit un équivalent natif au package android.media, en appelant des proxys IPC Binder pour accéder aux services spécifiques à l'audio du serveur multimédia.
Le code du framework natif se trouve dans
frameworks/av/media/libmedia
.
-
IPC de classeur
- Les proxys IPC de liaison facilitent la communication au-delà des limites de processus. Les proxys se trouvent dans
frameworks/av/media/libmedia
et commencent par la lettre "I".
-
Serveur multimédia
-
Le serveur multimédia contient des services audio, qui sont le code réel qui interagit avec vos implémentations HAL. Le serveur multimédia se trouve dans
frameworks/av/services/audioflinger
.
-
HAL
-
Le HAL définit l'interface standard que les services audio appellent et que vous devez implémenter pour que votre matériel audio fonctionne correctement. Pour en savoir plus, consultez l'interface HAL audio et les commentaires dans les fichiers
*.hal
du répertoire de la version HAL correspondante.
-
Pilote de kernel
-
Le pilote audio interagit avec votre matériel et l'implémentation HAL. Vous pouvez utiliser l'architecture audio Linux avancée (ALSA), Open Sound System (OSS) ou un pilote personnalisé (HAL est indépendant des pilotes).
Remarque: Si vous utilisez ALSA, nous vous recommandons d'utiliser external/tinyalsa
pour la partie utilisateur du pilote en raison de sa licence compatible (la bibliothèque standard en mode utilisateur est sous licence GPL).
-
Audio natif Android basé sur OpenSL ES (non illustré)
-
Cette API est exposée dans le NDK Android et se trouve au même niveau d'architecture que android.media.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)."]]