Implementa la asignación de emergencia

Todos los dispositivos móviles vendidos en la India a partir del 1 de enero de 2017 deben proporcionar una botón de pánico para cumplir con los requisitos del Departamento de Telecomunicaciones (DoT) de India. Para abordar estos requisitos reglamentarios, Android incluye una referencia implementación de la función Asistencia 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 deben aplicar parches en las compilaciones existentes de versiones anteriores. Esta está orientada exclusivamente a dispositivos que se venden en el mercado de India, pero puede Se incluye 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 Asistencia de emergencia se implementa en el programa Proyecto (AOSP) frameworks/base en un proyecto final. Se encuentra disponible en la rama principal y está habilitada de forma predeterminada en Android 8.0 y versiones posteriores

Actualmente, esta función está disponible en las siguientes ramas y confirmaciones. Esta información se proporciona para que los fabricantes de dispositivos puedan aplicar parches fácilmente a la los cambios necesarios en sus compilaciones existentes. Fabricantes de dispositivos que deseen implementar la función de indicación de emergencia de referencia de AOSP puede elegir de las ramas aplicables a sus propias compilaciones.

Tabla 1: Sugerencias para la asignación de emergencia de referencia al AOSP atributo

Branch Confirmaciones
principal e0c3c66 Se agregó la función de asignación de emergencia
. 42a4338 Se agregaron traducciones para la cadena de acción de emergencia
4df8d64 Se solucionó un problema por el que se mostraba la indicación visual de emergencia en las tablets.
nougat-dev e6680d9 Se agregó la función de asignación de emergencia
. 95e1865 Se agregaron traducciones para la cadena de acción de emergencia
a70bb89 Se solucionó un problema por el que se mostraba la indicación visual de emergencia en las tablets.
malvavisco-dev cd22634. Se agregó la función de asignación de emergencia
. 13f51c6 Se agregaron traducciones para la cadena de acción de emergencia
6531666 Se solucionó un problema por el que se mostraba la indicación visual de emergencia en las tablets.
lollipop-mr1-dev 5fbc86b Se agregó la función de asignación de emergencia
. 1b60879 Se agregaron traducciones para la cadena de acción de emergencia
D74366F Se solucionó un problema por el que se mostraba la indicación visual de emergencia en las tablets.

Implementación

La función Asistencia de emergencia no realiza cambios en las APIs expuestas por el kit de desarrollo de software (SDK) de Android. Cuando se habilitan y activan, las proporciona dos activadores que pueden iniciar una llamada de emergencia al 112, es el único número de emergencia que se usa en la India y está ordenado por los habitantes de la India reglamentaciones de DoT.

Una llamada de emergencia se inicia mediante una de las siguientes entidades:

Mantén presionado el botón EMERGENCIA
en la pantalla de bloqueo
Si presionas la opción Emergencia
en la Menú de acciones globales
emergencia
botón
Figura 1: El botón EMERGENCIA está activado con la pantalla de bloqueo.
emergencia
opción
Figura 2: Acción de Emergencia activada Menú de acciones globales (al que se accede manteniendo presionada la tecla de encendido).

Esta función presenta los siguientes componentes internos:

  • EmergenciaAffordanceManager
    frameworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java
    
  • Servicio de EmergenciaAffordance
    frameworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
    

EmergenciaAffordanceManager

EmergencyAffordanceManager proporciona una API interna para usar la API de Función de asignación. Proporciona métodos para iniciar la llamada de emergencia y en el tiempo de ejecución si se debe habilitar la función.

  • void performEmergencyCall() Inicia una llamada de emergencia.
  • boolean needsEmergencyAffordance() Determina si el atributo deben estar activos.

La función se puede inhabilitar de forma permanente en el momento de la compilación si se cambia el EmergencyAffordanceManager.ENABLED constante a false. Esto hará que needsEmergencyAffordance() siempre muestre falso. y evitar que se inicie EmergencyAffordanceService.

Servicio de EmergenciaAffordance

EmergencyAffordanceService es un servicio del sistema que supervisa el código móvil de país (MCC) de todas las redes de telefonía celular detectadas y el MCC de las tarjetas SIM instaladas. Si se detecta alguna de las tarjetas SIM instaladas redes móviles tienen un MCC que coincida con uno de los MCC de la India (404 o 405); luego, se habilitará esta función. Esto significa que la función puede habilitarse en la India incluso si no hay ninguna tarjeta SIM. Se supone que la red móvil permitirá 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 la India y no se hayan detectado redes tienen un MCC que coincide.

Los siguientes recursos y parámetros de configuración afectan el comportamiento de la configuración Función de asignación. Si el tipo de configuración es:

  • Recurso, es un recurso interno definido en frameworks/base/core/res/res/values/config.xml
  • Setting, es un parámetro de configuración que se almacena en la configuración del sistema proveedor.

Tabla 2: Configuración que afecta el comportamiento de la opción de emergencia atributo

Tipo de configuración Name Descripción
Recurso config_emergency_call_number El número de teléfono que se marca automáticamente cuando se realiza la llamada de emergencia o iniciar sesión.
Tipo: String
Configuración predeterminada: 112
Recurso config_emergency_mcc_codes Un array de números enteros que enumera los MCC en los que la función debería estar activa.
Tipo: array de números enteros
Valor predeterminado: {404,405}
Configuración número_de_emergencia Anulación de la configuración global con el número al que se llamará con la emergencia indicación visual. Esto solo tiene efecto en imágenes de compilación depurables (es decir, es userdebug o eng). Esto está destinado solo para pruebas.
Tipo: String
Configuración predeterminada: no establecida
Configuración forzar_emergencia_asignación Configuración global, si se debe mostrar la opción de emergencia del estado del dispositivo. Esto está destinado solo para pruebas.
Tipo: Booleano (1 o 0)
Configuración predeterminada: no establecida --> (0)

Habilitar llamadas de emergencia al 112

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

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

Los fabricantes de dispositivos que usan la función de indicación visual de emergencia deben garantizar lo siguiente: en la India siempre habilitan el 112 como número de emergencia en el RIL.

Validación

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

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Si bien esta configuración se puede establecer en una compilación de usuario normal, se ignorará. Para conectar la llamada, el número debe estar en la lista de emergencias que proporcionó el RIL. Esto se puede configurar temporalmente con los siguientes comando ejecutado desde un 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 asignación de emergencia habilitar la función aun cuando no esté disponible una red móvil de la India o que se esté insertando una tarjeta SIM india.

adb shell settings put global force_emergency_affordance 1

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

  • Una vez que se active, mantén presionado el botón EMERGENCIA en la pantalla de bloqueo (Figura 1) inicia una llamada al número de emergencia especificado.
  • Una vez que se active, el elemento Emergencia en la Acción global El menú está presente y, si lo presionas, se inicia una llamada a la emergencia especificada de la fila.
  • La función no se activa si no existe una Se detectó una red móvil de India con una tarjeta SIM que no es de India instalada.
  • La función se activa en el dispositivo cuando se usa una SIM india independientemente de las redes móviles detectadas.
  • La función se activa en el dispositivo en presencia de una red móvil de India, independientemente de las tarjetas SIM instaladas.

Si un dispositivo admite varias tarjetas SIM, la prueba debería garantizar que la detección de MCC de la SIM funcione correctamente en cada ranura de la SIM. La emergencia Esta función no se rige por la compatibilidad con Android, por lo que El Conjunto de pruebas de compatibilidad (CTS) lo realiza.

Preguntas frecuentes

P.: Aún no se encargó el número de emergencia 112 en India. ¿Debería usarse de todas formas?

112 es el número que se usará en India como respuesta de seguridad pública (PSAP), según se define en las Comunicaciones y Respuesta Integradas de Emergencia (IECRS). Todas las llamadas al 112 se enrutarán hasta que se ponga en marcha el PSAP. al número de emergencia 100 existente (aunque esto es responsabilidad del no es Android).

P.: ¿Qué ocurre con otros desencadenantes, como presionar tres veces? el botón de encendido?

Los fabricantes de dispositivos pueden optar por implementar activadores adicionales. Sin embargo, mientras que el Indian DoT aprueba presionar tres veces el botón de encendido del hardware, este El activador no se admite en la implementación de referencia del AOSP. ya que algunas apps muy usadas (por ejemplo, la app de Cámara) usan gestos del botón de encendido. que incluyen presionar repetidamente el botón de encendido. Estas apps podrían interferir en el marcador de emergencia o que el usuario active accidentalmente botón de pánico mientras intentas activar acciones en estas apps.