A pilha de rádio de transmissão consiste nos componentes ilustrados na Figura 1.
App de referência de rádio
Para mais detalhes sobre como implementar o controle de rádio, consulte Implementação de controle de rádio.
Um app de rádio Java de exemplo (packages/apps/Car/Radio
) serve como referência.
implementação. Quando o serviço do app é iniciado, ele solicita que o Radio Manager abra um sintonizador de rádio. Depois,
o app pode enviar solicitações ao 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 Radio Manager e
sintonizador de rádio no rádio, como informações sobre programas atuais, listas de programas de rádio, configurações e
parâmetros definidos pelo fornecedor. O app Rádio de referência tem suporte apenas para rádio AM e FM. OEMs podem modificar ou
substitua o app Radio conforme desejado.
Gerenciador de rádio
Quando o app solicita que o Gerenciador de rádio abra um sintonizador, o Gerenciador de rádio
(frameworks/base/core/java/android/hardware/radio/RadioManager.java
) solicita
Broadcast Radio Service (BRS) para abrir uma sessão de sintonizador e, em seguida, encapsular a sessão em um sintonizador de rádio
(frameworks/base/core/java/android/hardware/radio/RadioTuner.java
), que é retornado
para o app.
O Radio Tuner define APIs (como sintonizar, avançar e cancelar) que podem ser chamadas de apps de rádio
e enviar solicitações para o BRS. Métodos de callback (RadioTuner.Callback
) definidos em "Radio"
O sintonizador envia atualizações sobre a HAL de rádio de transmissão, como informações e programas
listas e parâmetros definidos pelo fornecedor, do BRS aos apps.
Serviço de rádio de transmissão
Serviço de rádio aberta
(frameworks/base/services/core/java/com/android/server/broadcastradio
) é o cliente
para a HAL da rádio de transmissão. O BRS coordena vários gerentes de rádio com a rádio Broadcast Radio
(HALs). O BRS oferece suporte
Linguagem de definição de interface HAL (HIDL) e
Transmissão Idioma de definição da interface do Android (AIDL)
HALs de rádio. O BRS é vinculado à HAL da AIDL quando existe algum serviço da HAL AIDL.
Caso contrário, o serviço será vinculado
à HAL de HIDL. O BRS cria um módulo de rádio
para cada instância HAL disponível (como AM, FM e DAB).
Cada gerenciador de rádio pode solicitar que o BRS crie uma sessão de sintonização módulo de rádio correspondente, com base no tipo de rádio. Cada sessão de sintonizador pode chamar métodos, como como ajuste, etapa e cancelamento (definidos nas interfaces HAL) para realizar operações no instância HAL de rádio de transmissão correspondente. Quando uma sessão de sintonizador recebe um callback da HAL. em uma atualização da HAL, como informações do programa atual, lista de programas, flags de configuração e fornecedores, callbacks sobre a atualização são enviados a 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 transmitido e as diferenças entre os dois, consulte Interface HAL da rádio de transmissão.