Задержка аудио для разработчиков приложений

Чтобы добиться минимальной задержки аудио, рекомендуем использовать Oboe.

Гобой

Oboe использует встроенный звук и основан на AAudio для Android 8.1 (уровень API 27) и более поздних версий и OpenSL ES. Чтобы добиться минимальной задержки для устройства, задайте значения setPerformanceMode(oboe::PerformanceMode::LowLatency) и setSharingMode(oboe::SharingMode::Exclusive). Подробнее об Oboe можно узнать из руководства по началу работы, README.md и полного руководства. Пример приложения, в котором используется Oboe, можно найти в Soundboard.

Если вы используете AudioTrack для создания выходных аудиопотоков в Java для приложений, чувствительных к задержкам, используйте режим PERFORMANCE_MODE_LOW_LATENCY.

Контрольный список реализации

Чтобы использовать встроенный аудиопроигрыватель Android:

  1. Скачайте и установите Android NDK.
  2. Следуйте руководству по началу работы с Oboe.
  3. Вызовите setPerformanceMode(oboe::PerformanceMode::LowLatency) и setSharingMode(oboe::SharingMode::Exclusive) в конструкторе Oboe.
  4. Используйте рекомендуемый размер буфера и частоту дискретизации, возвращаемые функцией android.media.AudioManager.getProperty(java.lang.String).

  5. Обработчики обратных вызовов должны быть короткими, без пиковой нагрузки на ЦП и неограниченной блокировки. Избегайте инверсии приоритетов.

  6. Рекомендуем использовать неблокирующие алгоритмы для обмена данными между обработчиками обратных вызовов ввода и вывода, а также между обработчиками обратных вызовов и остальной частью приложения.

android-ndk

Если у вас есть вопросы о том, как использовать встроенные аудиофункции Android, присоединитесь к группе обсуждения android-ndk.

Как сообщить об ошибке в Oboe

Если у вас возникли проблемы с использованием Oboe, сообщите нам о них.

Видео