Implementación de asistencia de emergencia

Todos los dispositivos móviles vendidos en India a partir del 1 de enero de 2017 deben incluir un botón de pánico para cumplir con los requisitos del Departamento de Telecomunicaciones (DoT) de la India. Para abordar 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 dispositivos Android.

Esta función está habilitada de forma predeterminada en Android 8.0 y versiones superiores, pero debe parchearse en versiones existentes de versiones anteriores. Actualmente, esta función está dirigida exclusivamente a dispositivos vendidos en el mercado indio, pero puede incluirse 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 principal 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 versiones 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 selectas para la característica de asequibilidad de emergencia de referencia de AOSP

Rama Se compromete
principal e0c3c66 Se agregó la función de asequibilidad de emergencia
42a4338 Se agregaron traducciones para la cadena de acción de emergencia
4df8d64 Se solucionó un problema por el cual la prestación de emergencia se mostraba en las tabletas.
turrón-dev e6680d9 Se agregó la función de asequibilidad de emergencia
95e1865 Se agregaron traducciones para la cadena de acción de emergencia
a70bb89 Se solucionó un problema por el cual la prestación 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 prestación de emergencia se mostraba en las tabletas.
lollipop-mr1-dev 5fbc86b Se agregó la función de asequibilidad de emergencia
1b60879 Se agregaron traducciones para la cadena de acción de emergencia
d74366f Se solucionó un problema por el cual la prestación 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 activadores que pueden iniciar una llamada de emergencia al 112, que es el único número de emergencia que se utiliza en la India y lo exigen las regulaciones del Departamento de Transporte de la India.

Una llamada de emergencia se inicia mediante:

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 presionando prolongadamente 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 Emergency Affordance. Proporciona métodos para iniciar la llamada de emergencia y consultar en tiempo de ejecución si la función debe habilitarse.

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

La función se puede desactivar 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 redes celulares detectadas tiene un MCC que coincida con uno de los MCC de la India (404 o 405), se habilitará la función. Esto significa que la función se puede habilitar en la India incluso si no hay una tarjeta SIM presente. Se supone que la red móvil permitirá el registro de llamadas de emergencia incluso sin una tarjeta SIM instalada. La función permanecerá habilitada hasta que se instale una tarjeta SIM que no sea de la India y ninguna de las redes detectadas tenga un MCC coincidente.

Los siguientes recursos y configuraciones afectan el comportamiento de la función Asistencia de emergencia. Si el tipo de configuración es:

  • Recurso , 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 función de asistencia de emergencia

Tipo de configuración Nombre Descripción
Recurso config_número_llamada_emergencia 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 serie de números enteros que enumeran los MCC en los que la característica debería estar activa.
Tipo: matriz de números enteros
Predeterminado: {404,405}
Configuración número_de_affordance_emergencia Anulación de configuración global con el número al que llamar con la prestación de emergencia. Esto solo tendrá efecto en las imágenes de compilación depurables (es decir, el tipo de compilación es userdebug o eng). Esto está destinado únicamente a pruebas.
Tipo: Cuerda
Predeterminado: desarmado
Configuración fuerza_emergencia_affordance Configuración global, si la prestación de emergencia debe mostrarse independientemente del estado del dispositivo. Esto está destinado únicamente a pruebas.
Tipo: Booleano (1 o 0)
Predeterminado: no configurado --> 0

Habilitar llamadas de emergencia al 112

La función de asistencia de emergencia conecta la llamada mediante el marcador de emergencia para que la llamada pueda conectarse cuando la pantalla de bloqueo esté activa. El marcador de emergencia conecta 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 ninguna tarjeta 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 asistencia 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 una compilación depurable, el número llamado 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 utilizar para forzar la habilitación de la función de asistencia de emergencia incluso en ausencia de una red móvil india detectada o de una tarjeta SIM india insertada.

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 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 instalada fuera de la India.
  • 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 de Android, por lo que no existen pruebas de Compatibility Test Suite (CTS) para ella.

Preguntas frecuentes

P. En la India aún no se ha puesto en funcionamiento el número de emergencia 112. ¿Debería seguir utilizándose?

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 funcionamiento 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 activadores adicionales. Sin embargo, si bien 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 ampliamente utilizadas (por ejemplo, la aplicación Cámara) utilizan gestos del botón de encendido que incluyen tocar repetidamente el botón de encendido. Estas 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.