A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Latencia de audio para desarrolladores de apps
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Para obtener la latencia de audio más baja posible, te recomendamos que uses Oboe.
Oboe
Oboe usa audio nativo y se compila en AAudio para Android 8.1 y versiones posteriores, y en OpenSL ES para versiones anteriores de Android. Para lograr la latencia más baja posible para un dispositivo, establece setPerformanceMode(oboe::PerformanceMode::LowLatency)
y setSharingMode(oboe::SharingMode::Exclusive)
.
Consulta la Guía de introducción, README.md
y la Guía completa para obtener más información sobre Oboe. Consulta la app de Soundboard para ver una app de ejemplo que usa Oboe.
Nota: Si usas AudioTrack para crear flujos de audio de salida en Java para aplicaciones sensibles a la latencia, usa el modo PERFORMANCE_MODE_LOW_LATENCY
.
Lista de tareas para la implementación
Para usar audio nativo de Android, haz lo siguiente:
-
Descarga e instala el NDK de Android.
-
Sigue la guía de introducción para Oboe.
-
Llama a
setPerformanceMode(oboe::PerformanceMode::LowLatency)
y setSharingMode(oboe::SharingMode::Exclusive)
en el compilador de Oboe.
-
Usa el tamaño de búfer nativo y la tasa de muestreo recomendados que muestra android.media.AudioManager.getProperty(java.lang.String).
Nota: Se debe usar el mismo tamaño de búfer y la misma tasa de muestreo para la entrada.
-
Mantén los controladores de devolución de llamada breves, sin un uso de CPU intermitente ni bloqueos ilimitados. Evita la inversión de prioridad.
-
Considera usar algoritmos no bloqueantes para comunicarte entre los controladores de devolución de llamada de entrada y salida, y entre los controladores de devolución de llamada y el resto de la aplicación.
Otros recursos
source.android.com
El sitio source.android.com está diseñado principalmente para los OEM que compilan dispositivos Android y los proveedores de SoC que suministran componentes a estos OEM.
Sin embargo, en este sitio hay una gran cantidad de información útil sobre la latencia, por lo que te recomendamos que la revises. Consulta los artículos sobre latencia de audio.
android-ndk
Si tienes preguntas sobre cómo usar el audio nativo de Android, puedes hacerlas en el grupo de debate android-ndk.
Cómo informar errores en Oboe
Si tienes problemas para usar Oboe, puedes informar un error.
Videos
- Cómo comenzar a usar Oboe
- Audio de baja latencia: porque tus oídos lo merecen
- Android Dev Summit 2018.
- Winning on Android: Cómo optimizar una app de audio para Android
- Android Developer Challenge 2018.
- Audio de alto rendimiento en Android (Google I/O 2013)
- Todo el video trata sobre la latencia.
- Cómo crear experiencias multimedia increíbles en Android (Google I/O 2014)
- Los primeros 14 minutos tratan sobre el audio en general y la latencia de entrada en particular.
- Latencia de audio: Tamaños de búfer (100 días de Google Dev)
- Describe la relación entre la latencia de audio, los tamaños de búfer y la programación de tareas.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-03-26 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]