Latenza audio per gli sviluppatori di app

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:

  1. Scarica e installa Android NDK.
  2. Segui la guida introduttiva per Oboe.
  3. Chiama setPerformanceMode(oboe::PerformanceMode::LowLatency) e setSharingMode(oboe::SharingMode::Exclusive) in Oboe Builder.
  4. 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.

  5. Mantieni brevi i gestori dei callout, senza utilizzo intermittente della CPU o blocco illimitato. Evita la inversione della priorità.
  6. 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à.