Für die niedrigstmögliche Audiolatenz empfehlen wir die Verwendung von Oboe.
Oboe
Oboe verwendet natives Audio und basiert auf AAudio für Android 8.1 (API-Level
27) und höher sowie OpenSL ES. Um die niedrigstmögliche Latenz für ein Gerät zu erzielen, legen Sie setPerformanceMode(oboe::PerformanceMode::LowLatency) und setSharingMode(oboe::SharingMode::Exclusive) fest. Weitere Informationen zu
Oboe finden Sie im Startleitfaden, README.md und im vollständigen
Leitfaden. Die Soundboard-App ist ein Beispiel für eine App, die Oboe verwendet.
Wenn Sie AudioTrack verwenden, um in Java Audio-Ausgabestreams für
latenzempfindliche Apps zu erstellen, verwenden Sie den Modus PERFORMANCE_MODE_LOW_LATENCY.
Checkliste für die Implementierung
So verwenden Sie natives Android-Audio:
- Laden Sie das Android NDK herunter und installieren Sie es.
- Folgen Sie dem Startleitfaden für Oboe.
- Rufen Sie im Oboe-Builder
setPerformanceMode(oboe::PerformanceMode::LowLatency)undsetSharingMode(oboe::SharingMode::Exclusive)auf. Verwenden Sie die empfohlene native Puffergröße und Abtastrate, die von
android.media.AudioManager.getProperty(java.lang.String)zurückgegeben werden.Halten Sie Ihre Callback-Handler kurz und vermeiden Sie eine burstartige CPU-Auslastung oder unbegrenztes Blockieren. Vermeiden Sie Prioritätsinversion.
Verwenden Sie nicht blockierende Algorithmen für die Kommunikation zwischen den Callback-Handlern für die Eingabe und Ausgabe sowie zwischen den Callback-Handlern und dem Rest Ihrer Anwendung.
android-ndk
Wenn Sie Fragen zur Verwendung von nativem Android-Audio haben, treten Sie der Diskussionsgruppe android-ndk bei.
Fehler bei Oboe melden
Wenn Sie Probleme mit Oboe haben, melden Sie einen Fehler.
Videos
- Erste Schritte mit 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)