Übersicht

Der Broadcast-Radio-Stack besteht aus den in Abbildung 1 dargestellten Komponenten.

Broadcast-Radioarchitektur
Abbildung 1 Broadcast-Radioarchitektur.

Radio-Referenz-App

Weitere Informationen zur Implementierung der Funksteuerung finden Sie unter Implementierung der Funksteuerung.

Eine Beispiel-Java-Radio-App (packages/apps/Car/Radio) dient als Referenzimplementierung. Beim Starten des App-Dienstes wird der Radio Manager aufgefordert, einen Radio-Tuner zu öffnen. Anschließend kann die App Anfragen an den Radiotuner senden, z. B. um einen bestimmten Radiosender oder eine bestimmte Frequenz zu suchen oder zum nächsten verfügbaren Radiosender zu springen. Die App erhält Updates vom Radiomanager und vom Radiotuner in Google Radio, z. B. aktuelle Programminformationen, Radioprogrammlisten, Konfigurationen und vom Anbieter definierte Parameter. Die Referenz-Radio-App unterstützt nur AM- und FM-Radio. OEMs können die Radio App nach Bedarf ändern oder ersetzen.

Radio Manager

Wenn die App den Radio Manager auffordert, einen Tuner zu öffnen, fordert der Radio Manager (frameworks/base/core/java/android/hardware/radio/RadioManager.java) den Broadcast Radio Service (BRS) auf, eine Tuner-Sitzung zu öffnen, und umschließt die Sitzung dann in einem Radio-Tuner (frameworks/base/core/java/android/hardware/radio/RadioTuner.java), der an die App zurückgegeben wird. Der Radio-Tuner definiert APIs (z. B. „tune“, „step“ und „cancel“), die von Radio-Apps aufgerufen werden können, um Anfragen an den BRS zu senden. Über Callback-Methoden (RadioTuner.Callback), die im Radiotuner definiert sind, werden Updates zur Broadcast Radio HAL, z. B. aktuelle Programminformationen, Programmlisten und vom Anbieter definierte Parameter, vom BRS an Apps gesendet.

Radiosender

Der Broadcast Radio Service (frameworks/base/services/core/java/com/android/server/broadcastradio) ist der Clientdienst für die Broadcast Radio HAL. Die BRS koordiniert mehrere Radiomanager mit Broadcast Radio HALs. Die Broadcast Radio Service unterstützt HAL-Schnittstellendefinitionssprachen (HAL Interface Definition Language, HIDL) und Android Interface Definition Language (AIDL). Die BRS wird mit der AIDL HAL verknüpft, wenn ein AIDL HAL-Dienst vorhanden ist. Andernfalls wird der Dienst mit der HIDL HAL verknüpft. Das BRS erstellt ein Radiomodul für jede verfügbare HAL-Instanz (z. B. AM, FM und DAB).

Jeder Radiomanager kann die BRS bitten, je nach Radiotyp eine Tunersitzung auf dem entsprechenden Radiomodul zu erstellen. Jede Tunersitzung kann Methoden wie „tune“, „step“ und „cancel“ (in HAL-Schnittstellen definiert) aufrufen, um Vorgänge auf der entsprechenden HAL-Instanz für die Übertragung von Radiosignalen auszuführen. Wenn eine Tunersitzung einen Rückruf von der HAL-Instanz zu einem HAL-Update erhält, z. B. aktuelle Programminformationen, Programmliste, Konfigurationsflags und Anbieterparameter, werden Rückrufe zum Update an alle Radiotuner gesendet, die mit demselben Radiomodul verknüpft sind.

Broadcast Radio HAL

Weitere Informationen zu den HIDL- und AIDL-Schnittstellen von Broadcast-Radio und den Unterschieden zwischen ihnen finden Sie unter Broadcast Radio HAL-Schnittstelle.