Implementando recursos de emergência

Todos os dispositivos móveis vendidos na Índia a partir de 1º de janeiro de 2017 deverão fornecer um botão de pânico para atender aos requisitos do Departamento de Telecomunicações da Índia (DoT). Para atender a esses requisitos regulatórios, o Android inclui uma implementação de referência do recurso Emergency Affordance para ativar um botão de pânico em dispositivos Android.

Esse recurso é ativado por padrão no Android 8.0 e versões superiores, mas deve ser corrigido em versões existentes de versões anteriores. Atualmente, esta funcionalidade destina-se exclusivamente a dispositivos vendidos no mercado indiano, mas pode ser incluída em todos os dispositivos vendidos em todo o mundo, uma vez que a funcionalidade não tem efeito fora da Índia.

Exemplos e fonte

O recurso Emergency Affordance é implementado nas estruturas/projeto base do Android Open Source Project (AOSP). Ele está disponível na ramificação principal e é ativado por padrão no Android 8.0 e versões superiores.

Este recurso está atualmente disponível nas seguintes ramificações e commits. Essas informações são fornecidas para permitir que os fabricantes de dispositivos corrijam facilmente as alterações necessárias em suas compilações existentes. Os fabricantes de dispositivos que desejam implementar o recurso de recursos de emergência de referência do AOSP podem selecionar os commits das ramificações aplicáveis ​​em suas próprias compilações.

Tabela 1. Escolhas para o recurso de recursos de emergência de referência do AOSP

Filial Confirmações
principal e0c3c66 Adicionado recurso de recursos de emergência
42a4338 Adicionadas traduções para sequência de ação de emergência
4df8d64 Corrigido um problema em que a disponibilidade de emergência aparecia em tablets
nougat-dev e6680d9 Adicionado recurso de recursos de emergência
95e1865 Adicionadas traduções para sequência de ação de emergência
a70bb89 Corrigido um problema em que o recurso de emergência aparecia em tablets
marshmallow-dev cd22634 Adicionado recurso de recursos de emergência
13f51c6 Adicionadas traduções para sequência de ação de emergência
6531666 Corrigido um problema em que o recurso de emergência aparecia em tablets
pirulito-mr1-dev 5fbc86b Adicionado recurso de recursos de emergência
1b60879 Adicionadas traduções para sequência de ação de emergência
d74366f Corrigido um problema em que a disponibilidade de emergência aparecia em tablets

Implementação

O recurso Emergency Affordance não faz alterações nas APIs expostas por meio do Android Software Development Kit (SDK). Quando habilitado e ativado, o recurso fornece dois gatilhos que podem iniciar uma chamada de emergência para 112, que é o único número de emergência a ser usado na Índia e exigido pelos regulamentos DoT indianos.

Uma chamada de emergência é iniciada por:

Pressionando longamente o botão EMERGÊNCIA
na tela de bloqueio
Tocando na opção Emergência
no menu de ação global
botão de emergência
Figura 1. Botão EMERGÊNCIA na tela de bloqueio.
opção de emergência
Figura 2. Ação de emergência no menu de ação global (acessado pressionando longamente a tecla liga/desliga).

Este recurso apresenta os seguintes componentes internos:

  • EmergencyAffordanceManager
    frameworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java
    
  • EmergencyAffordanceService
    frameworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
    

Gerente de Recursos de Emergência

O EmergencyAffordanceManager fornece uma API interna para usar o recurso Emergency Affordance. Ele fornece métodos para iniciar a chamada de emergência e consultar em tempo de execução se o recurso deve ser habilitado.

  • void performEmergencyCall() . Inicia uma chamada de emergência.
  • boolean needsEmergencyAffordance() . Determina se o recurso deve estar ativo.

O recurso pode ser desabilitado permanentemente no momento da construção, alterando a constante EmergencyAffordanceManager.ENABLED para false . Isso fará com que needsEmergencyAffordance() sempre retorne false e evite que o EmergencyAffordanceService seja iniciado.

Serviço de Acessibilidade de Emergência

O EmergencyAffordanceService é um serviço de sistema que monitora o Mobile Country Code (MCC) de todas as redes celulares detectadas e o MCC dos cartões SIM instalados. Se algum dos cartões SIM instalados ou redes celulares detectadas tiver um MCC correspondente a um dos MCCs da Índia (404 ou 405), o recurso será ativado. Isso significa que o recurso pode ser ativado na Índia mesmo se nenhum cartão SIM estiver presente. Presume-se que a rede móvel permitirá o registo para chamadas de emergência mesmo sem um cartão SIM instalado. O recurso permanecerá ativado até que um SIM não indiano seja instalado e nenhuma das redes detectadas tenha um MCC correspondente.

Os seguintes recursos e configurações afetam o comportamento do recurso Emergency Affordance. Se o tipo de configuração for:

  • Resource , é um recurso interno definido em frameworks/base/core/res/res/values/config.xml .
  • Configuração , é uma configuração armazenada no provedor de configurações do sistema.

Tabela 2. Configurações que afetam o comportamento do recurso de recursos de emergência

Tipo de configuração Nome Descrição
Recurso config_emergency_call_number O número de telefone discado automaticamente quando a chamada de emergência é iniciada.
Tipo: Corda
Padrão: 112
Recurso config_emergency_mcc_codes Uma matriz de inteiros listando os MCCs nos quais o recurso deve estar ativo.
Tipo: Matriz de inteiros
Padrão: {404.405}
Contexto número_de_affordancedeemergência Substituição da configuração global com o número para ligar com recursos de emergência. Isso só terá efeito em imagens de compilação depuráveis ​​(ou seja, o tipo de compilação é userdebug ou eng). Isso se destina apenas a testes.
Tipo: Corda
Padrão: não definido
Contexto force_emergency_affordance Configuração global, se a disponibilidade de emergência deve ser mostrada independentemente do estado do dispositivo. Isso se destina apenas a testes.
Tipo: Booleano (1 ou 0)
Padrão: não definido --> 0

Habilite chamadas de emergência para 112

O recurso de emergência conecta a chamada usando o discador de emergência para que a chamada possa ser conectada quando a tela de bloqueio estiver ativa. O discador de emergência conecta chamadas apenas à lista de números fornecida pela Radio Interface Layer (RIL) através da propriedade do sistema:

  • ril.ecclist quando nenhum SIM está instalado.
  • ril.ecclist SimSlotNumber quando um SIM é inserido e SimSlotNumber é o ID do slot do assinante padrão.

Os fabricantes de dispositivos que usam o recurso de emergência devem garantir que os dispositivos na Índia sempre habilitem o 112 como número de emergência no RIL.

Validação

Durante o teste em uma compilação depurável, o número chamado pode ser alterado com o seguinte comando:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Embora essa configuração possa ser definida em uma compilação de usuário normal, ela será ignorada. Para efetivamente conectar a chamada o número deve estar na lista de números de emergência fornecida pelo RIL. Isso pode ser definido temporariamente usando o seguinte comando executado a partir de um shell root em um dispositivo userdebug:

setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"

O comando a seguir também pode ser usado para forçar a ativação do recurso Emergency Affordance, mesmo na ausência de detecção de uma rede móvel indiana ou de inserção de um cartão SIM indiano.

adb shell settings put global force_emergency_affordance 1

No mínimo, recomenda-se testar os seguintes casos:

  • Uma vez ativado, pressionar longamente o botão EMERGÊNCIA na tela de bloqueio (Figura 1) inicia uma chamada para o número de emergência especificado.
  • Uma vez ativado, o item Emergência no Menu de Ação Global estará presente e tocar nele iniciará uma chamada para o número de emergência especificado.
  • O recurso não é ativado na ausência de uma rede móvel indiana detectada com um cartão SIM não indiano instalado.
  • O recurso é ativado no dispositivo quando um cartão SIM indiano é instalado, independentemente das redes móveis detectadas.
  • O recurso é ativado no aparelho na presença de uma Rede Móvel Indiana, independente dos cartões SIM instalados.

Se um dispositivo incluir suporte para vários cartões SIM, o teste deverá garantir que a detecção do SIM MCC funcione corretamente em cada slot SIM. O recurso Emergency Affordance não é regido pela compatibilidade do Android, portanto, não há testes do Compatibility Test Suite (CTS) para ele.

perguntas frequentes

P. O número de emergência 112 ainda não foi ativado na Índia. Ainda deve ser usado?

112 é o número que será usado na Índia como Ponto de Atendimento de Segurança Pública (PSAP), conforme definido pelos Sistemas Integrados de Comunicações e Resposta a Emergências (IECRS). Até que o PSAP seja comissionado, todas as chamadas para o 112 serão encaminhadas para o número de emergência 100 existente (embora isto seja da responsabilidade da operadora e não do Android).

P. E quanto a outros gatilhos, como pressionar três vezes o botão liga/desliga?

Os fabricantes de dispositivos podem optar por implementar gatilhos adicionais. No entanto, embora o DoT indiano aprove o toque triplo no botão liga/desliga do hardware, esse gatilho não é compatível com a implementação de referência AOSP, pois alguns aplicativos amplamente usados ​​(por exemplo, o aplicativo Câmera) usam gestos do botão liga/desliga que incluem toques repetidos no botão liga/desliga. Esses aplicativos podem interferir no discador de emergência ou o usuário pode acionar acidentalmente o botão de pânico ao tentar acionar ações nesses aplicativos.