À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Latence audio pour les développeurs d'applications
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Pour obtenir la latence audio la plus faible possible, nous vous recommandons d'utiliser Oboe.
Oboe
Oboe utilise l'audio natif et est basé sur AAudio pour Android 8.1 et versions ultérieures, et sur OpenSL ES pour les versions antérieures d'Android. Pour obtenir la latence la plus faible possible pour un appareil, définissez setPerformanceMode(oboe::PerformanceMode::LowLatency)
et setSharingMode(oboe::SharingMode::Exclusive)
.
Pour en savoir plus sur Oboe, consultez le guide de démarrage, README.md
et le guide complet. Pour obtenir un exemple d'application utilisant Oboe, consultez l'application Soundboard.
Remarque:Si vous utilisez AudioTrack pour créer des flux audio de sortie en Java pour des applications sensibles à la latence, utilisez le mode PERFORMANCE_MODE_LOW_LATENCY
.
Checklist d'implémentation
Pour utiliser l'audio natif Android:
-
Téléchargez et installez le NDK Android.
-
Suivez le guide de démarrage pour Oboe.
-
Appelez
setPerformanceMode(oboe::PerformanceMode::LowLatency)
et setSharingMode(oboe::SharingMode::Exclusive)
sur le compilateur Oboe.
-
Utilisez la taille de mémoire tampon et le taux d'échantillonnage natifs recommandés renvoyés par android.media.AudioManager.getProperty(java.lang.String).
Remarque:La même taille de tampon et le même taux d'échantillonnage doivent également être utilisés pour l'entrée.
-
Réduisez la longueur de vos gestionnaires de rappels, sans utilisation ponctuelle du processeur ni blocage illimité. Évitez l'inversion de priorité.
-
Envisagez d'utiliser des algorithmes non bloquants pour communiquer entre les gestionnaires de rappel d'entrée et de sortie, et entre les gestionnaires de rappel et le reste de votre application.
Autres ressources
source.android.com
Le site source.android.com est principalement conçu pour les OEM qui fabriquent des appareils Android et les fournisseurs de SoC qui fournissent des composants à ces OEM.
Toutefois, ce site contient de nombreuses informations utiles sur la latence. Nous vous invitons donc à le consulter. Consultez les articles sur la latence audio.
android-ndk
Si vous avez des questions sur l'utilisation de l'audio natif Android, vous pouvez les poser sur le groupe de discussion android-ndk.
Signaler des bugs sur Oboe
Si vous rencontrez des problèmes avec Oboe, vous pouvez signaler un bug.
Vidéos
- Premiers pas avec Oboe
- Audio à faible latence : parce que vos oreilles le méritent
- Sommet des développeurs Android 2018.
- Réussir sur Android : optimiser une application audio Android
- Défi des développeurs Android 2018.
- Audio hautes performances sur Android (Google I/O 2013)
- Toute la vidéo concerne la latence.
- Créer des expériences multimédias de qualité sur Android (Google I/O 2014)
- Les 14 premières minutes concernent l'audio en général et la latence d'entrée en particulier.
- Latence audio: tailles de tampon (100 jours de développement Google)
- Décrit la relation entre la latence audio, les tailles de tampon et la planification des tâches.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/03/26 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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."]]