Android 13 wprowadza obsługę dźwięku przestrzennego, udostępniając interfejsy API, które pozwalają deweloperom aplikacji sprawdzić, czy obecna kombinacja implementacji telefonu, podłączonych słuchawek i ustawień użytkownika umożliwia odtwarzanie dźwięku wielokanałowego w sposób immersyjny.
Producenci urządzeń OEM mogą udostępnić efekt dźwięku przestrzennego z obsługą śledzenia ruchów głowy z wymaganym poziomem wydajności i opóźnienia, korzystając z nowej architektury ścieżki audio i integracji z ramami czujników. Protokół HID określa, jak podłączyć urządzenie do śledzenia ruchów głowy przez Bluetooth i uzyskać do niego dostęp jako do urządzenia HID za pomocą interfejsu czujników Androida. Więcej informacji o wymaganiach i weryfikacji znajdziesz w sekcji Dźwięk przestrzenny i monitorowanie ruchów głowy.
Wytyczne na tej stronie dotyczą rozwiązania do dźwięku przestrzennego, które korzysta z nowych interfejsów API dźwięku przestrzennego i architektury dźwiękowej na telefonie z Androidem w wersji 13 lub nowszej oraz z obsługiwanych słuchawek ze zintegrowanym czujnikiem śledzenia ruchów głowy.
Wytyczne dotyczące implementacji dynamicznych i statycznych trybów dźwięku przestrzennego
Statyczny dźwięk przestrzenny nie wymaga śledzenia ruchów głowy, więc nie są wymagane specjalne funkcje zestawu słuchawkowego. Wszystkie przewodowe i bezprzewodowe zestawy słuchawkowe obsługują statyczny dźwięk przestrzenny.
Implementacja interfejsu API
Producenci OEM muszą zaimplementować klasę Spatializer
wprowadzoną w Androidzie 12. Implementacja musi przejść testy CTS wprowadzone dla klasy Spatializer
.
Dzięki solidnej implementacji interfejsu API deweloperzy aplikacji, a zwłaszcza usługi strumieniowania multimediów, mogą polegać na spójnym zachowaniu całego ekosystemu i wybierać najlepsze treści na podstawie możliwości urządzenia, aktualnego kontekstu renderowania i wyborów użytkowników.
Interfejs użytkownika
Po zaimplementowaniu klasy Spatializer
sprawdź, czy interfejs użytkownika zachowuje się w ten sposób:
Po sparowaniu zestawu słuchawkowego obsługującego dźwięk przestrzenny w ustawieniach urządzenia Bluetooth dla tego zestawu słuchawkowego pojawi się przełącznik Dźwięk przestrzenny:
Rysunek 1. Ustawienie dźwięku przestrzennego.
Te ustawienia są dostępne po odłączeniu zestawu słuchawkowego.
Domyślny stan dźwięku przestrzennego po początkowym sparowaniu zestawu słuchawkowego to włączony.
Wybrany przez użytkownika stan (włączony lub wyłączony) pozostaje niezmieniony po ponownym uruchomieniu telefonu lub po rozłączeniu i ponownym sparowaniu zestawu słuchawkowego.
Funkcje
Formaty audio
Gdy włączony jest dźwięk przestrzenny, a urządzenie do renderowania to zestaw słuchawkowy przewodowy lub Bluetooth, te formaty audio MUSZĄ być renderowane przez procesor dźwięku przestrzennego:
- AAC, 5.1-kanałowe
- surowy PCM, 5.1 kanałów
Aby zapewnić użytkownikom lepsze wrażenia, zdecydowanie zalecamy obsługę tych formatów i konfiguracji kanałów:
- Dolby Digital Plus
- 5.1.2, 7.1, 7.1.2, 7.1.4
odtwarzanie treści stereo,
Treści stereo nie mogą być renderowane za pomocą mechanizmu efektu przestrzennego, nawet jeśli dźwięk przestrzenny jest włączony. Jeśli implementacja umożliwia przestrzeganie treści stereo, musi udostępnić niestandardowy interfejs, który umożliwia użytkownikowi łatwe włączanie i wyłączanie tej funkcji. Gdy dźwięk przestrzenny jest włączony, musi być możliwe przełączanie się między odtwarzaniem treści wielokanałowych z dźwiękiem przestrzennym a treściami stereo bez dźwięku przestrzennego bez konieczności wprowadzania zmian w ustawieniach użytkownika lub ponownego łączenia lub konfigurowania zestawu słuchawkowego. Przejście między treściami z dźwiękiem przestrzennym a treściami stereo musi odbywać się z minimalnym zakłóceniem dźwięku.
Przypadki użycia, przejścia i jednoczesność
W szczególnych przypadkach:
- Powiadomienia muszą być zmiksowane z dźwiękiem przestrzennym w taki sam sposób jak dźwięk nieprzestrzenny.
- Dźwięki dzwonka muszą być zmiksowane z dźwiękiem przestrzennym. Domyślnie jednak mechanizm rozpoznawania dźwięku wstrzymuje treści audio przestrzenne, gdy pojawia się dzwonek.
- Podczas odbierania połączenia, nawiązywania połączenia lub uczestniczenia w wideokonferencji odtwarzanie dźwięku przestrzennego musi zostać wstrzymane. Po zakończeniu połączenia odtwarzanie dźwięku przestrzennego musi zostać wznowione z tymi samymi ustawieniami. Ponowna konfiguracja ścieżki dźwiękowej po przejściu z trybu dźwięku przestrzennego na tryb konwersacyjny musi nastąpić szybko i na tyle płynnie, aby nie miała wpływu na jakość połączenia.
Renderowanie przez głośniki
Nie jest wymagane wsparcie dla dźwięku przestrzennego w głośnikach (tzw. tryb transauralny).
Wskazówki dotyczące implementacji śledzenia ruchów głowy
Ta sekcja dotyczy dynamicznego dźwięku przestrzennego, który ma określone wymagania dotyczące słuchawek.
Interfejs użytkownika
Po wdrożeniu i sparowaniu zestawu słuchawkowego z dźwiękiem przestrzennym sprawdź, czy interfejs użytkownika działa w taki sposób:
Gdy w ustawieniach urządzenia Bluetooth włączone jest ustawienie Dźwięk przestrzenny dla zestawu słuchawkowego, w sekcji Dźwięk przestrzenny pojawi się ustawienie Monitorowanie ruchów głowy:
Rysunek 2. Dźwięk przestrzenny i ustawienie śledzenia ruchów głowy.
Ustawienie śledzenia ruchów głowy jest niewidoczne, gdy dźwięk przestrzenny jest wyłączony.
Domyślny stan śledzenia ruchów głowy po pierwszym sparowaniu gogli to włączone.
Wybrany przez użytkownika stan (włączony lub wyłączony) musi być zachowany po ponownym uruchomieniu telefonu lub po rozłączeniu i ponownym sparowaniu słuchawek.
Działanie funkcjonalne
Raportowanie pozycji głowy
- Informacje o pozycji głowy w układzie współrzędnych x, y i z, wysyłane z zestawu słuchawkowego na urządzenie z Androidem, muszą szybko i precyzyjnie odzwierciedlać ruchy głowy użytkownika.
- Raportowanie pozycji głowy przez link Bluetooth musi być zgodne z protokołem zdefiniowanym w HID.
- Słuchawki muszą wysyłać informacje o śledzeniu ruchów głowy do telefonu z Androidem tylko wtedy, gdy użytkownik włączy śledzenie ruchów głowy w interfejsie ustawień urządzenia Bluetooth.
Wydajność
Opóźnienie
Opóźnienie śledzenia ruchów głowy to czas od ruchu głowy zarejestrowanego przez jednostkę pomiarową inercyjną (IMU) do wykrycia zmiany dźwięku spowodowanej przez ten ruch przez przetworniki słuchawek. Opóźnienie śledzenia ruchów głowy nie może przekraczać 150 ms.
Odsetek raportowania pozycji głowy
Gdy śledzenie ruchów głowy jest aktywne, zestaw słuchawkowy musi przekazywać informacje o pozycji głowy co około 20 ms. Aby uniknąć aktywowania logiki wykrywania nieaktualnych danych na telefonie podczas jittera transmisji Bluetooth, maksymalny czas między dwoma aktualizacjami nie może przekraczać 40 ms.
Optymalizacja zużycia
Aby zoptymalizować zużycie energii, zalecamy, aby implementacja używała mechanizmów przełączania kodeków Bluetooth i wyboru trybu opóźnienia udostępnianych przez interfejsy audio HAL i Bluetooth audio HAL.
Implementacje AOSP dotyczącego interfejsu API i poziomu Bluetooth obsługują już sygnały umożliwiające kontrolowanie przełączania kodeków. Jeśli implementacja OEM używa głównego interfejsu HAL audio dla dźwięku Bluetooth, zwanego trybem odciążania kodeka, OEM musi dopilnować, by HAL audio przesyłał te sygnały między HAL audio i Bluetooth.
Przełączanie kodeków
Gdy włączone są dynamiczny dźwięk przestrzenny i monitorowanie ruchów głowy, użyj kodeka o niskiej latencji, takiego jak Opus. Podczas odtwarzania treści audio bez dźwięku przestrzennego używaj kodeka o niskim poborze mocy, takiego jak Advanced Audio Coding (AAC).
Podczas przełączania kodeków przestrzegaj tych zasad:
- Śledzenie tylko aktywności tych strumieni wyjściowych audio HAL:
- Specjalne dane wyjściowe procesora dźwięku przestrzennego
- strumienie mediów, takie jak głębokie buforowanie lub odtwarzanie skompresowanych danych.
Gdy wszystkie odpowiednie strumienie są nieaktywne i rozpocznie się strumień z procesorem dźwięku przestrzennego, uruchom strumień Bluetooth z parametrem
isLowLatency
ustawionym natrue
, aby określić kodek o niskiej latencji.Gdy wszystkie istotne strumienie są nieaktywne i rozpoczyna się strumień multimediów, rozpocznij strumień Bluetooth, ustawiając wartość
isLowLatency
nafalse
, aby określić kodek o niskim zużyciu energii.Jeśli strumień multimediów jest aktywny i rozpocznie się strumień spatializer, uruchom ponownie strumień Bluetooth z wartością
isLowLatency
ustawioną natrue
.
Zestaw słuchawkowy musi obsługiwać dekodery o niskiej latencji i małej mocy oraz implementować standardowy protokół wyboru kodeka.
Dostosowywanie trybu niskiego opóźnienia
Dostosowanie trybu opóźnienia następuje, gdy wybrany jest kodek o niskim opóźnieniu.
W zależności od tego, czy śledzenie ruchów głowy jest włączone, czy wyłączone, korekta trybu opóźnienia używa dostępnych mechanizmów do zmniejszenia lub zwiększenia opóźnienia, aby osiągnąć najlepszy kompromis między opóźnieniem, mocą i jakością dźwięku. Gdy włączony jest dźwięk przestrzenny i monitorowanie ruchów głowy, wybierany jest tryb o niskiej latencji. Gdy dźwięk przestrzenny jest włączony, a monitorowanie ruchów głowy jest wyłączone, wybrany jest tryb bez opóźnień. Korekta czasu oczekiwania zapewnia znaczną oszczędność energii i zwiększoną niezawodność połączenia audio Bluetooth, gdy wymagany jest tylko statyczny dźwięk przestrzenny. Najczęstszym mechanizmem regulacji opóźnienia jest zmniejszenie lub zwiększenie rozmiaru bufora jittera w słuchawkach Bluetooth.
Informacje o dostosowywaniu trybu opóźnienia dla LE Audio znajdziesz w artykule o śledzeniu ruchów głowy przez LE Audio.