Aby uzyskać jak najniższy czas oczekiwania na dźwięk, zalecamy użycie Oboe.
Obój
Oboe korzysta z natywnego dźwięku i jest zbudowany na podstawie interfejsu AAudio w Androidzie 8.1 i nowszych oraz OpenSL ES w starszych wersjach Androida. Aby uzyskać jak najmniejsze 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
oraz pełnym przewodniku. Przykładem aplikacji korzystającej z Oboye jest aplikacja Soundboard.
Uwaga: jeśli używasz AudioTrack do tworzenia strumieni audio wyjściowych w Java w przypadku aplikacji wrażliwych na opóźnienia, użyj trybu PERFORMANCE_MODE_LOW_LATENCY
.
Lista kontrolna implementacji
Aby korzystać z natywnego dźwięku w Androidzie:
- Pobierz i zainstaluj Android NDK.
- Postępuj zgodnie z przewodnikiem dla początkujących dotyczącym Oboe.
-
Wywołaj metody
setPerformanceMode(oboe::PerformanceMode::LowLatency)
isetSharingMode(oboe::SharingMode::Exclusive)
w konstruktorze Oboe. -
Użyj zalecanego natywnego rozmiaru bufora i częstotliwości próbkowania zwracanych przez metodę android.media.AudioManager.getProperty(java.lang.String).
Uwaga: do danych wejściowych należy też używać tego samego rozmiaru bufora i tej samej częstotliwości próbkowania.
- Skróć długość obsługi wywołania zwrotnego, unikając gwałtownego obciążenia procesora i nieograniczonego blokowania. Unikaj odwrócenia priorytetów.
- Rozważ użycie nieblokujących algorytmów do komunikacji między obsługiwanymi przez wywołania zwrotne koderami wejściowymi i wyjściowymi oraz między tymi wywołaniami a resztą aplikacji.
Inne materiały
source.android.com
Witryna source.android.com jest przeznaczona przede wszystkim dla producentów OEM budujących urządzenia z Androidem oraz dostawców układów SoC, którzy dostarczają komponenty tym producentom.
Znajdziesz tam jednak wiele przydatnych informacji na temat opóźnień, więc warto się z nimi zapoznać. Zobacz artykuły na temat opóźnienia dźwięku.
android-ndk
Jeśli masz pytania na temat korzystania z natywnego dźwięku na Androidzie, możesz je zadać w grupie dyskusyjnej android-ndk.
Zgłaszanie błędów w Oboe
Jeśli masz problemy z obsługą Oboe, możesz zgłosić błąd.
Filmy
- Pierwsze kroki z Oboe
- Dźwięk o krótkim czasie oczekiwania – bo Twoje uszy na to zasługują
- Android Dev Summit 2018.
- Wygrywanie na Androidzie – jak zoptymalizować aplikację audio na Androida
- Android Developer Challenge 2018.
- Wysoka jakość dźwięku na urządzeniach z Androidem (Google I/O 2013)
- Cały film dotyczy opóźnień.
- Tworzenie świetnych multimediów na Androidzie (Google I/O 2014)
- Pierwsze 14 minut dotyczy ogólnie dźwięku, a w szczególności opóźnienia wprowadzania danych.
- Opóźnienie dźwięku: rozmiary buforów (100 Days of Google Dev)
- Opisuje zależność między opóźnieniem dźwięku, rozmiarami buforów i planowaniem zadań.