La radio broadcast è composta dai componenti illustrati nella Figura 1.
App di riferimento per le radio
Per informazioni dettagliate su come implementare il controllo radio, consulta Implementazione del controllo radio.
Un'app radio Java di esempio (packages/apps/Car/Radio
) funge da implementazione di riferimento. Quando il servizio dell'app si avvia, richiede a Radio Manager di aprire un sintonizzatore radio. L'app può quindi inviare richieste al sintonizzatore radio, ad esempio l'impostazione di una stazione radio o una frequenza specifiche o la ricerca della stazione radio successiva disponibile. L'app riceve aggiornamenti da Radio Manager e dall'equalizzatore radio in Radio, ad esempio informazioni sui programmi in corso, elenchi di programmi radio, configurazioni e parametri definiti dal fornitore. L'app Radio di riferimento supporta solo le radio AM e FM. Gli OEM possono modificare o sostituire l'app Radio come preferiscono.
Radio Manager
Quando l'app richiede a Radio Manager di aprire un sintonizzatore, Radio Manager
(frameworks/base/core/java/android/hardware/radio/RadioManager.java
) richiede al servizio radio di trasmissione (BRS) di aprire una sessione di sintonizzatore e poi avvolge la sessione in un sintonizzatore radio
(frameworks/base/core/java/android/hardware/radio/RadioTuner.java
), che viene restituito
all'app.
Il sintonizzatore radio definisce le API (come tune, step e cancel) che possono essere chiamate dalle app radio
e inviare richieste al BRS. I metodi di callback (RadioTuner.Callback
) definiti in Radio Tuner inviano aggiornamenti sull'HAL radio di trasmissione, ad esempio informazioni sui programmi in corso, elenchi di programmi e parametri definiti dal fornitore, dal BRS alle app.
Servizio di trasmissione radio
Il servizio di trasmissione radio
(frameworks/base/services/core/java/com/android/server/broadcastradio
) è il servizio
cliente per l'HAL di trasmissione radio. Il BRS coordina più gestori radio con HAL radio di trasmissione. Il BRS supporta gli HAL radio di trasmissione in HAL Interface Definition Language (HIDL) e Android Interface Definition Language (AIDL). Il BRS si collega all'HAL AIDL se esiste un servizio HAL AIDL;
in caso contrario, il servizio si collega all'HAL HIDL. Il BRS crea un Modulo radio per ogni istanza HAL disponibile (ad esempio AM, FM e DAB).
Ogni gestore radio può richiedere al BRS di creare una sessione del sintonizzatore sul modulo radio corrispondente, in base al tipo di radio. Ogni sessione del sintonizzatore può chiamare metodi come sintonizzazione, passaggio e annullamento (definiti nelle interfacce HAL) per eseguire operazioni sull'istanza HAL della radio di trasmissione corrispondente. Quando una sessione di sintonizzazione riceve un callback dall'istanza HAL su un aggiornamento HAL, ad esempio informazioni sul programma corrente, elenco dei programmi, flag di configurazione e parametri del fornitore, i callback relativi all'aggiornamento vengono inviati a tutti i sintonizzatori radio collegati allo stesso modulo radio.
HAL radio di trasmissione
Per scoprire di più sulle interfacce HIDL e AIDL della radio e sulle differenze tra le due, consulta la sezione Interfaccia HAL della radio.