Aby uzyskać najniższe możliwe opóźnienie dźwięku, zalecamy używanie Oboe.
Oboe
Oboe korzysta z natywnego dźwięku i jest oparty na AAudio w Androidzie 8.1 (poziom interfejsu API
27) i nowszym oraz OpenSL ES. Aby uzyskać najniższe możliwe opóźnienie na urządzeniu, ustaw setPerformanceMode(oboe::PerformanceMode::LowLatency) i setSharingMode(oboe::SharingMode::Exclusive). Więcej informacji o
Oboe znajdziesz w przewodniku dla początkujących, README.md i pełnym
przewodniku. Przykładową aplikację korzystającą z Oboe znajdziesz w aplikacji Soundboard.
Jeśli używasz AudioTrack do tworzenia wyjściowych strumieni audio w Javie w przypadku
aplikacji wrażliwych na opóźnienia, użyj trybu PERFORMANCE_MODE_LOW_LATENCY.
Lista kontrolna wdrożenia
Aby używać natywnego dźwięku na Androidzie:
- Pobierz i zainstaluj Android NDK.
- Postępuj zgodnie z przewodnikiem dla początkujących dotyczącym Oboe.
- W konstruktorze Oboe wywołaj
setPerformanceMode(oboe::PerformanceMode::LowLatency)isetSharingMode(oboe::SharingMode::Exclusive). Użyj zalecanego natywnego rozmiaru bufora i częstotliwości próbkowania zwracanych przez
android.media.AudioManager.getProperty(java.lang.String).Zadbaj o to, aby procedury obsługi wywołań zwrotnych były krótkie, bez nagłego zużycia procesora i nieograniczonego blokowania. Unikaj odwrócenia priorytetów.
Rozważ użycie algorytmów nieblokujących do komunikacji między procedurami obsługi wywołań zwrotnych danych wejściowych i wyjściowych oraz między procedurami obsługi wywołań zwrotnych a resztą aplikacji.
android-ndk
Jeśli masz pytania dotyczące korzystania z natywnego dźwięku na Androidzie, dołącz do grupy dyskusyjnej android-ndk.
Zgłaszanie błędów w Oboe
Jeśli masz problemy z używaniem Oboe, zgłoś błąd.
Filmy
- Pierwsze kroki z Oboe
- Dźwięk o niskim opóźnieniu – bo Twoje uszy są tego warte (Android Dev Summit 2018)
- Zwycięstwo na Androidzie – jak zoptymalizować aplikację audio na Androida (Android Developer Challenge 2018)
- Dźwięk o wysokiej wydajności na Androidzie (Google I/O 2013)
- Tworzenie świetnych multimediów na Androidzie (Google I/O 2014)
- Opóźnienie dźwięku: rozmiary bufora (100 dni Google Dev)