Tutti i dispositivi mobili venduti in India a partire dal 1° gennaio 2017 devono fornire un pulsante di emergenza per soddisfare i requisiti del Dipartimento delle telecomunicazioni (DoT) indiano. Per soddisfare questi requisiti normativi, Android include un'implementazione di riferimento della funzionalità di emergenza per attivare un pulsante di panico sui dispositivi Android.
Questa funzionalità è attivata per impostazione predefinita nelle versioni di Android 8.0 e successive, ma deve essere applicata alle build esistenti delle versioni precedenti. Questa funzionalità è destinata esclusivamente ai dispositivi venduti sul mercato indiano, ma può essere inclusa in tutti i dispositivi venduti in tutto il mondo, in quanto non ha alcun effetto al di fuori dell'India.
Esempi e origine
La funzionalità di emergenza è implementata nel progetto frameworks/base di Android Open Source Project (AOSP). È disponibile nel ramo dell'ultima release di Android ed è attivato per impostazione predefinita in Android 8.0 e versioni successive.
Questa funzionalità è disponibile nei seguenti rami e commit. Queste informazioni vengono fornite per consentire ai produttori di dispositivi di applicare le modifiche necessarie alle build esistenti. I produttori di dispositivi che vogliono implementare la funzionalità di riferimento per l'emergenza AOSP possono selezionare i commit dai rami applicabili nelle proprie build.
Tabella 1. Seleziona con cura la funzionalità di riferimento per l'emergenza di AOSP
| Branch | Commit |
|---|---|
| android-latest-release | e0c3c66
È stata aggiunta la funzionalità di emergenza 42a4338 Sono state aggiunte le traduzioni per la stringa di azione di emergenza 4df8d64 È stato risolto un problema per cui la funzionalità di emergenza veniva visualizzata sui tablet |
| nougat-dev | e6680d9
Aggiunta della funzionalità di emergenza 95e1865 Aggiunta delle traduzioni per la stringa di azione di emergenza a70bb89 È stato risolto un problema per cui la funzionalità di emergenza veniva visualizzata sui tablet |
| marshmallow-dev | cd22634
Aggiunta della funzionalità di emergenza 13f51c6 Aggiunta di traduzioni per la stringa di azione di emergenza 6531666 È stato risolto un problema per cui la funzionalità di emergenza veniva visualizzata sui tablet |
| lollipop-mr1-dev | 5fbc86b
Aggiunta della funzionalità di emergenza 1b60879 Aggiunta delle traduzioni per la stringa di azione di emergenza d74366f È stato risolto un problema per cui la funzionalità di emergenza veniva visualizzata sui tablet |
Implementazione
La funzionalità di emergenza non apporta modifiche alle API esposte tramite l'SDK (Software Development Kit) di Android. Se abilitata e attivata, la funzionalità fornisce due trigger che possono avviare una chiamata di emergenza al 112, che è l'unico numero di emergenza da utilizzare in India e obbligatorio ai sensi dei regolamenti del Dipartimento delle telecomunicazioni indiano.
Una chiamata di emergenza viene avviata da:
| Premendo a lungo il pulsante EMERGENZA nella schermata di blocco |
Toccando l'opzione Emergenza nel menu Azioni rapide |
|---|---|
Figura 1. Pulsante EMERGENZA nella schermata di blocco. |
Figura 2. Azione di emergenza nel menu Azioni globali (accessibile premendo a lungo il tasto di accensione). |
Questa funzionalità introduce i seguenti componenti interni:
EmergencyAffordanceManagerframeworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.javaEmergencyAffordanceServiceframeworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
EmergencyAffordanceManager
EmergencyAffordanceManager fornisce un'API interna per utilizzare la funzionalità
di emergenza. Fornisce metodi per avviare la chiamata di emergenza e
per eseguire query in fase di runtime per verificare se la funzionalità deve essere attivata.
void performEmergencyCall(). Avvia una chiamata di emergenza.boolean needsEmergencyAffordance(). Determina se la funzionalità deve essere attiva.
La funzionalità può essere disattivata definitivamente in fase di compilazione modificando la costante
EmergencyAffordanceManager.ENABLED in false.
In questo modo, needsEmergencyAffordance() restituisce sempre false
e impedisce l'avvio di EmergencyAffordanceService.
EmergencyAffordanceService
EmergencyAffordanceService è un servizio di sistema che monitora
il codice paese mobile (MCC) di tutte le reti cellulari rilevate e l'MCC
delle schede SIM installate. Se una delle schede SIM installate o delle reti
cellulari rilevate ha un MCC corrispondente a uno degli MCC dell'India (404 o 405),
la funzionalità è attivata. Ciò significa che la funzionalità può essere attivata in India anche se
non è presente alcuna scheda SIM. Si presume che la rete mobile consenta
la registrazione per le chiamate di emergenza anche senza una scheda SIM installata. La funzionalità
rimane attiva finché non viene installata una SIM non indiana e nessuna delle reti
rilevate ha un MCC corrispondente.
Le seguenti risorse e impostazioni influiscono sul comportamento della funzionalità di emergenza. Se il tipo di configurazione è:
- Risorsa:una risorsa interna definita in
frameworks/base/core/res/res/values/config.xml. - Impostazione:un'impostazione memorizzata nel provider delle impostazioni di sistema.
Tabella 2. Impostazioni che influiscono sul comportamento della funzionalità Accesso di emergenza
| Tipo di configurazione | Nome | Descrizione |
|---|---|---|
| Risorsa | config_emergency_call_number | Il numero di telefono che viene composto automaticamente quando viene avviata la chiamata di emergenza. Tipo: stringa Valore predefinito: 112 |
| Risorsa | config_emergency_mcc_codes | Un array di numeri interi che elenca i Centri clienti in cui la funzionalità deve essere attiva. Tipo: array di numeri interi Valore predefinito: {404,405} |
| Impostazione | emergency_affordance_number | Override dell'impostazione globale con il numero da chiamare con la funzionalità di emergenza. Questo ha effetto solo sulle immagini di build sottoponibili a debug (ovvero il tipo di build è userdebug o eng). Questa funzionalità è destinata solo a scopi di test. Tipo: stringa Valore predefinito: non impostato |
| Impostazione | force_emergency_affordance | Impostazione globale che indica se la funzionalità di emergenza deve essere mostrata
indipendentemente dallo stato del dispositivo. Questa funzionalità è destinata solo a scopi di test. Tipo: booleano (1 o 0) Valore predefinito: non impostato --> 0 |
Attivare le chiamate di emergenza al 112
La funzionalità di emergenza connette la chiamata utilizzando il tastierino di emergenza in modo che la chiamata possa essere connessa quando la schermata di blocco è attiva. Il composizione di emergenza connette le chiamate solo all'elenco di numeri fornito dal Radio Interface Layer (RIL) tramite la proprietà di sistema:
ril.ecclistquando non è installata alcuna SIM.ril.ecclistSimSlotNumberquando viene inserita una SIM eSimSlotNumberè l'ID slot dell'abbonato predefinito.
I produttori di dispositivi che utilizzano la funzionalità di emergenza devono verificare che i dispositivi in India attivino sempre il 112 come numero di emergenza nel RIL.
Convalida
Durante il test su una build sottoponibile a debug, il numero chiamato può essere modificato con il seguente comando:
adb shell settings put global emergency_affordance_number NUMBER_TO_CALL
Anche se questa impostazione può essere configurata su una build utente normale, viene ignorata. Per connettere effettivamente la chiamata, il numero deve essere presente nell'elenco dei numeri di emergenza fornito dalla RIL. Puoi impostarlo temporaneamente utilizzando il seguente comando eseguito da una shell root su un dispositivo userdebug:
setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"
Il seguente comando può essere utilizzato anche per forzare l'attivazione della funzionalità di emergenza anche in assenza di una rete mobile indiana rilevata o di una scheda SIM indiana inserita.
adb shell settings put global force_emergency_affordance 1
Come minimo, è consigliabile testare i seguenti casi:
- Se attivata, la pressione prolungata del pulsante EMERGENZA nella schermata di blocco (Figura 1) avvia una chiamata al numero di emergenza specificato.
- Se attivato, l'elemento Emergenza nel menu Azione globale è presente e se lo tocchi viene avviata una chiamata al numero di emergenza specificato.
- La funzionalità non è attivata in assenza di una rete mobile indiana rilevata con una scheda SIM non indiana installata.
- La funzionalità viene attivata sul dispositivo quando viene installata una scheda SIM indiana, indipendentemente dalle reti mobili rilevate.
- La funzionalità viene attivata sul dispositivo in presenza di una rete mobile indiana, indipendentemente dalle schede SIM installate.
Se un dispositivo supporta più schede SIM, il test deve verificare che il rilevamento del codice paese della SIM funzioni correttamente in ogni slot SIM. La funzionalità di emergenza non è regolata dalla suite di test di compatibilità (CTS) di Android, quindi non sono previsti test CTS.
Domande frequenti
D. Il numero di emergenza 112 non è ancora stato attivato in India. Deve ancora essere utilizzato?
112 è il numero utilizzato in India come centrale unica di emergenza (PSAP) come definito dai sistemi integrati di comunicazione e risposta alle emergenze (IECRS). Fino a quando il PSAP non sarà operativo, tutte le chiamate al 112 vengono indirizzate al numero di emergenza 100 esistente (anche se questa è responsabilità dell' operatore, non di Android).
D. E per quanto riguarda altri trigger come la tripla pressione del tasto di accensione?
I produttori di dispositivi possono implementare trigger aggiuntivi. Tuttavia, mentre il Dipartimento per le telecomunicazioni indiano approva il triplo tocco del tasto di accensione hardware, questo trigger non è supportato nell'implementazione di riferimento AOSP in quanto alcune app di uso comune (ad esempio l'app Fotocamera) utilizzano i gesti del tasto di accensione che includono tocchi ripetuti del tasto di accensione. Queste app potrebbero interferire con il tastierino di emergenza oppure l'utente potrebbe attivare accidentalmente il pulsante antipanico mentre tenta di attivare azioni in queste app.