Przegląd

System operacyjny Android Automotive (AAOS) opiera się na podstawowym pakiecie audio Androida, aby obsługiwać przypadki użycia w ramach systemu multimedialno-rozrywkowego w samochodzie. AAOS odpowiada za dźwięki systemu informacyjno-rozrywkowego (czyli dźwięki związane z multimediami, nawigacją i komunikacją), ale nie ponosi bezpośredniej odpowiedzialności za sygnały dźwiękowe i ostrzeżenia, które mają ścisłe wymagania dotyczące dostępności i czasu.

Chociaż AAOS udostępnia sygnały i mechanizmy, które pomagają pojazdowi zarządzać dźwiękiem, to ostatecznie to pojazd decyduje, jakie dźwięki powinny być odtwarzane dla kierowcy i pasażerów, aby zapewnić prawidłowe odtwarzanie dźwięków związanych z bezpieczeństwem i dźwięków regulowanych bez zakłóceń.

Ponieważ AAOS korzysta z kompletnego pakietu audio Androida, aplikacje innych firm odtwarzające dźwięk nie muszą robić niczego innego niż na telefonach. Routingiem audio aplikacji zarządza automatycznie AAOS w sposób opisany w konfiguracji zasad dotyczących dźwięku.

Ponieważ Android zarządza multimediami w samochodzie, zewnętrzne źródła multimediów, takie jak tuner radiowy, powinny być reprezentowane przez aplikacje, które mogą obsługiwać skupienie dźwięku i zdarzenia związane z kluczami multimediów dla źródła.

Dźwięki i strumienie danych na Androidzie

Systemy audio w pojazdach obsługują te dźwięki i strumienie:

obraz

Rysunek 1. Diagram architektury skoncentrowanej na strumieniu.

Android zarządza dźwiękami pochodzącymi z aplikacji, kontrolując te aplikacje i przekierowując ich dźwięki do urządzeń wyjściowych w HAL na podstawie typu dźwięku:

  • Strumienie logiczne, znane jako źródła w podstawowej nomenklaturze audio, są oznaczane atrybutami audio.

  • Strumienie fizyczne, znane jako urządzenia w podstawowej nomenklaturze audio, nie zawierają informacji kontekstowych po zmiksowaniu.

Aby zapewnić niezawodność, dźwięki zewnętrzne (pochodzące z niezależnych źródeł, takich jak sygnały ostrzegawcze dotyczące paska bezpieczeństwa) są zarządzane poza Androidem, pod HAL, a nawet na osobnym sprzęcie. Osoby zajmujące się implementacją systemu muszą dostarczyć mikser, który akceptuje co najmniej 1 strumień dźwięku z Androida, a potem łączy te strumienie w odpowiedni sposób z zewnętrznymi źródłami dźwięku wymaganymi przez pojazd. Android Control HAL udostępnia inny mechanizm komunikacji dźwięków wygenerowanych poza Androidem w celu komunikacji z nim:

  • Prośba o włączenie dźwięku
  • Ograniczenia wzmocnienia lub głośności
  • Zmiany wzmocnienia i głośności

Wdrożenie HAL i zewnętrzny mikser dźwięku odpowiadają za zapewnienie, że istotne dla bezpieczeństwa dźwięki z zewnątrz są słyszalne, a także za miksowanie strumieni dostarczanych przez Androida i przekierowywanie ich do odpowiednich głośników.

Dźwięki w Androidzie

Aplikacje mogą mieć co najmniej 1 odtwarzacz, który współpracuje ze standardowymi interfejsami API Androida (np. AudioManager do kontrolowania fokusa lub MediaPlayer do strumieniowego przesyłania danych), aby emitować co najmniej 1 logiczny strumień danych audio. Te dane mogą być mono mono lub dźwiękiem przestrzennym 7.1, ale są kierowane i traktowane jako pojedyncze źródło. Strumień aplikacji jest powiązany z atrybutami AudioAttributes, które podają systemowi wskazówki dotyczące tego, jak powinien brzmieć dźwięk.

Strumienie logiczne są wysyłane przez AudioService i przekierowywane do jednego (i tylko jednego) z dostępnych fizycznych strumieni wyjściowych, z których każdy jest wyjściem miksera w AudioFlinger. Gdy atrybuty audio zostaną zmiksowane do fizycznego strumienia, nie są już dostępne.

Każdy fizyczny strumień jest następnie dostarczany do interfejsu Audio HAL do renderowania na sprzęcie. W przypadku aplikacji samochodowych sprzęt do renderowania może być lokalnym kodekiem (podobnie jak w przypadku urządzeń mobilnych) lub zdalnie sterowanym procesorem w ramach fizycznej sieci pojazdu. W obu przypadkach zadaniem implementacji HAL audio jest dostarczenie rzeczywistych przykładowych danych i sprawienie, że będą słyszalne.

Strumienie zewnętrzne

Strumienie dźwięku, które nie powinny być kierowane przez Androida (ze względów certyfikacyjnych lub ze względów związanych z synchronizacją), mogą być wysyłane bezpośrednio do zewnętrznego miksera. Od Androida 11 HAL może poprosić o koncentrację na tych zewnętrznych dźwiękach, aby poinformować Androida, że może podjąć odpowiednie działania, takie jak wstrzymywanie multimediów lub uniemożliwianie skupienia się na innych urządzeniach.

Jeśli strumienie zewnętrzne są źródłami multimediów, które powinny wchodzić w interakcję ze środowiskiem dźwiękowym generowanym przez Androida (np. zatrzymują odtwarzanie MP3 po włączeniu zewnętrznego tunera), strumienie te powinny być reprezentowane przez aplikację na Androida. Taka aplikacja prosi w imieniu źródła multimediów o funkcję audio, a nie na HAL reaguje na powiadomienia, uruchamiając i zatrzymując źródło zewnętrzne zgodnie z zasadami Androida.

Aplikacja jest też odpowiedzialna za obsługę zdarzeń związanych z klawiszami multimedialnymi, takich jak odtwarzanie i wstrzymywanie. Jednym z sugerowanych mechanizmów kontroli takich urządzeń zewnętrznych jest HwAudioSource. Więcej informacji znajdziesz w artykule Łączenie urządzenia wejściowego w AAOS.

Urządzenia wyjściowe

Na poziomie HAL urządzenia typu AUDIO_DEVICE_OUT_BUS to ogólne urządzenie wyjściowe do użytku w pojazdowych systemach audio. Urządzenie autobusowe obsługuje adresowalne porty (gdzie każdy port jest punktem końcowym fizycznego strumienia) i jest oczekiwane, że będzie jedynym obsługiwanym typem urządzenia wyjściowego w pojeździe.

Implementacja systemowa może używać 1 portu magistrali do wszystkich dźwięków Androida. W takim przypadku Android miksuje wszystko i przesyła treści w ramach jednego strumienia. Alternatywnie HAL może udostępnić jeden port magistrali dla każdego CarAudioContext, aby umożliwić jednoczesną dostawę dowolnego typu dźwięku. Dzięki temu implementacja HAL może miksować i zmieniać głośność różnych dźwięków zgodnie z potrzebami.

Konteksty audio przypisuje się do urządzeń wyjściowych za pomocą pliku car_audio_configuration.xml. Więcej informacji znajdziesz w artykule Konfigurowanie zasad dotyczących dźwięku.