À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release au lieu de aosp-main pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
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.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/07/27 (UTC)."],[],[],null,["# Overview\n\nThe broadcast radio stack consists of the components illustrated in Figure 1.\n**Figure 1.** Broadcast Radio architecture.\n\nRadio reference app\n-------------------\n\nFor details about how to implement radio control, see\n[Radio control implementation](/docs/automotive/radio/radio-control-implementation).\n\nA sample Java radio app (`packages/apps/Car/Radio`) serves as a reference\nimplementation. When the app service starts, it requests Radio Manager to open a Radio Tuner. Then,\nthe app can send requests to the Radio Tuner, such as tuning to a specific radio station, frequency,\nor to seek the next available radio station. The app receives updates from the Radio Manager and\nRadio Tuner in Radio, such as current program information, radio program lists, configurations, and\nvendor-defined parameters. The reference Radio app only supports AM and FM radio. OEMs can modify or\nreplace the Radio app as desired.\n\nRadio Manager\n-------------\n\nWhen the app requests Radio Manager to open a tuner, the Radio Manager\n(`frameworks/base/core/java/android/hardware/radio/RadioManager.java`) requests the\nBroadcast Radio Service (BRS) to open a Tuner session and then wraps the session in a Radio Tuner\n(`frameworks/base/core/java/android/hardware/radio/RadioTuner.java`), which is returned\nto the app.\n\nThe Radio Tuner defines APIs (such as tune, step, and cancel) that can be called from radio apps\nand send requests to BRS. Callback methods (`RadioTuner.Callback`) defined in Radio\nTuner send updates about the broadcast radio HAL, such as current program information, program\nlists, and vendor-defined parameters, from the BRS to apps.\n\nBroadcast Radio Service\n-----------------------\n\nThe Broadcast Radio Service\n(`frameworks/base/services/core/java/com/android/server/broadcastradio`) is the client\nservice for Broadcast Radio HAL. The BRS coordinates multiple Radio Managers with Broadcast Radio\nHALs. The BRS supports\n[HAL interface definition language (HIDL)](/docs/core/architecture/hidl) and\n[Android interface definition language (AIDL)](/docs/core/architecture/aidl) broadcast\nradio HALs. The BRS links to the AIDL HAL when any AIDL HAL service exists;\notherwise, the service links to the HIDL HAL. The BRS creates a Radio Module\nfor each available HAL instance (such as AM, FM, and DAB).\n\nEach Radio Manager can request the BRS to create a tuner session on the\ncorresponding Radio Module, based on the type of radio. Each tuner session can call methods, such\nas tune, step, and cancel (defined in HAL interfaces) to perform operations on the\ncorresponding broadcast radio HAL instance. When one tuner session receives a callback from the HAL\ninstance on a HAL update, such as current program info, program list, configuration flags and,\nvendor parameters, callbacks about the update are sent to all Radio Tuners linked to the same\nRadio Module.\n\nBroadcast Radio HAL\n-------------------\n\n| In Android 13 and lower, versions of the BRS are provided in HIDL and AIDL. New features are added **only** to releases of Android 14 and higher.\n\nTo learn more about the HIDL and AIDL interfaces of broadcast radio and the differences between\nthe two, see\n[Broadcast Radio HAL interface](/docs/automotive/radio/broadcast-radio-hal)."]]