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

Для минимизации задержки звука мы рекомендуем использовать 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. Следуйте инструкциям по началу работы с гобоем.
  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, сообщите об ошибке .

Видео