Lo stack di broadcast radio è costituito dai componenti illustrati nella Figura 1.
App di riferimento per la radio
Per maggiori dettagli su come implementare il controllo radio, vedi Implementazione del controllo radiofonico.
Un'app radio Java di esempio (packages/apps/Car/Radio
) funge da riferimento
implementazione. All'avvio del servizio dell'app, viene richiesto a Radio Manager di aprire un sintonizzatore radio. Poi,
l'app può inviare richieste al sintonizzatore radio, ad esempio per sintonizzarsi su una stazione radio, una frequenza
o per cercare la successiva stazione radio disponibile. L'app riceve gli aggiornamenti da Radio Manager e
Sintonizzatore radio in Radio, ad esempio informazioni sui programmi correnti, elenchi di programmi radio, configurazioni e
con parametri definiti dal fornitore. L'app Radio di riferimento supporta solo radio AM e FM. Gli OEM possono modificare
sostituisci l'app Radio come preferisci.
Responsabile radio
Quando l'app richiede a Radio Manager di aprire un sintonizzatore, il programma
(frameworks/base/core/java/android/hardware/radio/RadioManager.java
) richiede
Broadcast Radio Service (BRS) per aprire una sessione con sintonizzatore e poi concludi 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 (ad esempio tune, step e cancel) che è possibile chiamare dalle app radio
e inviare richieste a BRS. Metodi di callback (RadioTuner.Callback
) definiti in Radio
Il sintonizzatore invia aggiornamenti sulla radiodiffusione HAL, ad esempio informazioni sul programma corrente, sul programma
e parametri definiti dal fornitore, dal report BRS alle app.
Servizio di radiodiffusione
Broadcast Radio Service
(frameworks/base/services/core/java/com/android/server/broadcastradio
) è il client
per Broadcast Radio HAL. BRS coordina diversi gestori radio con Broadcast Radio
HAL. Il BRS supporta
HAL Interface Definition Language (HIDL) e
Trasmissione AIDL (Android Interface Definition Language)
radio HAL. Il BRS si collega ad AIDL HAL quando esiste un servizio AIDL HAL.
In caso contrario, il servizio si collega all'HIDL HAL. Il BRS crea un modulo radio
per ogni istanza HAL disponibile (ad esempio AM, FM e DAB).
Ogni Gestore Radio può chiedere al BRS di creare una sessione di sintonizzatore sulla modulo radio corrispondente, in base al tipo di radio. Ogni sessione di sintonizzatore può chiamare metodi come mediante tune, step e cancel (definiti nelle interfacce HAL) per eseguire operazioni sul l'istanza HAL di broadcast Radio corrispondente. Quando un tuner viene richiamato dall'HAL su un aggiornamento HAL, ad esempio informazioni sul programma corrente, elenco dei programmi, flag di configurazione i parametri del fornitore, i callback sull'aggiornamento vengono inviati a tutti i sintonizzatori radio collegati allo stesso Modulo radio.
Broadcast Radio HAL
Per saperne di più sulle interfacce HIDL e AIDL delle trasmissioni radio e sulle differenze tra i due, vedi Interfaccia HAL di Broadcast Radio.