Opóźnienie dźwięku w aplikacji – informacje dla deweloperów

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:

  1. Pobierz i zainstaluj Android NDK.
  2. Postępuj zgodnie z przewodnikiem dla początkujących dotyczącym Oboe.
  3. Wywołaj metody setPerformanceMode(oboe::PerformanceMode::LowLatency) i setSharingMode(oboe::SharingMode::Exclusive) w konstruktorze Oboe.
  4. 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.

  5. Skróć długość obsługi wywołania zwrotnego, unikając gwałtownego obciążenia procesora i nieograniczonego blokowania. Unikaj odwrócenia priorytetów.
  6. 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ń.