A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Latenza audio per gli sviluppatori di app
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Per la latenza audio più bassa possibile, ti consigliamo di utilizzare Oboe.
Oboe
Oboe utilizza l'audio nativo ed è basato su AAudio per Android 8.1 e versioni successive e OpenSL ES per le versioni precedenti di Android. Per ottenere la latenza più bassa possibile per un dispositivo, imposta setPerformanceMode(oboe::PerformanceMode::LowLatency)
e setSharingMode(oboe::SharingMode::Exclusive)
.
Per ulteriori informazioni su Oboe, consulta la guida introduttiva,
README.md
e la guida completa. Consulta l'app Soundboard per un'app di esempio che utilizza Oboe.
Nota: se utilizzi AudioTrack per creare stream audio di output in Java per applicazioni sensibili alla latenza, utilizza la modalità PERFORMANCE_MODE_LOW_LATENCY
.
Elenco di controllo per l'implementazione
Per utilizzare l'audio nativo di Android:
-
Scarica e installa
Android NDK.
-
Segui la guida introduttiva per Oboe.
-
Chiama
setPerformanceMode(oboe::PerformanceMode::LowLatency)
e setSharingMode(oboe::SharingMode::Exclusive)
in Oboe Builder.
-
Utilizza la dimensione del buffer nativo e la frequenza di campionamento consigliate restituite da
android.media.AudioManager.getProperty(java.lang.String).
Nota:per l'input devono essere utilizzate le stesse dimensioni del buffer e la stessa frequenza di campionamento.
-
Mantieni brevi i gestori dei callout, senza utilizzo intermittente della CPU o blocco illimitato. Evita la inversione della priorità.
-
Valuta la possibilità di utilizzare
algoritmi non bloccanti
per comunicare tra i gestori dei callback di input e di output,
e tra i gestori dei callback e il resto dell'applicazione.
Altre risorse
source.android.com
Il sito source.android.com è progettato principalmente per gli OEM che producono dispositivi Android e per i fornitori di SoC che forniscono componenti a questi OEM.
Tuttavia, questo sito contiene una serie di informazioni utili sulla latenza, quindi ti consigliamo di consultarlo. Consulta gli articoli su
Latenza audio.
android-ndk
Se hai domande su come utilizzare l'audio nativo di Android, puoi rivolgerti al gruppo di discussione
android-ndk.
Segnalare bug su Oboe
Se riscontri problemi con l'utilizzo di Oboe, puoi segnalare un bug.
Video
- Guida introduttiva a Oboe
- Audio a bassa latenza: perché le tue orecchie valgono la pena
- Android Dev Summit 2018.
- Vincere su Android: come ottimizzare un'app audio per Android
- Android Developer Challenge 2018.
- Audio ad alte prestazioni su Android
(Google I/O 2013)
- L'intero video riguarda la latenza.
- Creare esperienze multimediali straordinarie su Android
(Google I/O 2014)
- I primi 14 minuti riguardano l'audio in generale e la latenza di input in particolare.
- Latenza audio: dimensioni dei buffer
(100 giorni di Google Dev)
- Descrivi la relazione tra latenza audio, dimensioni del buffer e pianificazione delle attività.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-03-26 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]