Latência de áudio para desenvolvedores de apps

Para a menor latência de áudio possível, recomendamos o uso do Oboe.

Oboe

O Oboe usa áudio nativo e foi criado com base no AAudio para Android 8.1+ e no OpenSL ES para versões mais antigas do Android. Para alcançar a menor latência possível de um dispositivo, defina setPerformanceMode(oboe::PerformanceMode::LowLatency) e setSharingMode(oboe::SharingMode::Exclusive). Consulte o guia de início, README.md e Guia completo para mais informações sobre o Oboe. Consulte o app Soundboard para conferir um exemplo de app que usa a Oboe.

Observação:se você usar AudioTrack para criar streams de áudio de saída em Java para aplicativos sensíveis à latência, use o modo PERFORMANCE_MODE_LOW_LATENCY.

Lista de verificação da implementação

Para usar o áudio nativo do Android:

  1. Faça o download e instale o Android NDK.
  2. Siga o guia de primeiros passos para Oboe.
  3. Chame setPerformanceMode(oboe::PerformanceMode::LowLatency) e setSharingMode(oboe::SharingMode::Exclusive) no builder do Oboe.
  4. Use o tamanho de buffer nativo recomendado e a taxa de amostragem retornada por android.media.AudioManager.getProperty(java.lang.String).

    Observação:o mesmo tamanho de buffer e taxa de amostragem também precisam ser usados para a entrada.

  5. Mantenha os manipuladores de callback curtos, sem uso de CPU excessivo ou bloqueio ilimitado. Evite inversão de prioridade.
  6. Considere usar algoritmos não bloqueadores para se comunicar entre gerenciadores de callback de entrada e saída e entre os gerenciadores de callback e o restante do aplicativo.

Outros recursos

source.android.com

O site source.android.com foi criado principalmente para OEMs que criam dispositivos Android e para fornecedores de SoC que fornecem componentes para esses OEMs.

No entanto, há muitas informações úteis sobre latência neste site. Recomendamos que você o revise. Consulte os artigos em Latência de áudio.

android-ndk

Se você tiver dúvidas sobre como usar o áudio nativo do Android, faça perguntas no grupo de discussão android-ndk.

Informar bugs no Oboe

Se você tiver problemas ao usar a Oboe, registre um bug.

Vídeos

Primeiros passos com o Oboe
Áudio de baixa latência: porque seus ouvidos merecem isso
Conferência de Desenvolvedores Android 2018.
Como ter sucesso no Android: como otimizar um app de áudio para Android
Android Developer Challenge 2018.
Áudio de alto desempenho no Android (Google I/O 2013)
O vídeo todo é sobre latência.
Como criar ótimas experiências multimídia no Android (Google I/O 2014)
Os primeiros 14 minutos são sobre áudio em geral e latência de entrada em particular.
Latência de áudio: tamanhos de buffer (100 Days of Google Dev)
Descreve a relação entre a latência de áudio, os tamanhos de buffer e a programação de tarefas.