Для минимизации задержки звука мы рекомендуем использовать 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:
- Скачайте и установите Android NDK .
- Следуйте инструкциям по началу работы с гобоем.
- Вызовите
setPerformanceMode(oboe::PerformanceMode::LowLatency)иsetSharingMode(oboe::SharingMode::Exclusive)в построителе Oboe. Используйте рекомендуемый собственный размер буфера и частоту дискретизации, возвращаемые функцией
android.media.AudioManager.getProperty(java.lang.String).Не допускайте чрезмерного использования ЦП или неограниченной блокировки обработчиков обратных вызовов. Избегайте инверсии приоритетов .
Рекомендуется использовать неблокирующие алгоритмы для обмена данными между обработчиками обратных вызовов на входе и выходе, а также между обработчиками обратных вызовов и остальной частью вашего приложения.
android-ndk
Если у вас есть вопросы о том, как использовать встроенные функции звука в Android, присоединяйтесь к дискуссионной группе android-ndk .
Сообщайте об ошибках в Oboe
Если у вас возникли проблемы с использованием Oboe, сообщите об ошибке .
Видео
- Начало работы с гобоем
- Аудио с низкой задержкой — потому что ваши уши этого заслуживают (Android Dev Summit 2018)
- Как добиться успеха на Android — как оптимизировать аудиоприложение для Android (Конкурс разработчиков Android 2018)
- Высококачественное воспроизведение звука на Android (Google I/O 2013)
- Создание великолепных мультимедийных приложений для Android (Google I/O 2014)
- Задержка звука: размеры буфера (100 дней Google Dev)