A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Latência de áudio para desenvolvedores de apps
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
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:
-
Faça o download e instale o
Android NDK.
-
Siga o guia de primeiros passos
para Oboe.
-
Chame
setPerformanceMode(oboe::PerformanceMode::LowLatency)
e setSharingMode(oboe::SharingMode::Exclusive)
no builder do Oboe.
-
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.
-
Mantenha os manipuladores de callback curtos, sem uso de CPU excessivo ou bloqueio ilimitado. Evite
inversão de prioridade.
-
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.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-03-26 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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."]]