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 da Índia (DoT, na sigla em inglês). Para atender a esses requisitos regulamentares, o Android inclui uma implementação de referência do recurso de recurso 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 existentes de versões anteriores. Esse recurso é direcionado exclusivamente a dispositivos vendidos no mercado indiano, mas pode ser incluído em todos os dispositivos vendidos em todo o mundo, 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 principal e é ativado por padrão nas versões do Android 8.0 e mais recentes.
Esse recurso está disponível nas seguintes ramificações e confirmações. Essas informações são fornecidas para permitir que os fabricantes de dispositivos apliquem patches facilmente nas mudanças necessárias nos builds atuais. Os fabricantes de dispositivos que querem implementar o recurso de referência de Affordance de emergência do AOSP podem escolher as confirmações das ramificações aplicáveis nos próprios builds.
Tabela 1. Seleção de recursos de referência de emergência do AOSP
Filial | Confirmações |
---|---|
principal | e0c3c66
Adição do recurso de recursos 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 recursos de emergência aparecia em tablets |
nougat-dev | e6680d9
Adição do recurso de suporte emergencial 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 suporte emergencial aparecia em tablets |
marshmallow-dev | cd22634
Adição do recurso de suporte 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 suporte de emergência aparecia em tablets |
lollipop-mr1-dev | 5fbc86b
Adição do recurso de suporte em caso 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 suporte em caso de emergência aparecia em tablets |
Implementação
O recurso de recursos de emergência não faz mudanças nas APIs expostas pelo kit de desenvolvimento de software (SDK) do Android. Quando ativado, o recurso oferece dois gatilhos que podem iniciar uma chamada de emergência para o 112, que é o único número de emergência a ser usado na Índia e exigido pelas regulamentações do Departamento de Transporte indiano.
Uma chamada de emergência é iniciada por:
Toque e pressione o botão EMERGENCY na tela de bloqueio. |
Tocar na opção Emergência no menu de ações global |
---|---|
![]() Figura 1. Botão EMERGENCY na tela de bloqueio. |
![]() Figura 2. Ação de emergência no menu de ações global (acessado pressionando a tecla liga/desliga por muito tempo). |
Esse 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
EmergencyAffordanceManager
O EmergencyAffordanceManager fornece uma API interna para usar o recurso de affordance de emergência. Ele fornece métodos para iniciar a chamada de emergência e consultar no momento da execução se o recurso precisa ser ativado.
void performEmergencyCall()
: inicia uma chamada de emergência.boolean needsEmergencyAffordance()
: determina se o recurso precisa 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 falso
e impeça que 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 cartões SIM 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 que
não haja um chip. Supõe-se que a rede móvel permite
o registro de chamadas de emergência mesmo sem um chip instalado. O recurso
permanece ativado até que um SIM de outro país seja instalado e nenhuma das redes
detectadas tenha um MCC correspondente.
Os recursos e as configurações a seguir afetam o comportamento do recurso de affordance de emergência. 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 affordance 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 precisa estar ativo. Tipo: matriz de números inteiros Padrão: {404,405} |
Configuração | emergency_affordance_number | Substituição de configuração global com o número a ser chamado com o affordance
de emergência. Isso afeta apenas as 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, se o recurso de affordance de emergência precisa ser mostrado independentemente
do estado do dispositivo. Isso é destinado apenas a testes. Tipo: booleano (1 ou 0) Padrão: desativado --> 0 |
Ativar chamadas de emergência para 112
O recurso de affordância 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 camada de interface de rádio (RIL) pela propriedade do sistema:
ril.ecclist
quando nenhum chip estiver instalado.ril.ecclistSimSlotNumber
quando um chip é inserido eSimSlotNumber
é o ID do slot do assinante padrão.
Os fabricantes de dispositivos que usam o recurso de recursos de emergência precisam garantir que os dispositivos na Índia sempre ativem o 112 como um número de emergência no RIL.
Validação
Durante o teste em um build 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 build de usuário normal, ela é ignorada. Para conectar a chamada, o número precisa estar na lista de números de emergência fornecidos pelo 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 o recurso de recurso de emergência a ser ativado 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, é recomendável testar os seguintes casos:
- Quando ativado, tocar e manter pressionado o botão EMERGENCY na tela de bloqueio (Figura 1) inicia uma chamada para o número de emergência especificado.
- Quando ativado, o item Emergência no menu de ação global está presente e, ao tocar nele, uma chamada é iniciada para o número de emergência especificado.
- O recurso não é ativado se não for detectada uma rede móvel indiana com um chip de outro país instalado.
- O recurso é ativado no dispositivo quando um cartão SIM indiano é instalado, independentemente das redes móveis detectadas.
- O recurso é ativado no dispositivo na presença de uma rede móvel indiana, independentemente dos chips instalados.
Se um dispositivo tiver suporte a vários chips, o teste precisa garantir que a detecção do MCC do chip funcione corretamente em cada slot de chip. O recurso de affordance de emergência não é regido pela compatibilidade do Android. Portanto, não há testes do conjunto de teste de compatibilidade (CTS, na sigla em inglês) para ele.
Perguntas frequentes
P: O número de emergência 112 ainda não foi comissionado na Índia. Ele ainda deve ser usado?
O 112 é o número usado na Índia como a central de atendimento de segurança pública (PSAP, na sigla em inglês), conforme definido pelos sistemas integrados de resposta e comunicação de emergência (IECRS, na sigla em inglês). Até que o PSAP seja comissionado, todas as ligações para 112 serão roteadas 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, enquanto o DoT indiano aprova o toque triplo no botão liga/desliga do hardware, esse gatilho não é compatível com a implementação de referência do AOSP, já que alguns apps amplamente usados (por exemplo, o app Câmera) usam gestos do botão liga/desliga que incluem toques repetidos no botão. Esses apps 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 apps.