O conjunto de rádio de transmissão consiste nos componentes ilustrados na Figura 1.
App de referência do rádio
Para saber como implementar o controle de rádio, consulte Implementação de controle de rádio.
Um exemplo de app de rádio Java (packages/apps/Car/Radio
) serve como uma implementação
de referência. Quando o serviço do app é iniciado, ele solicita que o gerenciador de rádio abra um sintonizador de rádio. Em seguida,
o app pode enviar solicitações para o sintonizador de rádio, como sintonizar uma estação de rádio, frequência
ou procurar a próxima estação de rádio disponível. O app recebe atualizações do gerenciador de rádio e
do sintonizador de rádio no app Rádio, como informações de programas atuais, listas de programas de rádio, configurações e
parâmetros definidos pelo fornecedor. O app de rádio de referência só oferece suporte para rádio AM e FM. Os OEMs podem modificar ou
substituir o app Rádio como quiserem.
Gerenciador de rádio
Quando o app solicita que o gerenciador de rádio abra um sintonizador, o gerenciador
(frameworks/base/core/java/android/hardware/radio/RadioManager.java
) solicita que o
serviço de rádio de transmissão (BRS, na sigla em inglês) abra uma sessão de sintonizador e, em seguida, envolve a sessão em um sintonizador de rádio
(frameworks/base/core/java/android/hardware/radio/RadioTuner.java
), que é retornado
ao app.
O sintonizador de rádio define APIs (como sintonizar, avançar e cancelar) que podem ser chamadas de apps de rádio
e enviar solicitações para o BRS. Os métodos de callback (RadioTuner.Callback
) definidos no sintonizador de
rádio enviam atualizações sobre o HAL de rádio de transmissão, como informações de programa atuais, listas de
programas e parâmetros definidos pelo fornecedor, do BRS para os apps.
Serviço de transmissão de rádio
O serviço de rádio de transmissão
(frameworks/base/services/core/java/com/android/server/broadcastradio
) é o serviço
do cliente para o HAL de rádio de transmissão. O BRS coordena vários gerenciadores de rádio com HALs de rádio
de transmissão. O BRS oferece suporte a
HALs de rádio de transmissão de
Linguagem de definição de interface (HAL, na sigla em inglês) (HIDL) e
Linguagem de definição de interface do Android (AIDL). O BRS se vincula à HAL AIDL quando algum serviço da HAL AIDL existe.
Caso contrário, o serviço se vincula à HAL HIDL. O BRS cria um módulo de rádio
para cada instância de HAL disponível (como AM, FM e DAB).
Cada gerenciador de rádio pode solicitar que o BRS crie uma sessão de sintonizador no módulo de rádio correspondente com base no tipo de rádio. Cada sessão de sintonizador pode chamar métodos, como sintonizar, avançar e cancelar (definidos nas interfaces HAL) para realizar operações na instância HAL de rádio de transmissão correspondente. Quando uma sessão de sintonizador recebe um callback da instância do HAL em uma atualização do HAL, como informações de programa atuais, lista de programas, flags de configuração e parâmetros do fornecedor, os callbacks sobre a atualização são enviados para todos os sintonizadores de rádio vinculados ao mesmo módulo de rádio.
HAL de rádio de transmissão
Para saber mais sobre as interfaces HIDL e AIDL de rádio de transmissão e as diferenças entre elas, consulte Interface HAL de rádio de transmissão.