Panoramica

Lo stack di broadcast radio è costituito dai componenti illustrati nella Figura 1.

Architettura di Broadcast Radio
Figura 1. Architettura Broadcast Radio.

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.