Implémenter une affordance d'urgence

Tous les appareils mobiles vendus en Inde depuis le 1er janvier 2017 doivent être équipés d'un bouton panique pour répondre aux exigences du ministère indien des Télécommunications (DoT). Pour répondre à ces exigences réglementaires, Android inclut une implémentation de référence de la fonctionnalité Emergency Affordance afin d'activer un bouton panique sur les appareils Android.

Cette fonctionnalité est activée par défaut dans les versions Android 8.0 et ultérieures, mais doit être corrigée dans les builds existants des versions antérieures. Cette fonctionnalité est exclusivement destinée aux appareils vendus sur le marché indien, mais elle peut être incluse sur tous les appareils vendus dans le monde, car elle n'a aucun effet en dehors de l'Inde.

Exemples et source

La fonctionnalité d'affordance d'urgence est implémentée dans le projet Android Open Source (AOSP) frameworks/base. Il est disponible dans la dernière branche de version d'Android et est activé par défaut dans Android 8.0 et les versions ultérieures.

Cette fonctionnalité est disponible dans les branches et commits suivants. Ces informations sont fournies pour permettre aux fabricants d'appareils d'intégrer les modifications nécessaires dans leurs versions existantes. Les fabricants d'appareils qui souhaitent implémenter la fonctionnalité de référence AOSP "Emergency Affordance" peuvent sélectionner les commits des branches applicables et les intégrer à leurs propres builds.

Tableau 1. Sélection de commits pour la fonctionnalité de référence AOSP Emergency Affordance

Branch Commits
android-latest-release e0c3c66 Ajout de la fonctionnalité d'affordance d'urgence
42a4338 Ajout de traductions pour la chaîne d'action d'urgence
4df8d64 Correction d'un problème qui entraînait l'affichage de la fonctionnalité d'affordance d'urgence sur les tablettes
nougat-dev e6680d9 Ajout de la fonctionnalité d'affordance d'urgence
95e1865 Ajout de traductions pour la chaîne d'action d'urgence
a70bb89 Correction d'un problème qui entraînait l'affichage de la fonctionnalité d'affordance d'urgence sur les tablettes
marshmallow-dev cd22634 Ajout de la fonctionnalité d'affordance d'urgence
13f51c6 Ajout de traductions pour la chaîne d'action d'urgence
6531666 Correction d'un problème qui entraînait l'affichage de la fonctionnalité d'affordance d'urgence sur les tablettes
lollipop-mr1-dev 5fbc86b Ajout de la fonctionnalité d'affordance d'urgence
1b60879 Ajout de traductions pour la chaîne d'action d'urgence
d74366f Correction d'un problème qui entraînait l'affichage de la fonctionnalité d'affordance d'urgence sur les tablettes

Implémentation

La fonctionnalité d'affordance d'urgence n'apporte aucune modification aux API exposées via le kit de développement logiciel (SDK) Android. Lorsqu'elle est activée, cette fonctionnalité fournit deux déclencheurs qui peuvent lancer un appel d'urgence au 112, qui est le numéro d'urgence unique à utiliser en Inde et qui est obligatoire en vertu des réglementations du DoT indien.

Un appel d'urgence est lancé par :

Appuyer de manière prolongée sur le bouton URGENCE 
sur l'écran de verrouillage
Appuyer sur l'option Urgence
dans le menu Actions globales
Écran de verrouillage affichant un bouton "URGENCE"

Figure 1 : Bouton URGENCES sur l'écran de verrouillage.

Menu d'actions globales avec l'option "Urgence" sélectionnée

Figure 2. Action d'urgence dans le menu Actions globales (accessible en appuyant de manière prolongée sur la touche Marche/Arrêt).

Cette fonctionnalité introduit les composants internes suivants :

  • 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 fournit une API interne pour utiliser la fonctionnalité d'affordance d'urgence. Il fournit des méthodes pour lancer l'appel d'urgence et interroger à l'exécution si la fonctionnalité doit être activée.

  • void performEmergencyCall() : lance un appel d'urgence.
  • boolean needsEmergencyAffordance(). Détermine si la fonctionnalité doit être active.

Cette fonctionnalité peut être définitivement désactivée au moment de la compilation en remplaçant la constante EmergencyAffordanceManager.ENABLED par false. Cela entraîne le renvoi systématique de false par needsEmergencyAffordance() et empêche le démarrage de EmergencyAffordanceService.

EmergencyAffordanceService

EmergencyAffordanceService est un service système qui surveille le mobile country code (MCC) de tous les réseaux mobiles détectés et le MCC des cartes SIM installées. Si l'une des cartes SIM installées ou des réseaux mobiles détectés possède un MCC correspondant à l'un des MCC de l'Inde (404 ou 405), la fonctionnalité est activée. Cela signifie que la fonctionnalité peut être activée en Inde même si aucune carte SIM n'est présente. Le réseau mobile est censé autoriser l'enregistrement pour les appels d'urgence, même sans carte SIM installée. La fonctionnalité reste activée jusqu'à ce qu'une carte SIM non indienne soit installée et qu'aucun des réseaux détectés ne possède de code MCC correspondant.

Les ressources et paramètres suivants affectent le comportement de la fonctionnalité d'affordance d'urgence. Si le type de configuration est :

  • Ressource : ressource interne définie dans frameworks/base/core/res/res/values/config.xml.
  • Paramètre : paramètre stocké dans le fournisseur de paramètres système.

Tableau 2. Paramètres affectant le comportement de la fonctionnalité d'affordance d'urgence

Type de configuration Nom Description
Ressource config_emergency_call_number Numéro de téléphone composé automatiquement lorsque l'appel d'urgence est lancé.
Type : chaîne
Par défaut : 112
Ressource config_emergency_mcc_codes Tableau d'entiers listant les CM dans lesquels la fonctionnalité doit être active.
Type : tableau d'entiers
Par défaut : {404,405}
Paramètre emergency_affordance_number Remplacement du paramètre global par le numéro à appeler avec la fonctionnalité d'urgence. Cela n'a d'effet que sur les images de compilation débogables (c'est-à-dire lorsque le type de compilation est "userdebug" ou "eng"). Cette fonctionnalité est destinée uniquement aux tests.
Type : chaîne
Par défaut : non défini
Paramètre force_emergency_affordance Paramètre global indiquant si la fonctionnalité d'affordance d'urgence doit être affichée, quel que soit l'état de l'appareil. Cette fonctionnalité est destinée uniquement aux tests.
Type : booléen (1 ou 0)
Par défaut : non défini --> 0

Activer les appels d'urgence au 112

La fonctionnalité d'affordance d'urgence permet de passer l'appel à l'aide du clavier d'urgence afin que l'appel puisse être passé lorsque l'écran de verrouillage est actif. Le composeur d'urgence ne connecte les appels qu'à la liste des numéros fournis par la couche d'interface radio (RIL, Radio Interface Layer) via la propriété système :

  • ril.ecclist lorsqu'aucune carte SIM n'est installée.
  • ril.ecclistSimSlotNumber lorsqu'une carte SIM est insérée et SimSlotNumber correspond à l'ID d'emplacement de l'abonné par défaut.

Les fabricants d'appareils qui utilisent la fonctionnalité d'affordance d'urgence doivent vérifier que les appareils en Inde activent toujours le 112 comme numéro d'urgence dans la RIL.

Validation

Lors des tests sur une version débogable, le numéro appelé peut être modifié avec la commande suivante :

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Bien que ce paramètre puisse être défini sur une version utilisateur normale, il est ignoré. Pour que l'appel soit réellement connecté, le numéro doit figurer dans la liste des numéros d'urgence fournie par la RIL. Vous pouvez définir temporairement cette valeur à l'aide de la commande suivante exécutée à partir d'un shell racine sur un appareil userdebug :

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

La commande suivante peut également être utilisée pour forcer l'activation de la fonctionnalité Emergency Affordance (Affordance d'urgence), même en l'absence de détection d'un réseau mobile indien ou d'insertion d'une carte SIM indienne.

adb shell settings put global force_emergency_affordance 1

Nous vous recommandons de tester au moins les cas suivants :

  • Lorsqu'il est activé, un appui prolongé sur le bouton URGENCE sur l'écran de verrouillage (figure 1) lance un appel vers le numéro d'urgence spécifié.
  • Lorsqu'il est activé, l'élément Urgence du menu d'actions globales est présent. Si vous appuyez dessus, un appel est lancé vers le numéro d'urgence spécifié.
  • La fonctionnalité n'est pas activée en l'absence de réseau mobile indien détecté avec une carte SIM non indienne installée.
  • La fonctionnalité est activée sur l'appareil lorsqu'une carte SIM indienne est installée, quels que soient les réseaux mobiles détectés.
  • La fonctionnalité est activée sur l'appareil en présence d'un réseau mobile indien, quelles que soient les cartes SIM installées.

Si un appareil est compatible avec plusieurs cartes SIM, les tests doivent vérifier que la détection du code MCC de la carte SIM fonctionne correctement dans chaque emplacement SIM. La fonctionnalité d'affordance d'urgence n'est pas régie par la suite de tests de compatibilité (CTS) Android. Il n'existe donc pas de tests CTS pour cette fonctionnalité.

Questions fréquentes

Q. Le numéro d'urgence 112 n'a pas encore été mis en service en Inde. Dois-je encore l'utiliser ?

Le 112 est le numéro utilisé en Inde comme centre de réception des appels d'urgence (PSAP, Public Safety Answering Point), tel que défini par les systèmes intégrés de communication et d'intervention d'urgence (IECRS, Integrated Emergency Communications and Response Systems). Jusqu'à ce que le PSAP soit mis en service, tous les appels au 112 sont redirigés vers le numéro d'urgence 100 existant (bien que cela relève de la responsabilité de l'opérateur, et non d'Android).

Q. Qu'en est-il des autres déclencheurs, comme le triple appui sur le bouton Marche/Arrêt ?

Les fabricants d'appareils peuvent implémenter des déclencheurs supplémentaires. Toutefois, bien que le DoT indien approuve le triple-clic sur le bouton Marche/Arrêt, ce déclencheur n'est pas pris en charge dans l'implémentation de référence AOSP, car certaines applications largement utilisées (par exemple, l'application Appareil photo) utilisent des gestes sur le bouton Marche/Arrêt qui incluent des clics répétés sur ce bouton. Ces applications peuvent interférer avec le numéro d'urgence ou l'utilisateur peut déclencher accidentellement le bouton de panique en essayant de déclencher des actions dans ces applications.