Pour une latence audio la plus faible possible, nous vous recommandons d'utiliser l'audio natif Android basé sur OpenSL ES 1.0.1.
Liste de contrôle de mise en œuvre
Pour utiliser l'audio natif d'Android:
- Téléchargez et installez Android NDK . Dans le reste de ce document, nous supposerons que
NDKroot
est le répertoire dans lequel vous avez installé NDK. - Lisez la documentation de support.
- Vérifiez le niveau d'API 9 ou supérieur.
- Vérifiez la fonctionnalité android.hardware.audio.low_latency.
- Utilisez la taille de tampon natif et la fréquence d'échantillonnage recommandées renvoyées par android.media.AudioManager.getProperty (java.lang.String)
Remarque : la même taille de tampon et la même fréquence d'échantillonnage doivent également être utilisées pour l'entrée.
- En général, un nombre de tampons OpenSL ES de 1 est suffisant.
- Gardez vos gestionnaires de rappel courts, sans utilisation excessive du processeur ou 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.
Documentation à l'appui
OpenSL ES 1.0.1
Utilisez une visionneuse PDF pour consulter la spécification OpenSL 1.0.1. Il s'agit d'une référence assez longue, et elle ne sera pas entièrement pertinente pour vous; mais vous devrez le consulter pour plus de détails sur l'API.
Remarque : ce document décrit l'OpenSL ES 1.0.1 complet, mais l'audio natif d'Android est en fait basé sur un sous-ensemble d'OpenSL ES 1.0.1 avec certaines extensions spécifiques à Android.
Les documents décrivant les versions ultérieures d'OpenSL ES, telles que 1.1, ne sont pas pertinents pour Android.
OpenSL ES pour Android
Le document "OpenSL ES pour Android" est fourni dans l'installation de NDK et n'est actuellement pas disponible en ligne. Ouvrez ce lien dans un navigateur:
NDKroot/docs/Additional_library_docs/opensles/index.html
Vous voudrez parcourir tout le document, mais portez une attention particulière à la sous-section «Performance» de la section «Notes de programmation».
La section «Fonctionnalités prises en charge par OpenSL ES 1.0.1» décrit le sous-ensemble pris en charge par Android.
La section "Extensions Android" décrit les extensions spécifiques à Android qui ne sont pas incluses dans la base OpenSL ES 1.0.1.
Relation avec OpenSL ES 1.0.1
Ce diagramme de Venn montre la relation entre l'audio natif d'Android et OpenSL ES 1.0.1.

Figure 1. Diagramme de Venn
Autres ressources
source.android.com
Le site source.android.com est principalement conçu pour les OEM qui construisent des appareils Android et les fournisseurs de SoC qui fournissent des composants à ces OEM.
Cependant, il existe une mine d'informations utiles sur la latence sur ce site, vous voudrez peut-être l'examiner. Voir les articles sur Latence audio.
android-ndk
Si vous avez des questions sur l'utilisation de l'audio natif d'Android, vous pouvez les poser au groupe de discussion android-ndk.
Vidéos
- Audio haute performance sur Android (Google I / O 2013)
- Toute la vidéo parle de latence.
- Créer de superbes expériences multimédias 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 Google Dev)
- Décrit la relation entre la latence audio, les tailles de tampon et la planification des tâches.