Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Аудио
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Уровень абстракции оборудования для аудио Android (HAL) соединяет высокоуровневые API-интерфейсы аудиофреймворка в android.media с базовым аудиодрайвером и оборудованием. В этом разделе содержатся инструкции по внедрению и советы по улучшению производительности.
Архитектура звука Android определяет, как реализуются функции звука, и указывает на соответствующий исходный код, задействованный в реализации.

Рисунок 1. Архитектура звука Android
- Рамка приложения
- Каркас приложения включает код приложения, который использует API android.media для взаимодействия с аудиооборудованием. Внутри этот код вызывает соответствующие классы JNI Glue для доступа к собственному коду, который взаимодействует с аудиооборудованием.
- JNI
- Код JNI, связанный с android.media, вызывает низкоуровневый собственный код для доступа к аудиооборудованию. JNI находится в
frameworks/base/core/jni/
и frameworks/base/media/jni
. - Собственный фреймворк
- Собственный фреймворк предоставляет собственный эквивалент пакета android.media , вызывая прокси Binder IPC для доступа к аудиоспецифичным службам медиасервера. Собственный код фреймворка находится в
frameworks/av/media/libmedia
. - Связующее IPC
- Прокси Binder IPC облегчают коммуникацию через границы процессов. Прокси находятся в
frameworks/av/media/libmedia
и начинаются с буквы "I". - Медиа сервер
- Медиасервер содержит аудиосервисы, которые являются фактическим кодом, взаимодействующим с вашими реализациями HAL. Медиасервер находится в
frameworks/av/services/audioflinger
. - ХЭЛ
- HAL определяет стандартный интерфейс, который вызывают аудиосервисы и который вы должны реализовать для корректной работы вашего аудиооборудования. Для получения более подробной информации см. аудиоинтерфейс HAL и комментарии в файлах
*.hal
соответствующего каталога версий HAL. - Драйвер ядра
- Аудиодрайвер взаимодействует с вашим оборудованием и реализацией HAL. Вы можете использовать Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) или пользовательский драйвер (HAL не зависит от драйвера).
Примечание : если вы используете ALSA, мы рекомендуем external/tinyalsa
для пользовательской части драйвера из-за ее совместимого лицензирования (стандартная библиотека пользовательского режима имеет лицензию GPL).
- Собственный звук Android на основе Open SL ES (не показано)
- Этот API представлен как часть Android NDK и находится на том же уровне архитектуры, что и android.media .
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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)."]]