總覽

廣播電台堆疊包含圖 1 所示的元件。

廣播電台架構
圖 1. 廣播電台架構。

電台參考應用程式

如要進一步瞭解如何實作無線電控制,請參閱「無線電控制實作」。

範例 Java 廣播電台應用程式 (packages/apps/Car/Radio) 可做為參考實作。應用程式服務啟動時,會要求 Radio Manager 開啟 Radio Tuner。接著,應用程式可以向 Radio Tuner 傳送要求,例如調到特定電台、頻率,或搜尋下一個可用的電台。應用程式會從 Radio 中的 Radio Manager 和 Radio Tuner 接收更新,例如目前的節目資訊、電台節目清單、設定和供應商定義的參數。參考的收音機應用程式僅支援 AM 和 FM 收音機。原始設備製造商 (OEM) 可視需要修改或取代 Radio 應用程式。

廣播管理員

當應用程式要求 Radio Manager 開啟調諧器時,Radio Manager (frameworks/base/core/java/android/hardware/radio/RadioManager.java) 會要求 Broadcast Radio Service (BRS) 開啟調諧器工作階段,然後在 Radio Tuner (frameworks/base/core/java/android/hardware/radio/RadioTuner.java) 中包裝工作階段,並將其傳回至應用程式。Radio Tuner 中定義的回呼方法 (RadioTuner.Callback) 會將廣播電台 HAL 的更新內容 (例如目前的節目資訊、節目清單和廠商定義的參數) 從 BRS 傳送至應用程式。

廣播電台服務

廣播電台服務 (frameworks/base/services/core/java/com/android/server/broadcastradio) 是廣播電台 HAL 的用戶端服務。BRS 會協調多個 Radio Manager 與廣播電台 HAL。BRS 支援 HAL 介面定義語言 (HIDL)Android 介面定義語言 (AIDL) 廣播無線電 HAL。當任何 AIDL HAL 服務存在時,BRS 會連結至 AIDL HAL;否則,服務會連結至 HIDL HAL。BRS 會為每個可用的 HAL 例項 (例如 AM、FM 和 DAB) 建立 Radio 模組。

每個 Radio Manager 都可以要求 BRS 根據無線電類型,在對應的 Radio Module 上建立調諧器工作階段。每個調諧器工作階段都可以呼叫方法,例如 tune、step 和 cancel (在 HAL 介面中定義),以便在相應的廣播電台 HAL 例項上執行作業。當一個調諧器工作階段收到 HAL 更新 (例如目前的節目資訊、節目清單、設定標記和供應商參數) 的 HAL 例項回呼時,系統會將有關更新的回呼傳送至與同一個無線電模組連結的所有無線電調諧器。

廣播電台 HAL

如要進一步瞭解廣播電台的 HIDL 和 AIDL 介面,以及兩者之間的差異,請參閱「廣播電台 HAL 介面」。