Implemente auxílio emergencial

Todos os dispositivos móveis vendidos na Índia a partir de 1o de janeiro de 2017 precisam ter uma para atender aos requisitos do Departamento de Telecomunicações (DoT, na sigla em inglês) da Índia. Para cumprir esses requisitos regulatórios, o Android inclui uma referência implementação do recurso Affordance 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 em versões mais recentes, precisam ser corrigidos em builds atuais de versões anteriores. Isso é segmentado exclusivamente para dispositivos vendidos no mercado indiano, mas pode ser incluídos em todos os dispositivos vendidos em todo o mundo, pois o recurso não tem efeito fora da Índia.

Exemplos e origem

O recurso Affordance de emergência é implementado no Android Open Source Projeto (AOSP) frameworks/base (em inglês) em um projeto de IA. Ele está disponível na ramificação principal e é ativado por padrão em Versões do Android 8.0 e mais recentes.

No momento, 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 facilmente o as mudanças necessárias nos builds atuais. os fabricantes de dispositivos que querem implementar o recurso de funcionalidade de emergência de referência do AOSP pode selecionar a dedo os commits das ramificações aplicáveis para seus próprios builds.

Tabela 1. Seleção especial para recursos de referência de emergência do AOSP recurso

Filial Commits
principal e0c3c66 (link em inglês) Recurso de funcionalidade de emergência adicionado
42a4338 Traduções adicionadas para a string de ação de emergência
4df8d64 Correção de um problema em que a funcionalidade de emergência era exibida em tablets
Nougat-dev e6680d9 (link em inglês) Recurso de funcionalidade de emergência adicionado
95e1865 Traduções adicionadas para a string de ação de emergência
a70bb89 Correção de um problema em que a funcionalidade de emergência era exibida em tablets
desenvolvimento de marshmallow cd22634 (link em inglês) Recurso de funcionalidade de emergência adicionado
13f51c6 (link em inglês) Traduções adicionadas para a string de ação de emergência
6531666 Correção de um problema em que a funcionalidade de emergência era exibida em tablets
lollipop-mr1-dev 5fbc86b (link em inglês) Recurso de funcionalidade de emergência adicionado
1b60879 (link em inglês) Traduções adicionadas para a string de ação de emergência
d74366f Correção de um problema em que a funcionalidade de emergência era exibida em tablets

Implementação

O recurso de acessibilidade emergencial não altera as APIs expostas pelo o kit de desenvolvimento de software (SDK) do Android. Quando ativada e ativada, fornece dois gatilhos que podem iniciar uma chamada de emergência para o 112, que é o número de emergência único a ser usado na Índia e exigido pelo governo indiano regulamentações DoT.

Uma chamada de emergência é iniciada por:

Toque e mantenha pressionado o botão de EMERGÊNCIA
no tela de bloqueio
Tocando na opção Emergência
no Menu de ações globais
de emergência
botão
Figura 1. Botão de EMERGÊNCIA ativado tela de bloqueio.
de emergência
opção
Figura 2. Ação de emergência ativada Menu de ações globais (acessado ao tocar e manter pressionada a tecla liga/desliga).

Esse recurso apresenta os seguintes componentes internos:

  • Gerente de Emergência
    frameworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java
    
  • Serviço de acessibilidade de emergência
    frameworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
    

Gerente de Emergência

O EmergênciaAffordanceManager fornece uma API interna para usar o Recurso de acessibilidade. oferece métodos para iniciar a chamada de emergência e consulta no ambiente de execução se o recurso precisa ser ativado.

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

O recurso pode ser permanentemente desativado no tempo de compilação alterando o Constante EmergencyAffordanceManager.ENABLED para false. Isso fará com que needsEmergencyAffordance() sempre retorne "false" e impede que a EmergencyAffordanceService seja iniciada.

Serviço de acessibilidade de emergência

O EmergencyAffordanceService é um serviço do sistema que monitora O código de país móvel (MCC, na sigla em inglês) de todas as redes celulares detectadas e a MCC dos chips instalados. Se um dos chips instalados ou detectado redes celulares têm uma MCC correspondente a uma das MCCs da Índia (404 ou 405), então a será ativado. Isso significa que o recurso pode ser ativado na Índia mesmo que não há um chip. Pressupõe-se que a rede móvel permita para chamadas de emergência, mesmo sem um chip instalado. O recurso vai continuar ativado até que um chip que não seja da Índia seja instalado e nenhuma das têm uma MCC correspondente.

Os recursos e configurações a seguir afetam o comportamento do Alerta de emergência Recurso de acessibilidade. 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 nas configurações do sistema. de nuvem.

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

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 é iniciado.
Tipo: String
Padrão: 112
Recurso config_emergency_mcc_codes Uma matriz de números inteiros listando as MCCs em que o recurso deve estar ativo.
Tipo: matriz de números inteiros
Padrão: {404.405}
Configuração número_a_affordance_emergência Substituição da configuração global pelo número a ser chamado com a emergência affordance. Isso tem efeito somente em imagens de build depuráveis (ou seja, imagens de build o tipo é userdebug ou eng). Isso é feito apenas para testes.
Tipo: String
Padrão: não configurado
Configuração force_emergency_affordance Configuração global, se a funcionalidade de emergência deve ser exibida independentemente do estado do dispositivo. Isso é feito apenas para testes.
Tipo: Boolean (1 ou 0)
Padrão: não definido --> 0

Ativar chamadas de emergência para o 112

O recurso de funcionalidade de emergência conecta a chamada usando o discador para que a chamada possa ser conectada quando a tela de bloqueio estiver ativa. A o discador de emergência conecta as chamadas apenas à lista de números fornecida pelo Camada de interface de rádio (RIL, na sigla em inglês) com a propriedade do sistema:

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

Fabricantes de dispositivos que usam o recurso de funcionalidade de emergência precisam garantir que dispositivos na Índia sempre ativam o 112 como um número de emergência no RIL.

Validação

Ao testar em um build depurável, o número chamado pode ser alterado. pelo seguinte comando:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Embora essa configuração possa ser definida em um build normal do usuário, ela será ignorada. Para que a ligação seja estabelecida, o número precisa estar na lista de emergências fornecidos pelo RIL. Isso pode ser definido temporariamente usando o seguinte 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 acesso recurso esteja ativado mesmo na ausência de uma rede móvel na Índia detectado ou um chip indiano está sendo inserido.

adb shell settings put global force_emergency_affordance 1

Recomendamos testar pelo menos os seguintes casos:

  • Depois de ativado, toque e mantenha pressionado o botão EMERGÊNCIA no a tela de bloqueio (figura 1) inicia uma chamada para o número de emergência especificado.
  • Quando ativado, o item Emergência na ação global O menu está presente e um toque inicia uma chamada para a emergência especificada número
  • O recurso não é ativado na ausência de um Detectamos a Indian Mobile Network com um chip instalado que não é da Índia.
  • O recurso é ativado no dispositivo quando um chip indiano está instalado, independentemente das redes móveis detectadas.
  • O recurso será ativado no dispositivo na presença de uma rede móvel indiana, independentemente do chip instalado.

Se um dispositivo for compatível com vários chips, o teste deve garantir se a detecção do MCC do chip funciona corretamente em cada slot do chip. A emergência O recurso de acessibilidade não é regido pela compatibilidade com o Android, portanto não há Testes 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 em Índia. Ele ainda deve ser usado?

112 é o número que vai ser usado na Índia como a Resposta de Segurança Pública Ponto (PSAP, na sigla em inglês), conforme definido pelas Comunicações e Resposta de Emergência Integradas de segurança na nuvem (IECRS, na sigla em inglês). Até que o PSAP seja comissionado, todas as ligações para o número 112 serão roteadas ao número de emergência 100 existente (embora essa seja responsabilidade do operadora, não Android).

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

Os fabricantes de dispositivos podem implementar outros gatilhos. No entanto, enquanto o Indian DoT aprova o toque triplo no botão liga/desliga. acionador 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) utilizam gestos do botão liga/desliga que incluem tocar repetidamente no botão liga/desliga. Esses apps podem interfira no discador de emergência ou o usuário poderá acionar acidentalmente o o botão de pânico ao tentar acionar ações nesses aplicativos.