Todos los dispositivos móviles que se vendan en la 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 la India. Para abordar estos requisitos reglamentarios, Android incluye una implementación de referencia de la función de indicaciones de emergencia 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 posteriores, pero se debe aplicar un parche a las compilaciones existentes de versiones anteriores. Esta función está dirigida exclusivamente a dispositivos vendidos en el mercado de la India, pero se puede incluir en todos los dispositivos vendidos en todo el mundo, ya que no tiene efecto fuera de la India.
Ejemplos y fuente
La función de indicaciones de emergencia se implementa en el proyecto de frameworks/base del Proyecto de código abierto de Android (AOSP). Está disponible en la rama principal y está habilitada de forma predeterminada en Android 8.0 y versiones posteriores.
Esta función está disponible en las siguientes ramas y confirmaciones. Esta información se proporciona para permitir que los fabricantes de dispositivos apliquen fácilmente los cambios necesarios en sus compilaciones existentes. Los fabricantes de dispositivos que deseen implementar la función de indicaciones de emergencia de referencia de AOSP pueden elegir las confirmaciones de las ramas aplicables en sus propias compilaciones.
Tabla 1: Selección de elementos para la función de indicaciones visuales de emergencia de referencia del AOSP
Branch | Confirmaciones |
---|---|
principal | e0c3c66
Se agregó la función de indicaciones visuales de emergencia 42a4338 Se agregaron traducciones para la cadena de acción de emergencia 4df8d64 Se solucionó un problema por el que la función de indicaciones visuales de emergencia se mostraba en las tablets |
nougat-dev | e6680d9
Se agregó la función de indicaciones visuales de emergencia 95e1865 Se agregaron traducciones para la cadena de acción de emergencia a70bb89 Se solucionó un problema por el que la función de indicaciones visuales de emergencia se mostraba en las tablets |
marshmallow-dev | cd22634
Se agregó la función de indicaciones visuales de emergencia 13f51c6 Se agregaron traducciones para la cadena de acción de emergencia 6531666 Se solucionó un problema por el que la función de indicaciones visuales de emergencia se mostraba en las tablets |
lollipop-mr1-dev | 5fbc86b
Se agregó la función de indicaciones visuales de emergencia 1b60879 Se agregaron traducciones para la cadena de acción de emergencia d74366f Se corrigió un problema por el que la función de indicaciones visuales de emergencia se mostraba en las tablets |
Implementación
La función de indicaciones de emergencia no realiza cambios en las APIs expuestas a través del kit de desarrollo de software (SDK) de Android. Cuando se habilita y activa, 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 debe usar en la India y que se exige según las reglamentaciones del Ministerio de Transporte de ese país.
Una llamada de emergencia se inicia de las siguientes maneras:
Mantener presionado el botón EMERGENCIA en la pantalla de bloqueo |
Presiona la opción Emergencia en el menú de acciones global. |
---|---|
![]() Figura 1: Botón de EMERGENCIA en la pantalla de bloqueo |
![]() Figura 2: Acción de emergencia en el menú de acciones global (se accede con una presión prolongada del botón de encendido). |
Esta función presenta 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
EmergencyAffordanceManager
EmergencyAffordanceManager proporciona una API interna para usar la función de indicaciones de emergencia. Proporciona métodos para iniciar la llamada de emergencia y consultar en el entorno de ejecución si se debe habilitar la función.
void performEmergencyCall()
: Inicia una llamada de emergencia.boolean needsEmergencyAffordance()
: Determina si la función debe estar activa.
Para inhabilitar la función de forma permanente en el tiempo de compilación, cambia la constante EmergencyAffordanceManager.ENABLED
a false
.
Esto hace que needsEmergencyAffordance()
siempre muestre un valor falso y evite que se inicie EmergencyAffordanceService
.
EmergencyAffordanceService
EmergencyAffordanceService
es un servicio del sistema que supervisa el código móvil de país (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 tiene un MCC que coincide con uno de los MCC de la India (404 o 405), la función está habilitada. Esto significa que la función se puede habilitar en la India incluso si no hay una tarjeta SIM. Se da por sentado que la red móvil permite el registro para llamadas de emergencia, incluso sin una tarjeta SIM instalada. La función permanece habilitada hasta que se instala una SIM que no sea de la India y ninguna de las redes detectadas tenga un MCC coincidente.
Los siguientes recursos y parámetros de configuración afectan el comportamiento de la función de indicaciones de emergencia. Si el tipo de configuración es el siguiente:
- Recurso: Es un recurso interno definido en
frameworks/base/core/res/res/values/config.xml
. - Configuración: Es un parámetro de configuración almacenado en el proveedor de configuración del sistema.
Tabla 2: Parámetros de configuración que afectan el comportamiento de la función de indicaciones de emergencia
Tipo de configuración | Name | Descripción |
---|---|---|
Recurso | config_emergency_call_number | Es el número de teléfono que se marca automáticamente cuando se inicia la llamada de emergencia. Tipo: Cadena Predeterminado: 112 |
Recurso | config_emergency_mcc_codes | Es un array de números enteros que enumera los MCC en los que la función debe estar activa. Tipo: Array de números enteros Valor predeterminado: {404,405} |
Configuración | emergency_affordance_number | Anulación de la configuración global con el número al que se debe llamar con la indicación de emergencia Esto solo tiene efecto en las imágenes de compilación depurables (es decir, el tipo de compilación es userdebug o eng). Esto solo se diseñó para pruebas. Tipo: Cadena Predeterminado: Sin definir |
Configuración | force_emergency_affordance | Configuración global, si se debe mostrar la función de indicaciones de emergencia independientemente del estado del dispositivo. Esto solo se diseñó para pruebas. Tipo: Booleano (1 o 0) Predeterminado: Sin definir --> 0 |
Habilita las llamadas de emergencia al 112
La función de indicaciones de emergencia conecta la llamada con el marcado de emergencia para que se pueda establecer cuando la pantalla de bloqueo está activa. El marcador de emergencia conecta las llamadas solo a la lista de números que proporciona la capa de interfaz de radio (RIL) a través de la propiedad del sistema:
ril.ecclist
cuando no hay una SIM instalada.ril.ecclistSimSlotNumber
cuando se inserta una SIM ySimSlotNumber
es el ID del zócalo del suscriptor predeterminado.
Los fabricantes de dispositivos que usan la función de indicaciones visuales de emergencia deben asegurarse de que los dispositivos de la India siempre habiliten el 112 como número de emergencia en el RIL.
Validación
Durante las pruebas en una compilación depurable, se puede cambiar el número al que se llama con el siguiente comando:
adb shell settings put global emergency_affordance_number NUMBER_TO_CALL
Aunque este parámetro de configuración se puede establecer en una compilación normal del usuario, se ignora. Para conectar la llamada, el número debe estar en la lista de números de emergencia que proporciona el RIL. Esto se puede configurar temporalmente con el siguiente comando que se ejecuta desde una shell raíz en un dispositivo userdebug:
setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"
El siguiente comando también se puede usar para forzar la habilitación de la función de indicaciones de emergencia, incluso si no se detecta una red móvil de la India o no se inserta una tarjeta SIM de la India.
adb shell settings put global force_emergency_affordance 1
Como mínimo, se recomienda probar los siguientes casos:
- Cuando se activa, mantener presionado el botón EMERGENCIA en la pantalla de bloqueo (Figura 1) inicia una llamada al número de emergencia especificado.
- Cuando se activa, aparece el elemento Emergencia en el menú de acciones globales y, si se presiona, se inicia una llamada al número de emergencia especificado.
- La función no se activa si no se detecta una red móvil de la India con una tarjeta SIM que no sea de ese país instalada.
- La función se activa en el dispositivo cuando se instala una tarjeta SIM de la India, independientemente de las redes móviles detectadas.
- La función se activa en el dispositivo cuando hay una red móvil de la India, independientemente de las tarjetas SIM instaladas.
Si un dispositivo admite varias tarjetas SIM, las pruebas deben garantizar que la detección de MCC de la SIM funcione correctamente en cada ranura para SIM. La función de indicaciones de emergencia no está regida por la compatibilidad con Android, por lo que no hay pruebas del conjunto de pruebas de compatibilidad (CTS) para ella.
Preguntas frecuentes
P.: El número de emergencia 112 aún no se ha encargado en India. ¿Se debe seguir usando?
El 112 es el número que se usa en la India como el Centro de Respuesta de Seguridad Pública (PSAP) según lo definen los Sistemas Integrados de Respuesta y Comunicaciones de Emergencia (IECRS). Hasta que se comisione el PSAP, todas las llamadas al 112 se enrutan al número de emergencia 100 existente (aunque esta es responsabilidad del operador, no de Android).
P.: ¿Qué sucede con otros activadores, como presionar tres veces el botón de encendido?
Los fabricantes de dispositivos pueden implementar activadores adicionales. Sin embargo, mientras que el Ministerio de Comunicaciones de la India aprueba presionar 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 apps de uso general (por ejemplo, la app de Cámara) usan gestos del botón de encendido que incluyen presionarlo varias veces. Estas apps pueden interferir con el selector de emergencia o el usuario puede activar accidentalmente el botón de pánico mientras intenta activar acciones en estas apps.