Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Задержка звука для разработчиков приложений
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Для минимально возможной задержки звука мы рекомендуем использовать Гобой .
Гобой
Гобой использует собственный звук и создан на основе AAudio для Android 8.1+ и OpenSL ES для более старых версий Android. Чтобы добиться минимально возможной задержки для устройства, установите setPerformanceMode(oboe::PerformanceMode::LowLatency)
и setSharingMode(oboe::SharingMode::Exclusive)
. Дополнительную информацию о гобое см. в руководстве «Приступая к работе» , README.md
и полном руководстве . Обратитесь к приложению Soundboard для примера приложения с использованием гобоя.
Примечание. Если вы используете AudioTrack для создания выходных аудиопотоков в Java для приложений, чувствительных к задержке, используйте режим PERFORMANCE_MODE_LOW_LATENCY
.
Контрольный список реализации
Чтобы использовать собственный звук Android:
- Загрузите и установите Android NDK .
- Следуйте руководству по началу работы с гобоем.
- Вызовите
setPerformanceMode(oboe::PerformanceMode::LowLatency)
и setSharingMode(oboe::SharingMode::Exclusive)
в конструкторе гобоя. - Используйте рекомендуемый размер собственного буфера и частоту дискретизации, возвращаемые android.media.AudioManager.getProperty(java.lang.String) .
Примечание. Для ввода также следует использовать тот же размер буфера и частоту дискретизации.
- Делайте обработчики обратных вызовов короткими, без чрезмерной загрузки ЦП и неограниченных блокировок. Избегайте инверсии приоритетов.
- Рассмотрите возможность использования неблокирующих алгоритмов для взаимодействия между обработчиками обратного вызова ввода и вывода, а также между обработчиками обратного вызова и остальной частью вашего приложения.
Другие источники
источник.android.com
Сайт source.android.com в первую очередь предназначен для OEM-производителей, создающих устройства Android, и поставщиков SoC, которые поставляют компоненты этим OEM-производителям.
Однако на этом сайте есть много полезной информации о задержке, поэтому вы можете просмотреть ее. См. статьи в разделе «Задержка звука».
Android-NDK
Если у вас есть вопросы о том, как использовать собственный звук Android, вы можете задать их в дискуссионной группе android-ndk .
Сообщать об ошибках в Гобое
Если у вас возникли проблемы с использованием гобоя, вы можете сообщить об ошибке .
Видео
- Начало работы с гобоем
- Аудио с низкой задержкой — потому что ваши уши того стоят
- Саммит Android-разработчиков 2018.
- Выигрыш на Android: как оптимизировать аудиоприложение для Android
- Конкурс разработчиков Android 2018.
- Высококачественный звук на Android (Google I/O 2013)
- Все видео посвящено задержке.
- Создание отличных мультимедийных возможностей на Android (Google I/O 2014)
- Первые 14 минут посвящены звуку в целом и задержке ввода в частности.
- Задержка звука: размеры буфера (100 дней Google Dev)
- Описывает взаимосвязь между задержкой звука, размерами буфера и планированием задач.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-03-26 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-03-26 UTC."],[],[],null,["# Audio latency for app developers\n\nFor the lowest possible audio latency, we recommend you use [Oboe](https://developer.android.com/games/sdk/oboe).\n\nOboe\n----\n\n[Oboe](https://github.com/google/oboe) uses native audio and is built\non AAudio for Android 8.1+ and OpenSL ES for older versions of Android. To achieve the lowest\npossible latency for a device, set `setPerformanceMode(oboe::PerformanceMode::LowLatency)`\nand `setSharingMode(oboe::SharingMode::Exclusive)`.\nSee the [Getting started guide](https://github.com/google/oboe/blob/main/docs/GettingStarted.md),\n[`README.md`](https://github.com/google/oboe/blob/main/README.md),\nand [Full guide](https://github.com/google/oboe/blob/main/docs/FullGuide.md) for more\ninformation on Oboe. Refer to the [Soundboard app](https://github.com/google/oboe/tree/main/samples/SoundBoard)\nfor a sample app using Oboe.\n\n**Note:** If you use [AudioTrack](https://developer.android.com/reference/android/media/AudioTrack)\nfor creating output audio streams in Java for latency sensitive applications, use the [`PERFORMANCE_MODE_LOW_LATENCY`](https://developer.android.com/reference/android/media/AudioTrack#PERFORMANCE_MODE_LOW_LATENCY)\nmode.\n\n\u003cbr /\u003e\n\nImplementation checklist\n------------------------\n\nTo use Android native audio:\n\n1. Download and install the [Android NDK](https://developer.android.com/tools/sdk/ndk/index.html).\n2. Follow the [Getting started guide](https://github.com/google/oboe/blob/main/docs/GettingStarted.md) for Oboe.\n3. Call `setPerformanceMode(oboe::PerformanceMode::LowLatency)` and `setSharingMode(oboe::SharingMode::Exclusive)` on the Oboe builder.\n4. Use the recommended native buffer size and sample rate returned by [android.media.AudioManager.getProperty(java.lang.String)](http://developer.android.com/reference/android/media/AudioManager.html#getProperty(java.lang.String)).\n\n **Note:** The same buffer size and sample rate should also be used for input.\n5. Keep your callback handlers short, without bursty CPU usage or unbounded blocking. Avoid [priority inversion.](/docs/core/audio/avoiding_pi)\n6. Consider using [non-blocking algorithms](/docs/core/audio/avoiding_pi#nonBlockingAlgorithms) to communicate between input and output callback handlers, and between the callback handlers and the rest of your application.\n\nOther resources\n---------------\n\n### source.android.com\n\n\nThe site [source.android.com](/)\nis primarily designed for OEMs building Android\ndevices, and the SoC vendors who supply components to these OEMs.\n\n\nHowever, there is a wealth of useful information about latency at this site, so\nyou may want to review it. See the articles at\n[Audio latency.](/docs/core/audio/latency/latency)\n\n### android-ndk\n\n\nIf you have questions about how to use Android native audio, you can ask at the discussion group\n[android-ndk](https://groups.google.com/forum/#!forum/android-ndk).\n\n### Report bugs on Oboe\n\n\nIf you have issues using Oboe, you can\n[file a bug](https://github.com/google/oboe/issues).\n\n### Videos\n\n[Getting started with Oboe](https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_duWv9IPNvx9YBudNMmLSa)\n[Low Latency Audio - Because Your Ears Are Worth It](https://www.youtube.com/watch?v=8vOf_fDtur4)\n: Android Dev Summit 2018.\n\n[Winning on Android - How to optimize an Android audio app](https://www.youtube.com/watch?v=tWBojmBpS74)\n: Android Developer Challenge 2018.\n\n[High performance audio on Android](https://youtu.be/d3kfEeMZ65c)\n(Google I/O 2013)\n: The whole video is about latency.\n\n[Building great multi-media experiences on Android](https://youtu.be/92fgcUNCHic)\n(Google I/O 2014)\n: The first 14 minutes are about audio in general and input latency in particular.\n\n[Audio latency: buffer sizes](https://youtu.be/PnDK17zP9BI)\n(100 Days of Google Dev)\n: Describes the relationship between audio latency, buffer sizes, and task scheduling."]]