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 (livello API
27) e versioni successive e OpenSL ES. 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. Per un'app di esempio che utilizza Oboe, consulta l'app Soundboard.
Se utilizzi AudioTrack per creare stream audio di output in Java per le app
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)sul builder Oboe. Utilizza la dimensione del buffer nativo e la frequenza di campionamento consigliate restituite da
android.media.AudioManager.getProperty(java.lang.String).Mantieni brevi i gestori di callback, senza un utilizzo della CPU a raffica o blocchi illimitati. Evita l'inversione di priorità.
Valuta la possibilità di utilizzare algoritmi non bloccanti per comunicare tra i gestori di callback di input e output e tra i gestori di callback e il resto dell'applicazione.
android-ndk
Se hai domande su come utilizzare l'audio nativo di Android, partecipa al gruppo di discussione android-ndk.
Segnalare bug su Oboe
Se riscontri problemi con l'utilizzo di Oboe, segnala un bug.
Video
- Guida introduttiva a Oboe
- Low Latency Audio - Because Your Ears Are Worth It (Android Dev Summit 2018)
- Winning on Android - How to optimize an Android audio app (Android Developer Challenge 2018)
- High Performance Audio on Android (Google I/O 2013)
- Building great multimedia experiences on Android (Google I/O 2014)
- Audio latency: buffer sizes (100 Days of Google Dev)