Transmissão Celular

O módulo CellBroadcast reduz esforços repetitivos para OEMs (que por sua vez reduz a fragmentação em todo o ecossistema Android e fornece comportamento consistente para os usuários finais) e ajuda a agilizar testes de operadora e certificação para requisitos relacionados ao CellBroadcast (porque o código não pode ser modificado por OEMs ). Este módulo é atualizável, o que significa que pode receber atualizações de funcionalidades fora do ciclo normal de lançamento do Android.

Formato do pacote

O módulo CellBroadcast consiste no seguinte serviço e aplicativo.

  • O serviço CellBroadcastService suporta decodificação de SMS CellBroadcast, cerca geográfica para alerta de emergência sem fio (WEA) 3.0, verificações de duplicação de mensagens e transmissão de mensagens para aplicativos. É um serviço de mensagens um-para-muitos com segmentação geográfica e cerca geográfica, projetado para entregar mensagens a vários usuários de telefones celulares, em uma área definida, ao mesmo tempo. O serviço é definido pelo comitê ETSI GSM, 3GPP , e faz parte dos padrões de telecomunicações.

  • O aplicativo CellBroadcastReceiver é um aplicativo de sistema padrão que lida com alertas de emergência e não emergenciais (como alertas âmbar e presidenciais) e apresenta as informações aos usuários finais com base nas regulamentações regionais e da operadora.

Fluxo de mensagens CellBroadcast

A figura a seguir mostra o fluxo de mensagens CellBroadcast.

Fluxo de mensagens CellBroadcastReceiver

Figura 1. Fluxo de mensagens CellBroadcastReceiver

  1. A camada de interface de rádio (RIL) notifica InBoundSMSHandler sobre um SMS CDMA/GSM CellBroadcast.

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

  3. Depois que a mensagem é processada, CellBroadcastService encaminha a intenção para o aplicativo CellBroadcastReceiver padrão do sistema.

  4. O aplicativo CellBroadcastReceiver exibe a mensagem ao usuário.

Formato do módulo

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

Dependências do módulo

O módulo CellBroadcast interage com a estrutura usando apenas @SystemApi estável (sem APIs @hide ) e depende das seguintes bibliotecas estáticas.

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

Você pode personalizar a configuração usando RROs (sobreposições de recursos de tempo de execução) .

Configuração de permissão

O módulo CellBroadcast é assinado com uma assinatura do Google em vez de uma assinatura da plataforma, o que significa que o módulo perde o acesso às permissões de assinatura. Em vez disso, o Android 11 define a nova permissão de assinatura com.android.cellbroadcastservice.FULL_ACCESS_CELL_BROADCAST_HISTORY dentro do módulo CellBroadcast; somente pacotes no módulo podem obter a permissão, pois são assinados com a mesma chave. Esta permissão permite que o aplicativo CellBroadcastReceiver tenha acesso total ao banco de dados dentro do CellBroadcastService.

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

Integrando o módulo CellBroadcast

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

Integrando com configurações

Você pode decidir onde integrar as configurações do CellBroadcast no aplicativo 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 ). Para iniciar o aplicativo CellBroadcastReceiver a partir do aplicativo Configurações, altere as seguintes 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>

Integração com aplicativos de mensagens

Você pode integrar um link de aplicativo em aplicativos de mensagens para abrir o histórico de mensagens do CellBroadcast. No aplicativo Android Messaging, isso foi integrado em Configurações > Avançado > Alerta de emergência . Para integrar um link em seu próprio aplicativo de mensagens, defina o caminho no aplicativo de mensagens e configure o nome do componente para o módulo CellBroadcast como com.android.cellbroadcastreceiver/com.android.cellbroadcastreceiver.CellBroadcastListActivity .

Integração com caixa de entrada de SMS

Você pode ativar a exibição de mensagens CellBroadcast no aplicativo de mensagens padrão substituindo a configuração a seguir usando uma sobreposição de recurso de tempo 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ê deve conceder a permissão AppOpsManager.OP_WRITE_SMS ao módulo CellBroadcast para fornecer suporte de ponta a ponta. Para uma implementação de referência AOSP, consulte este patch SmsApplication.java .

Iniciando o aplicativo CellBroadcastReceiver

O aplicativo CellBroadcastReceiver possui os seguintes pontos de inicialização.

  • O menu do aplicativo Configurações.

  • Um aplicativo (incluindo aplicativos de terceiros), como um aplicativo de mensagens vinculado ao histórico de mensagens do CellBroadcast.

  • (Opcional) Um ícone de inicialização na tela inicial do Android adicionado pelo OEM. Para obter detalhes, consulte Adicionando um ícone de inicialização .

Configurações do aplicativo CellBroadcastReceiver

As capturas de tela a seguir mostram o menu de configurações do aplicativo CellBroadcastReceiver.

Menu de configurações do aplicativo CellBroadcastReceiver

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

Histórico de alertas de emergência

Figura 3. Tela de histórico de alertas de emergência

Adicionando ícones de inicialização

Você pode ativar o acesso ao histórico de mensagens do CellBroadcast no inicializador de aplicativos e por meio de seus próprios ícones de inicialização.

  • Para ativar o acesso ao histórico de mensagens no inicializador de aplicativos, substitua a configuração a seguir usando um RRO.

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

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

Habilitando o código secreto CMAS

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

Requisito de informações de área: Canal 50

O Canal 50 é um canal especial para as operadoras transmitirem informações relacionadas à área (exceto MTN na África do Sul). Para este canal, as mensagens transmitidas não resultam em uma caixa de diálogo pop-up ou notificação. Em vez disso, as mensagens de difusão aparecem no status do SIM do menu Configurações ou na barra de status (por exemplo, exibindo um CEP).

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

  • Registre a transmissão android.telephony.action.AREA_INFO_UPDATED e substitua o nome do pacote receptor config_area_info_receiver_packages por meio de um RRO.

  • Vincular a CellBroadcastService.CELL_BROADCAST_SERVICE_INTERFACE .

Como os aplicativos Configurações e SysUI estão fora do escopo do módulo CellBroadcast, você deve implementar suas alterações no SystemUI ou no aplicativo Configurações para fornecer suporte completo. Para obter uma implementação de referência, consulte o aplicativo CellBroadcastService Settings .

Personalização

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

  • Para obter uma lista de configurações sobreponíveis, consulte overlayable.xml .

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

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

Migrando dados

O Android 11 inclui um aplicativo CellBroadcast legado, que é um mecanismo para preservar e migrar dados de aplicativos (incluindo configurações do usuário e históricos de alertas de emergência) para dispositivos atualizados para o módulo CellBroadcast. As implementações do Android que usam o módulo CellBroadcast devem incluir o aplicativo CellBroadcast herdado em sua construção para migração de dados. Se sua implementação usar uma solução CellBroadcast personalizada, você deverá definir um APK CellBroadcastContentProvider para preservar os dados (você pode remover com segurança o APK de transmissão celular herdado em uma versão subsequente).

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

Usando um APK CellBroadcastContentProvider definido pelo OEM

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

  • O APK é um APK headless que exibe apenas o conteúdo de seu banco de dados e SharedPreferences por meio de um objeto ContentProvider com a autoridade cellbroadcast-legacy e não é acessível a aplicativos de terceiros.

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

Para migrar SharedPreferences para o módulo CellBroadcast, o APK CellBroadcastContentProvider deve oferecer suporte ao método 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ência compartilhadas suportadas para o módulo CellBroadcast. Os dados vêm de SharedPreferences para o método ContentProvider.call .

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

  • Autoridade: @SystemAPI CellBroadcast.LEGACY_CONTENT_URI . As colunas de consulta listam propriedades de mensagens suportadas para o módulo CellBroadcast. Recebe dados (do seu banco de dados) para o método ContentProvider.query .

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

Teste

O Android Compatibility Test Suite (CTS) verifica a funcionalidade de APIs de sistema dependentes de aplicativos. Você também pode executar unit tests/testappsp .

Se o OEM tiver habilitado o código secreto CMAS para um dispositivo, esse dispositivo poderá oferecer suporte ao modo de depuração com os seguintes recursos.

  • Os alertas de teste são agrupados em Outros alertas com um botão liga/desliga.

  • 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 número de série, ID da mensagem e data de validade.

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

Contato

Para mais detalhes ou dúvidas sobre o módulo CellBroadcast, entre em contato com o grupo de suporte CellBroadcast .