Implementando Asequibilidad de Emergencia

Todos los dispositivos móviles vendidos en India a partir del 1 de enero de 2017 deben proporcionar un botón de pánico para cumplir con los requisitos del Departamento de Telecomunicaciones (DoT) de India. Para cumplir con estos requisitos reglamentarios, Android incluye una implementación de referencia de la función Emergency Affordance para habilitar un botón de pánico en los dispositivos Android.

Esta característica está habilitada de forma predeterminada en Android 8.0 y versiones posteriores, pero debe parchearse en las compilaciones existentes de versiones anteriores. Actualmente, esta función está dirigida exclusivamente a dispositivos vendidos en el mercado indio, pero se puede incluir en todos los dispositivos vendidos en todo el mundo, ya que la función no tiene efecto fuera de la India.

Ejemplos y fuente

La función Emergency Affordance se implementa en los marcos/proyecto base del Proyecto de código abierto de Android (AOSP). Está disponible en la rama maestra y está habilitado de forma predeterminada en Android 8.0 y versiones superiores.

Esta característica está actualmente disponible en las siguientes ramas y confirmaciones. Esta información se proporciona para permitir a los fabricantes de dispositivos parchear fácilmente los cambios necesarios en sus compilaciones existentes. Los fabricantes de dispositivos que deseen implementar la función de disponibilidad de emergencia de referencia de AOSP pueden seleccionar las confirmaciones de las ramas correspondientes en sus propias compilaciones.

Tabla 1. Selecciones especiales para la característica de disponibilidad de emergencia de referencia de AOSP

Rama confirma
Maestro e0c3c66 Se agregó la función de asequibilidad de emergencia
42a4338 Traducciones añadidas para cadena de acción de emergencia
4df8d64 Se solucionó un problema por el cual la posibilidad de emergencia se mostraba en las tabletas
turrón-dev e6680d9 Característica de disponibilidad de emergencia agregada
95e1865 Traducciones añadidas para cadena de acción de emergencia
a70bb89 Se solucionó un problema por el cual la oferta de emergencia se mostraba en las tabletas
malvavisco-dev cd22634 Se agregó la función de asequibilidad de emergencia
13f51c6 Se agregaron traducciones para la cadena de acción de emergencia.
6531666 Se solucionó un problema por el cual la posibilidad de emergencia se mostraba en las tabletas
piruleta-mr1-dev 5fbc86b Característica de disponibilidad de emergencia agregada
1b60879 Se agregaron traducciones para la cadena de acción de emergencia
d74366f Se solucionó un problema por el cual la posibilidad de emergencia se mostraba en las tabletas

Implementación

La función Emergency Affordance no realiza cambios en las API expuestas a través del kit de desarrollo de software (SDK) de Android. Cuando está habilitada y activada, la función proporciona dos disparadores que pueden iniciar una llamada de emergencia al 112, que es el único número de emergencia que se usa en la India y es obligatorio según las regulaciones del Departamento de Transporte de la India.

Una llamada de emergencia es iniciada por:

Pulsación prolongada del botón de EMERGENCIA
en la pantalla de bloqueo
Tocando la opción Emergencia
en el menú de acción global
boton de emergencia
Figura 1. Botón de EMERGENCIA en la pantalla de bloqueo.
opción de emergencia
Figura 2. Acción de emergencia en el menú de acción global (al que se accede manteniendo pulsada la tecla de encendido).

Esta característica introduce los siguientes 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 Asequibilidad de Emergencia

EmergencyAffordanceManager proporciona una API interna para utilizar la función de Asequibilidad de emergencia. Proporciona métodos para iniciar la llamada de emergencia y consultar en tiempo de ejecución si la función debe estar habilitada.

  • void performEmergencyCall() . Inicia una llamada de emergencia.
  • boolean needsEmergencyAffordance() . Determina si la función debe estar activa.

La característica se puede deshabilitar permanentemente en el momento de la compilación cambiando la constante EmergencyAffordanceManager.ENABLED a false . Esto hará que needsEmergencyAffordance() siempre devuelva falso y evitará que se inicie EmergencyAffordanceService .

Servicio de Asequibilidad de Emergencia

EmergencyAffordanceService es un servicio del sistema que monitorea el código de país móvil (MCC) de todas las redes celulares detectadas y el MCC de las tarjetas SIM instaladas. Si alguna de las tarjetas SIM instaladas o las redes celulares detectadas tienen un MCC que coincide con uno de los MCC de la India (404 o 405), la función se habilitará. Esto significa que la función se puede habilitar en India incluso si no hay una tarjeta SIM presente. Se supone que la red móvil permitirá el registro para llamadas de emergencia incluso sin una tarjeta SIM instalada. La función permanecerá habilitada hasta que se instale una SIM que no sea de India y ninguna de las redes detectadas tenga un MCC coincidente.

Los siguientes recursos y configuraciones afectan el comportamiento de la característica Asequibilidad de emergencia. Si el tipo de configuración es:

  • Resource , es un recurso interno definido en frameworks/base/core/res/res/values/config.xml .
  • Configuración , es una configuración almacenada en el proveedor de configuración del sistema.

Tabla 2. Configuraciones que afectan el comportamiento de la característica de disponibilidad de emergencia

Tipo de configuración Nombre Descripción
Recurso config_emergency_call_number El número de teléfono que se marca automáticamente cuando se inicia la llamada de emergencia.
Tipo: Cuerda
Predeterminado: 112
Recurso config_emergency_mcc_codes Una matriz de números enteros que enumera los MCC en los que la función debe estar activa.
Tipo: matriz de enteros
Predeterminado: {404,405}
Ajuste número_de_asequibilidad_de_emergencia Anulación de la configuración global con el número para llamar con la posibilidad de emergencia. Esto solo tendrá un efecto en las imágenes de compilación depurables (es decir, el tipo de compilación es userdebug o eng). Esto está diseñado solo para pruebas.
Tipo: Cuerda
Predeterminado: desarmado
Ajuste force_emergency_affordance Configuración global, si se debe mostrar la disponibilidad de emergencia independientemente del estado del dispositivo. Esto está diseñado solo para pruebas.
Tipo: Booleano (1 o 0)
Predeterminado: desarmado --> 0

Habilitar llamadas de emergencia al 112

La función de disponibilidad de emergencia conecta la llamada usando el marcador de emergencia para que la llamada se pueda conectar cuando la pantalla de bloqueo está activa. El marcador de emergencia conecta las llamadas solo a la lista de números proporcionada por la capa de interfaz de radio (RIL) a través de la propiedad del sistema:

  • ril.ecclist cuando no hay SIM instalada.
  • ril.ecclist SimSlotNumber cuando se inserta una tarjeta SIM y SimSlotNumber es el ID de ranura del suscriptor predeterminado.

Los fabricantes de dispositivos que utilizan la función de disponibilidad de emergencia deben asegurarse de que los dispositivos en la India siempre habiliten el 112 como número de emergencia en el RIL.

Validación

Mientras se prueba en una compilación depurable, el número al que se llama se puede cambiar con el siguiente comando:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Aunque esta configuración se puede establecer en una compilación de usuario normal, se ignorará. Para conectar realmente la llamada, el número debe estar en la lista de números de emergencia proporcionada por el RIL. Esto se puede configurar temporalmente usando el siguiente comando ejecutado desde un shell raíz en un dispositivo de depuración de usuario:

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

El siguiente comando también se puede usar para forzar la activación de la función de asequibilidad de emergencia incluso en ausencia de una red móvil india que se detecte o se inserte una tarjeta SIM india.

adb shell settings put global force_emergency_affordance 1

Como mínimo, se recomienda probar los siguientes casos:

  • Una vez activado, al presionar prolongadamente el botón EMERGENCIA en la pantalla de bloqueo (Figura 1), se inicia una llamada al número de emergencia especificado.
  • Una vez activado, el elemento de emergencia en el menú de acción global está presente y al tocarlo se inicia una llamada al número de emergencia especificado.
  • La función no se activa en ausencia de una red móvil india detectada con una tarjeta SIM que no sea de India instalada.
  • La función se activa en el dispositivo cuando se instala una tarjeta SIM india, independientemente de las redes móviles detectadas.
  • La función se activa en el dispositivo en presencia de una red móvil india, independientemente de las tarjetas SIM instaladas.

Si un dispositivo admite varias tarjetas SIM, las pruebas deben garantizar que la detección de SIM MCC funcione correctamente en cada ranura SIM. La función Emergency Affordance no se rige por la compatibilidad con Android, por lo que no hay pruebas de Compatibility Test Suite (CTS) para ella.

Preguntas frecuentes

P. El número de emergencia 112 aún no se ha puesto en marcha en India. ¿Debería seguir utilizándose?

El 112 es el número que se utilizará en la India como Punto de Respuesta de Seguridad Pública (PSAP) según lo definido por los Sistemas Integrados de Respuesta y Comunicaciones de Emergencia (IECRS). Hasta que se ponga en marcha el PSAP, todas las llamadas al 112 se enrutarán al número de emergencia 100 existente (aunque esto es responsabilidad del operador, no de Android).

P. ¿Qué pasa con otros activadores, como presionar tres veces el botón de encendido?

Los fabricantes de dispositivos pueden optar por implementar disparadores adicionales. Sin embargo, aunque el Departamento de Transporte de la India aprueba tocar tres veces el botón de encendido del hardware, este activador no es compatible con la implementación de referencia de AOSP, ya que algunas aplicaciones de uso generalizado (por ejemplo, la aplicación de la cámara) usan gestos de botón de encendido que incluyen tocar repetidamente el botón de encendido. Dichas aplicaciones pueden interferir con el marcador de emergencia o el usuario puede activar accidentalmente el botón de pánico al intentar activar acciones en estas aplicaciones.