La pile radio de diffusion se compose des composants illustrés à la figure 1.
Application de référence pour les radios
Pour savoir comment implémenter le contrôle radio, consultez la section Implémentation du contrôle radio.
Un exemple d'application radio Java (packages/apps/Car/Radio
) sert d'implémentation de référence. Lorsque le service de l'application démarre, il demande à Radio Manager d'ouvrir un tuner radio. L'application peut ensuite envoyer des requêtes au tuner radio, par exemple pour se régler sur une station de radio ou une fréquence spécifique, ou pour rechercher la prochaine station de radio disponible. L'application reçoit des mises à jour du Gestionnaire de radio et du Tuner de radio dans Radio, telles que les informations sur les programmes en cours, les listes de programmes radio, les configurations et les paramètres définis par le fournisseur. L'application Radio de référence n'est compatible qu'avec les radios AM et FM. Les OEM peuvent modifier ou remplacer l'application Radio comme bon leur semble.
Gestionnaire de radio
Lorsque l'application demande au Gestionnaire de radio d'ouvrir un tuner, le Gestionnaire de radio (frameworks/base/core/java/android/hardware/radio/RadioManager.java
) demande au service de radiodiffusion (BRS) d'ouvrir une session de tuner, puis encapsule la session dans un tuner radio (frameworks/base/core/java/android/hardware/radio/RadioTuner.java
), qui est renvoyé à l'application.
Le tuner radio définit des API (telles que la mise au point, la progression et l'annulation) qui peuvent être appelées à partir d'applications de radio et envoyer des requêtes au BRS. Les méthodes de rappel (RadioTuner.Callback
) définies dans le tuner radio envoient des mises à jour sur le HAL de radiodiffusion, telles que les informations sur les programmes en cours, les listes de programmes et les paramètres définis par le fournisseur, du BRS aux applications.
Service de diffusion radio
Le service de diffusion radio (frameworks/base/services/core/java/com/android/server/broadcastradio
) est le service client du HAL de diffusion radio. Le BRS coordonne plusieurs gestionnaires de radio avec des HAL de radio de diffusion. Le BRS est compatible avec les HAL radio de diffusion HIDL (HAL interface definition language) et AIDL (Android interface definition language). Le BRS se connecte au HAL AIDL lorsqu'un service HAL AIDL existe. Sinon, le service se connecte au HAL HIDL. Le BRS crée un module radio pour chaque instance HAL disponible (par exemple, AM, FM et DAB).
Chaque gestionnaire de radio peut demander au BRS de créer une session de tuner sur le module radio correspondant, en fonction du type de radio. Chaque session de tuner peut appeler des méthodes telles que "tune", "step" et "cancel" (définies dans les interfaces HAL) pour effectuer des opérations sur l'instance HAL de radiodiffusion correspondante. Lorsqu'une session de tuner reçoit un rappel de l'instance HAL lors d'une mise à jour HAL, comme les informations sur le programme en cours, la liste des programmes, les options de configuration et les paramètres du fournisseur, des rappels concernant la mise à jour sont envoyés à tous les tuners radio associés au même module radio.
HAL de diffusion radio
Pour en savoir plus sur les interfaces HIDL et AIDL de la radiodiffusion et sur les différences entre les deux, consultez la section Interface HAL de la radiodiffusion.