Przegląd

System operacyjny Android Automotive (AAOS) jest oparty na podstawowym stosie audio Androida i obsługuje przypadki użycia związane z działaniem jako system multimedialny w pojeździe. AAOS odpowiada za dźwięki systemu informacyjno-rozrywkowego (czyli multimedia, nawigacja i komunikacja), ale nie jest bezpośrednio odpowiedzialny za sygnały i ostrzeżenia, które mają ścisłe wymagania dotyczące dostępności i czasu.

AAOS udostępnia sygnały i mechanizmy, które pomagają pojazdowi zarządzać dźwiękiem, ale ostatecznie to pojazd decyduje, jakie dźwięki powinny być odtwarzane dla kierowcy i pasażerów, zapewniając, że dźwięki krytyczne dla bezpieczeństwa i dźwięki wymagane przez przepisy są prawidłowo słyszalne bez przerw.

AAOS korzysta ze stosu audio Androida, więc aplikacje innych firm odtwarzające dźwięk nie muszą robić niczego innego niż na telefonach. Routing dźwięku w aplikacji jest automatycznie zarządzany przez AAOS w sposób opisany w sekcji Konfiguracja zasad dotyczących dźwięku.

Ponieważ Android zarządza multimediami w pojeździe, zewnętrzne źródła multimediów, takie jak tuner radiowy, powinny być reprezentowane przez aplikacje, które mogą obsługiwać aktywność audio i zdarzenia klawiszy multimediów dla danego źródła.

Dźwięki i strumienie danych z Androida

Samochodowe systemy audio obsługują te dźwięki i strumienie:

obraz

Rysunek 1. Schemat architektury zorientowanej na strumienie.

Android zarządza dźwiękami pochodzącymi z aplikacji na Androida, kontrolując te aplikacje i kierując ich dźwięki do urządzeń wyjściowych na poziomie HAL w zależności od rodzaju dźwięku:

  • Strumienie logiczne, które w podstawowej nomenklaturze audio są nazywane źródłami, są oznaczane atrybutami audio.

  • Strumienie fizyczne, w terminologii podstawowego dźwięku nazywane urządzeniami, po zmiksowaniu nie mają informacji kontekstowych.

Aby zapewnić niezawodność, dźwięki zewnętrzne (pochodzące z niezależnych źródeł, np. sygnały ostrzegawcze pasów bezpieczeństwa) są zarządzane poza Androidem, poniżej warstwy HAL, a nawet w osobnym sprzęcie. Wdrażający systemy muszą udostępnić mikser, który akceptuje co najmniej 1 strumień dźwięku z Androida, a następnie łączy te strumienie w odpowiedni sposób z zewnętrznymi źródłami dźwięku wymaganymi przez pojazd. Android Control HAL zapewnia inny mechanizm komunikacji z Androidem w przypadku dźwięków generowanych poza Androidem:

  • Prośba o aktywność audio
  • Ograniczenia wzmocnienia lub głośności
  • Zmiany wzmocnienia i głośności

Implementacja HAL audio i mikser zewnętrzny odpowiadają za zapewnienie słyszalności krytycznych z punktu widzenia bezpieczeństwa dźwięków zewnętrznych oraz za miksowanie strumieni dostarczanych przez Androida i kierowanie ich do odpowiednich głośników.

Dźwięki Androida

Aplikacje mogą mieć jednego lub więcej odtwarzaczy, które wchodzą w interakcje za pomocą standardowych interfejsów API Androida (np. AudioManager do sterowania fokusem lub MediaPlayer do przesyłania strumieniowego), aby emitować jeden lub więcej logicznych strumieni danych audio. Mogą to być dane mono z jednego kanału lub dźwięk przestrzenny 7.1, ale są one kierowane i traktowane jako jedno źródło. Strumień aplikacji jest powiązany z obiektem AudioAttributes, który zawiera wskazówki dla systemu dotyczące sposobu odtwarzania dźwięku.

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

Każdy strumień fizyczny jest następnie dostarczany do warstwy HAL audio w celu renderowania na sprzęcie. W aplikacjach samochodowych sprzęt renderujący może być lokalnymi kodekami (podobnie jak w przypadku urządzeń mobilnych) lub zdalnym procesorem w fizycznej sieci pojazdu. W każdym przypadku to implementacja HAL dźwięku dostarcza rzeczywiste dane próbki i sprawia, że stają się one słyszalne.

Strumienie zewnętrzne

Strumienie dźwięku, które nie powinny być kierowane przez Androida (ze względu na certyfikację lub czas), mogą być wysyłane bezpośrednio do zewnętrznego miksera. Od Androida 11 HAL może żądać fokusu dla tych dźwięków zewnętrznych, aby informować Androida o konieczności podjęcia odpowiednich działań, takich jak wstrzymanie odtwarzania multimediów lub uniemożliwienie innym aplikacjom uzyskania fokusu.

Jeśli strumienie zewnętrzne są źródłami multimediów, które powinny wchodzić w interakcje z generowanym przez Androida środowiskiem dźwiękowym (np. zatrzymywać odtwarzanie MP3 po włączeniu zewnętrznego tunera), powinny być reprezentowane przez aplikację na Androida. Taka aplikacja będzie żądać aktywności audio w imieniu źródła multimediów zamiast HAL i będzie reagować na powiadomienia o aktywności, uruchamiając i zatrzymując zewnętrzne źródło w razie potrzeby, aby dostosować się do zasad aktywności audio Androida.

Aplikacja jest też odpowiedzialna za obsługę zdarzeń klawiszy multimedialnych, takich jak odtwarzanie i wstrzymywanie. Jednym z sugerowanych mechanizmów sterowania takimi urządzeniami zewnętrznymi jest HwAudioSource. Więcej informacji znajdziesz w artykule Podłączanie urządzenia wejściowego w AAOS.

Urządzenia wyjściowe

Na poziomie Audio HAL typ urządzenia AUDIO_DEVICE_OUT_BUS zapewnia ogólne urządzenie wyjściowe do użytku w samochodowych systemach audio. Urządzenie magistrali obsługuje porty adresowalne (gdzie każdy port jest punktem końcowym strumienia fizycznego) i powinno być jedynym obsługiwanym typem urządzenia wyjściowego w pojeździe.

Implementacja systemu może używać jednego portu magistrali dla wszystkich dźwięków Androida. W takim przypadku Android miksuje wszystko i przesyła jako jeden strumień. Alternatywnie HAL może udostępnić 1 port magistrali dla każdego CarAudioContext, aby umożliwić jednoczesne dostarczanie dowolnego typu dźwięku. Dzięki temu implementacja HAL może miksować i wygłuszać różne dźwięki w dowolny sposób.

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