Transmissão celular

O módulo CellBroadcast reduz o trabalho repetitivo para OEMs (que por sua vez reduz a fragmentação em todo o ecossistema Android e oferece comportamento aos usuários finais) e ajuda a simplificar os testes e as certificação para requisitos relacionados a CellBroadcast (porque o código não pode ser modificados por OEMs). Este módulo é atualizável, ou seja, ele pode receber atualizações para fora do ciclo normal de lançamento do Android.

Formato do pacote

O módulo CellBroadcast consiste no serviço e no app a seguir.

  • O serviço CellBroadcastService suporta a decodificação de SMS do CellBroadcast, fronteira geográfica virtual para o alerta de emergência sem fio (WEA, na sigla em inglês) 3.0; verificações de duplicação de mensagens; e transmitindo mensagens para apps. É uma segmentação geográfica de um para muitos, e serviço de mensagens por fronteira geográfica virtual projetado para entregar mensagens a vários dispositivos usuários de celular em uma área definida, ao mesmo tempo. O serviço é definido pela o comitê GSM ETSI 3GPP e faz parte do padrões de telecomunicações.

  • O app CellBroadcastReceiver é um app padrão do sistema que processa alertas de emergência e não urgentes (como alertas âmbar e presidenciais) e apresenta as informações aos usuários finais com base na operadora e na região regulamentações.

Fluxo de mensagens do CellBroadcast

A figura a seguir mostra o fluxo de mensagens do CellBroadcast.

Fluxo de mensagens de CellBroadcastReceiver

Figura 1. Fluxo de mensagens de CellBroadcastReceiver

  1. A camada de interface de rádio (RIL) notifica InBoundSMSHandler sobre uma conexão SMS do CellBroadcast.

  2. A estrutura encaminha o CellBroadcast SMS ao módulo da CBS para analisar e processar a mensagem recebida.

  3. Após o processamento da mensagem, o CellBroadcastService encaminha a intenção para o app CellBroadcastReceiver padrão do sistema.

  4. O app CellBroadcastReceiver exibe a mensagem para o usuário.

Formato do módulo

O CellBroadcastService e o aplicativo CellBroadcastReceiver estão incluídos em um único arquivo APEX (com.android.cellbroadcast), disponível para dispositivos que executam Android 11 ou versão mais recente O módulo inclui código package/app/CellBroadcastReceiver e migra as classes de framework atuais para packages/modules/CellBroadcastService.

Dependências do módulo

O módulo CellBroadcast interage com o framework usando apenas objetos @SystemApi (sem APIs @hide) e depende das bibliotecas estáticas a seguir.

  • Androidx.legacy_legacy-support-v13
  • Androidx.recyclerview_recyclerview
  • Androidx.preference_preference
  • androidx.legacy_legacy-preference-v14
  • androidx.appcompat_appcompat

É possível personalizar a configuração usando sobreposições de recursos no ambiente de execução (RROs, na sigla em inglês).

Configuração da permissão

O módulo CellBroadcast é assinado com uma assinatura do Google em vez de uma plataforma assinatura, o que significa que o módulo perde o acesso às permissões de assinatura. Em vez disso, o Android 11 define a nova assinatura permissão com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY dentro do módulo CellBroadcast. somente os pacotes no módulo podem obter o porque são assinados com a mesma chave. Com essa permissão, App CellBroadcastReceiver para ter acesso total ao banco de dados dentro CellBroadcastService.

A plataforma concede ao ambiente de execução android.permission.READ_CELL_BROADCASTS permissão ao app padrão de SMS do sistema para acessar o histórico de emergência e alertas.

Integrar o módulo CellBroadcast

Esta seção descreve como integrar o módulo CellBroadcast.

Integrar com configurações

Você pode decidir onde integrar as configurações do CellBroadcast no app Configurações Os usuários finais acessam a página de configurações do CellBroadcast em Configurações > Aplicativos e Notificações > Avançado > Alerta de emergência (em inglês). Para iniciar no app CellBroadcastReceiver no app Configurações, altere o seguinte definir configurações com o nome do pacote com.android.cellbroadcastreceiver:

<!-- Cell broacast receiver package name [DO NOT TRANSLATE] -->
<string name="cell_broadcast_receiver_package">
com.android.cellbroadcastreceiver</string>

Integrar com apps de mensagens

Você pode integrar um link de app a apps de mensagens para abrir o CellBroadcast histórico de mensagens. No aplicativo de mensagens do Android, isso foi integrado ao Configurações > Avançado > Alerta de emergência. Para integrar um link seu próprio aplicativo de mensagens, definir o caminho no aplicativo de mensagens e configurar o para o módulo CellBroadcast como com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity:

Integrar com caixa de entrada de SMS

Você pode ativar a exibição de mensagens do CellBroadcast no app de mensagens padrão substituindo a configuração a seguir usando uma sobreposição de recursos no ambiente de execução.

<item type="bool" name="enable_write_alerts_to_sms_inbox" />

Como a concessão de permissões está fora do escopo do módulo CellBroadcast, você precisa conceder a permissão AppOpsManager.OP_WRITE_SMS à rede CellBroadcast módulo para oferecer suporte completo. Para uma implementação de referência do AOSP, consulte este SmsApplication.java patch.

Iniciar o app CellBroadcastReceiver

O app CellBroadcastReceiver tem os seguintes pontos de inicialização.

  • Menu do app Configurações.

  • Um app (incluindo apps de terceiros), como um app de mensagens com links para Histórico de mensagens do CellBroadcast.

  • (Opcional) Um ícone de inicialização da tela inicial do Android adicionado pelo OEM. Para ver mais detalhes, consulte Como adicionar um ícone de inicialização.

Configurações do app CellBroadcastReceiver

As capturas de tela abaixo mostram o menu de configurações do app CellBroadcastReceiver.

Menu de configurações do app CellBroadcastReceiver

Figura 2. Menu de configurações do app CellBroadcastReceiver

Histórico de alertas de emergência

Figura 3. Tela de histórico do alerta de emergência

Adicionar ícones de inicialização

Você pode ativar o acesso ao histórico de mensagens do CellBroadcast no Acesso rápido aos apps e pelos próprios ícones de inicialização.

  • Para ativar o acesso ao histórico de mensagens pelo Acesso rápido aos apps, substitua a opção configuração a seguir usando uma RRO.

    <item type="bool" name="show_message_history_in_launcher" />
    
  • Para substituir o ícone padrão do AOSP, modifique a seguinte configuração usando uma RRO.

    <!-- Customize launcher icon for cellbroadcast history -->
    <item type="mipmap" name="ic_launcher_cell_broadcast" />
    

Ativar o código secreto CMAS

Para ativar o código secreto CMAS, *#*#CMAS#*#* (*#*#2627#*#* no de discagem), o aplicativo discador deve ouvir o código do discador especial na forma de *#*#code#*#* e processar o código usando o método público sendDialerSpecialCode

Requisito de informações da área: canal 50

O canal 50 é um canal especial para as operadoras transmitirem informações (exceto para MTN na África do Sul). Para este canal, transmitir não resultem em uma caixa de diálogo ou notificação. Em vez disso, transmita as mensagens aparecem no status do chip no menu Configurações ou na barra de status (por exemplo, exemplo, exibir um CEP).

A implementação CellBroadcastService do Android fornece suporte para o seguintes APIs no serviço de transmissão celular para os aplicativos Configurações e SysUI para obtenha as informações de transmissão do canal 50. Para implementar isso, faça o seguinte:

  • Registrar a transmissão android.telephony.action.AREA_INFO_UPDATED e substituir o nome do pacote receptor config_area_info_receiver_packages usando uma RRO.

  • Vincular a CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE.

Como os apps Configurações e SysUI estão fora do escopo da transmissão implemente as alterações na SystemUI ou no app Configurações para suporte de ponta a ponta. Para uma implementação de referência, consulte a Configurações do CellBroadcastService app.

Personalização

Não é possível modificar diretamente o código-fonte do módulo CellBroadcast, mas você pode pode usar sobreposições de recursos no ambiente de execução (RROs) para ativar (ou desativar) parâmetros (por exemplo, você pode personalizar a cor das notificações e dimensões em caixas de diálogo). Para substituir os valores padrão dos parâmetros usados na módulo CellBroadcast, mude o nome do pacote de destino para com.android.cellbroadcastreceiver: Além disso:

  • Para uma lista de configurações de sobreposição, consulte overlayable.xml

  • Para conferir um exemplo de implementação, consulte RROSampleTestApp no AOSP.

Se a implementação não tiver recursos de tradução de strings da interface ou se as traduções não atenderem às suas expectativas, poderá substituir recursos usando uma RRO ou trabalhe com a equipe de tradução do Google para traduções de strings para o módulo CellBroadcast. Se você substituir a tradução recursos, o Google precisa expor essas strings em overlayable.xml para permitir a substituição. Se você precisar de mais configurações para personalização da interface, entre em contato com grupo de suporte CellBroadcast.

Migrar dados

O Android 11 inclui um app CellBroadcast legado, que é um mecanismo para preservar e migrar dados de apps (incluindo configurações de usuários e históricos de alerta de emergência) para os dispositivos que estão fazendo upgrade para o módulo CellBroadcast. As implementações do Android que usam o módulo CellBroadcast precisam incluir o app CellBroadcast legado no build para migração de dados. Se as implementação usar uma solução CellBroadcast personalizada, você deverá definir um APK CellBroadcastContentProvider para preservar os dados. Você pode remover o APK de transmissão celular legado em uma versão subsequente).

Nos dispositivos atualizados para usar o módulo CellBroadcast, o módulo busca dados da API LegacyCellBroadcastApp do AOSP O APK CellBroadcastContentProvider definido pelo OEM por meio do APK bem definido cellbroadcast-legacy autoridade.

Usar um APK CellBroadcastContentProvider definido pelo OEM

Ao definir um APK CellBroadcastContentProvider, o APK precisa seguir estas especificações.

  • O APK é headless que exibe apenas o conteúdo do próprio banco de dados. e SharedPreferences por meio de um ContentProvider objeto com a autoridade cellbroadcast-legacy e não pode ser acessado a aplicativos de terceiros.

  • O APK é desenvolvido e de propriedade do OEM, que pode continuar a hospedar o esquema de API oculto.

Para migrar SharedPreferences para o módulo CellBroadcast, o O APK CellBroadcastContentProvider precisa oferecer suporte ao ContentProvider.call). com os seguintes parâmetros:

  • Autoridade:@SystemAPI CellBroadcast.LEGACY_CONTENT_URI
  • Método: @SystemAPI CellBroadcast.CALL_METHOD_GET_PREFERENCE
  • Arg.:@SystemAPI CellBroadcast.Preference

    Esta é uma lista de chaves de preferências compartilhadas compatíveis com o protocolo CellBroadcast mais tarde neste módulo. Os dados vêm de SharedPreferences para o ContentProvider.call .

Para migrar o histórico de mensagens para o módulo CellBroadcast, o O APK CellBroadcastContentProvider precisa oferecer suporte ao ContentProvider.query com os seguintes parâmetros:

  • Autoridade:@SystemAPI CellBroadcast.LEGACY_CONTENT_URI. Colunas de consulta lista as propriedades de mensagem compatíveis com o módulo CellBroadcast. Recebe dados (do banco de dados) para o método ContentProvider.query.

Para uma implementação de referência para CellBroadcastContentProvider,, consulte LegacyCellBroadcastContentProvider.

Teste

O Teste de Compatibilidade do Android (CTS, na sigla em inglês) verifica a funcionalidade de APIs do sistema dependentes de apps. Você também pode executar o módulo CellBroadcast unit tests/testappsp

Se o OEM ativou o código secreto CMAS para um dispositivo, dispositivo pode suportar o modo de depuração com os seguintes recursos.

  • Os alertas de teste são agrupados em Outros alertas com um botão de ativação/desativação.

  • O histórico inclui todas as mensagens que foram recebidas, mas não exibidas, como mensagens duplicadas ou mensagens em outro idioma.

  • As mensagens exibem todos os parâmetros disponíveis, incluindo o número de série, a mensagem e a data de validade.

Para ativar o modo de depuração, digite *#*#CMAS#*#* no discador.

Contato

Para mais detalhes ou perguntas sobre o módulo CellBroadcast, entre em contato com o Grupo de suporte do CellBroadcast.