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

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:

  1. Pobierz i zainstaluj Android NDK.
  2. Postępuj zgodnie z przewodnikiem dla początkujących dotyczącym Oboe.
  3. W konstruktorze Oboe wywołaj setPerformanceMode(oboe::PerformanceMode::LowLatency) i setSharingMode(oboe::SharingMode::Exclusive).
  4. Użyj zalecanego natywnego rozmiaru bufora i częstotliwości próbkowania zwracanych przez android.media.AudioManager.getProperty(java.lang.String).

  5. 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.

  6. 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