Todos os dispositivos móveis vendidos na Índia a partir de 1º de janeiro de 2017 precisam ter um botão de pânico para atender aos requisitos do Departamento de Telecomunicações (DoT) da Índia. Para atender a esses requisitos regulamentares, o Android inclui uma implementação de referência do recurso de facilidade de emergência para ativar um botão de pânico em dispositivos Android.
Esse recurso é ativado por padrão no Android 8.0 e versões mais recentes, mas precisa ser corrigido em builds atuais de versões anteriores. Esse recurso é destinado exclusivamente a dispositivos vendidos no mercado indiano, mas pode ser incluído em todos os dispositivos vendidos no mundo todo, já que não tem efeito fora da Índia.
Exemplos e origem
O recurso de affordance de emergência é implementado no projeto frameworks/base do Android Open Source Project (AOSP). Ele está disponível na ramificação de lançamento mais recente do Android e é ativado por padrão no Android 8.0 e em versões mais recentes.
Esse recurso está disponível nas seguintes ramificações e commits. Essas informações são fornecidas para permitir que os fabricantes de dispositivos corrijam as mudanças necessárias nas builds atuais. Os fabricantes de dispositivos que quiserem implementar o recurso de acessibilidade de emergência de referência do AOSP podem selecionar os commits das ramificações aplicáveis nos próprios builds.
Tabela 1. Cherry-picks para o recurso de acessibilidade de emergência de referência do AOSP
| Filial | Commits |
|---|---|
| android-latest-release | e0c3c66
Adição do recurso de acessibilidade de emergência 42a4338 Adição de traduções para a string de ação de emergência 4df8d64 Correção de um problema em que o recurso de acessibilidade de emergência aparecia em tablets |
| nougat-dev | e6680d9
Adição do recurso de affordance de emergência 95e1865 Adição de traduções para a string de ação de emergência a70bb89 Correção de um problema em que o recurso de affordance de emergência era exibido em tablets |
| marshmallow-dev | cd22634
Adição do recurso de conveniência de emergência 13f51c6 Adição de traduções para a string de ação de emergência 6531666 Correção de um problema em que o recurso de conveniência de emergência aparecia em tablets |
| lollipop-mr1-dev | 5fbc86b
Adição do recurso de affordance de emergência 1b60879 Adição de traduções para a string de ação de emergência d74366f Correção de um problema em que o recurso de affordance de emergência era mostrado em tablets |
Implementação
O recurso de conveniência de emergência não faz mudanças nas APIs expostas pelo kit de desenvolvimento de software (SDK) do Android. Quando ativado e ativada, o recurso oferece 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 pelas regulamentações do DoT indiano.
Uma chamada de emergência é iniciada por:
| Tocar e manter pressionado o botão EMERGÊNCIA na tela de bloqueio |
Tocar na opção Emergência no Menu de ações globais |
|---|---|
Figura 1. Botão EMERGÊNCIA na tela de bloqueio. |
Figura 2. Ação de emergência no Menu de ações globais (acessado ao tocar e pressionar a tecla liga/desliga). |
Esse recurso apresenta os seguintes componentes internos:
EmergencyAffordanceManagerframeworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.javaEmergencyAffordanceServiceframeworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
EmergencyAffordanceManager
O EmergencyAffordanceManager fornece uma API interna para usar o recurso de
acessibilidade de emergência. Ele fornece métodos para iniciar a chamada de emergência e
consultar durante a execução se o recurso deve ser ativado.
void performEmergencyCall(). Inicia uma chamada de emergência.boolean needsEmergencyAffordance(). Determina se o recurso deve estar ativo.
O recurso pode ser desativado permanentemente no momento do build mudando a constante
EmergencyAffordanceManager.ENABLED para false.
Isso faz com que needsEmergencyAffordance() sempre retorne false
e impede que o EmergencyAffordanceService seja iniciado.
EmergencyAffordanceService
O EmergencyAffordanceService é um serviço do sistema que monitora
o código de país para dispositivos móveis (MCC) de todas as redes celulares detectadas e o MCC
dos chips instalados. Se algum dos chips instalados ou das 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 sem um chip. Presume-se que a rede móvel permita o registro para chamadas de emergência mesmo sem um chip instalado. O recurso
permanece ativado até que um chip de fora da Índia seja instalado e nenhuma das redes
detectadas tenha um MCC correspondente.
Os recursos e configurações a seguir afetam o comportamento do recurso de acessibilidade de emergência. Se o tipo de configuração for:
- Recurso: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 emergência
| Tipo de configuração | Nome | Descrição |
|---|---|---|
| Recurso | config_emergency_call_number | O número de telefone que é discado automaticamente quando a chamada de emergência é iniciada. Tipo: string Padrão: 112 |
| Recurso | config_emergency_mcc_codes | Uma matriz de números inteiros que lista as MCCs em que o recurso deve estar ativo. Tipo: matriz de números inteiros Padrão: {404,405} |
| Configuração | emergency_affordance_number | Substituição da configuração global com o número a ser chamado com a ação
de emergência. Isso só tem efeito em imagens de build depuráveis (ou seja, o tipo de build é userdebug ou eng). Isso é destinado apenas a testes. Tipo: string Padrão: não definido |
| Configuração | force_emergency_affordance | Configuração global que indica se o recurso de conveniência de emergência deve ser mostrado
independente do estado do dispositivo. Isso é destinado apenas a testes. Tipo: booleano (1 ou 0) Padrão: não definido --> 0 |
Ativar chamadas de emergência para 112
O recurso de affordance de emergência conecta a chamada usando o discador de emergência para que ela possa ser conectada quando a tela de bloqueio estiver ativa. O discador de emergência conecta chamadas apenas à lista de números fornecida pela camada de interface de rádio (RIL, na sigla em inglês) pela propriedade do sistema:
ril.ecclistquando nenhum chip estiver instalado.ril.ecclistSimSlotNumberquando um chip é inserido eSimSlotNumberé o ID do slot do assinante padrão.
Os fabricantes de dispositivos que usam o recurso de conveniência de emergência precisam verificar se os dispositivos na Índia sempre ativam o 112 como um número de emergência na RIL.
Validação
Ao testar em uma versã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 um build de usuário normal, ela é ignorada. Para conectar a chamada, o número precisa estar na lista de números de emergência fornecida pela RIL. Isso pode ser definido temporariamente usando o seguinte comando executado em um shell raiz 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 de acessibilidade de emergência mesmo na ausência de uma rede móvel indiana detectada ou de um chip indiano inserido.
adb shell settings put global force_emergency_affordance 1
No mínimo, recomendamos testar os seguintes casos:
- Quando ativado, tocar e manter pressionado o botão EMERGÊNCIA na tela de bloqueio (Figura 1) inicia uma ligação para o número de emergência especificado.
- Quando ativado, o item Emergência no menu de ações globais fica disponível, e tocar nele inicia uma ligação 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 chip de fora da Índia instalado.
- O recurso é ativado no dispositivo quando um chip da Índia é instalado, independente das redes móveis detectadas.
- O recurso é ativado no dispositivo na presença de uma rede móvel indiana, independente dos chips instalados.
Se um dispositivo for compatível com vários chips, o teste vai verificar se a detecção de MCC do chip funciona corretamente em cada slot. O recurso de acessibilidade de emergência não é regido pelo Teste de compatibilidade do Android (CTS, na sigla em inglês). Portanto, não há testes do CTS para ele.
Perguntas frequentes
P: O número de emergência 112 ainda não foi comissionado na Índia. Ele ainda deve ser usado?
112 é o número usado na Índia como o Ponto de Atendimento de Segurança Pública (PSAP, na sigla em inglês), conforme definido pelos Sistemas Integrados de Comunicações e Resposta a Emergências (IECRS, na sigla em inglês). Até que a PSAP seja comissionada, todas as ligações para 112 serão encaminhadas para o número de emergência 100 (embora isso seja responsabilidade da operadora, 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 implementar outros acionadores. No entanto, embora o DoT da Índia aprove o toque triplo no botão liga/desliga do hardware, esse gatilho não é compatível na implementação de referência do AOSP, já que alguns apps usados com frequência (por exemplo, o app Câmera) usam gestos do botão liga/desliga que incluem toques repetidos. Esses apps podem interferir no discador de emergência, ou o usuário pode acionar acidentalmente o botão de pânico ao tentar realizar ações neles.