Przegląd

Android Automotive OS (AAOS) opiera się na podstawowym stosie audio Androida, aby obsługiwać przypadki użycia jako system informacyjno-rozrywkowy w pojeździe. AAOS jest odpowiedzialny za dźwięki informacyjno-rozrywkowe (tj. media, nawigację i komunikację), ale nie jest bezpośrednio odpowiedzialny za dzwonki i ostrzeżenia, które mają ścisłe wymagania dotyczące dostępności i czasu.

Chociaż system AAOS zapewnia sygnały i mechanizmy pomagające pojazdowi zarządzać dźwiękiem, ostatecznie to od pojazdu zależy, jakie dźwięki powinny być odtwarzane kierowcy i pasażerom, zapewniając prawidłowe słyszenie dźwięków krytycznych dla bezpieczeństwa i dźwięków regulacyjnych, bez przerwanie.

Ponieważ AAOS wykorzystuje stos audio Androida, aplikacje innych firm odtwarzające dźwięk nie muszą robić nic innego niż w telefonach. Kierowaniem audio aplikacji jest automatycznie zarządzane przez AAOS zgodnie z opisem w sekcji Konfiguracja zasad audio .

Ponieważ system 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ć fokus audio i kluczowe zdarzenia multimedialne dla źródła.

Dźwięki i strumienie na Androida

Samochodowe systemy audio obsługują następujące dźwięki i strumienie:

image

Rysunek 1. Schemat architektury skoncentrowanej na strumieniu.

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 w HAL w oparciu o typ dźwięku:

  • Strumienie logiczne , zwane źródłami w podstawowej nomenklaturze audio, są oznaczone atrybutami audio .

  • Strumienie fizyczne , zwane urządzeniami w podstawowej nomenklaturze audio, po zmiksowaniu nie mają informacji kontekstowych.

Aby zapewnić niezawodność, dźwiękami zewnętrznymi (pochodzącymi z niezależnych źródeł, takimi jak sygnały ostrzegawcze o zapięciu pasów bezpieczeństwa) zarządza się poza systemem Android, poniżej warstwy HAL lub nawet na oddzielnym sprzęcie. Twórcy systemu muszą zapewnić mikser, który akceptuje jeden lub więcej strumieni dźwięku z systemu Android, 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 umożliwiający komunikację dźwięków generowanych poza systemem Android z systemem Android:

  • Żądanie skupienia dźwięku
  • Ograniczenia wzmocnienia lub głośności
  • Zmiany wzmocnienia i głośności

Implementacja audio HAL i zewnętrzny mikser odpowiadają za zapewnienie słyszalności krytycznych dla 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ć jeden lub więcej odtwarzaczy, które wchodzą w interakcję za pośrednictwem standardowych interfejsów API systemu Android (na przykład AudioManager do kontroli ostrości lub MediaPlayer do przesyłania strumieniowego), aby emitować jeden lub więcej logicznych strumieni danych audio. Dane te mogą być jednokanałowe, monofoniczne lub przestrzenne 7.1, ale są kierowane i traktowane jako pojedyncze źródło. Strumień aplikacji jest powiązany z atrybutami AudioAttributes , które dają systemowi wskazówki dotyczące sposobu wyrażania dźwięku.

Strumienie logiczne są wysyłane za pośrednictwem usługi AudioService i kierowane do jednego (i tylko jednego) 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 audio HAL w celu renderowania na sprzęcie. W aplikacjach motoryzacyjnych sprzętem renderującym mogą być lokalne kodeki (podobnie jak w urządzeniach mobilnych) lub zdalny procesor w fizycznej sieci pojazdu. Tak czy inaczej, zadaniem implementacji Audio HAL jest dostarczenie rzeczywistych przykładowych danych i sprawienie, aby stały się one słyszalne.

Strumienie zewnętrzne

Strumienie dźwięku, które nie powinny być kierowane przez Androida (ze względów certyfikacyjnych lub czasowych), mogą być przesyłane bezpośrednio do zewnętrznego miksera. Począwszy od Androida 11, warstwa HAL może teraz zażądać skupienia się na dźwiękach zewnętrznych, aby poinformować system Android o konieczności podjęcia odpowiednich działań, takich jak wstrzymywanie multimediów lub uniemożliwianie innym uzyskania fokusu.

Jeśli zewnętrzne strumienie są źródłami multimediów, które powinny wchodzić w interakcję ze środowiskiem dźwiękowym generowanym przez Androida (na przykład zatrzymać odtwarzanie MP3 po włączeniu zewnętrznego tunera), te zewnętrzne strumienie powinny być reprezentowane przez aplikację na Androida. Taka aplikacja żądałaby fokusu audio w imieniu źródła multimediów zamiast HAL i reagowałaby na powiadomienia o fokusie, uruchamiając i zatrzymując źródło zewnętrzne, jeśli jest to konieczne, aby dopasować się do zasad fokusu Androida.

Aplikacja jest również odpowiedzialna za obsługę kluczowych zdarzeń multimedialnych, takich jak odtwarzanie i pauza. Jednym z sugerowanych mechanizmów kontroli takich urządzeń zewnętrznych jest HwAudioSource . Aby dowiedzieć się więcej, zobacz Podłączanie urządzenia wejściowego w AAOS .

Urządzenia zewnętrzne

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

Implementacja systemu może wykorzystywać jeden port magistrali dla wszystkich dźwięków Androida, w takim przypadku Android miksuje wszystko razem i dostarcza jako jeden strumień. Alternatywnie, warstwa HAL może zapewnić jeden port magistrali dla każdego CarAudioContext , aby umożliwić jednoczesne dostarczanie dowolnego typu dźwięku. Umożliwia to implementacji HAL miksowanie i wyciszanie różnych dźwięków według potrzeb.

Przypisanie kontekstów audio do urządzeń wyjściowych odbywa się poprzez plik car_audio_configuration.xml . Aby dowiedzieć się więcej, zobacz Konfiguracja zasad audio .