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)
esetSharingMode(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à.