Implementare la convenienza delle emergenze

Tutti i dispositivi mobili venduti in India a partire dal 1° gennaio 2 2017 devono essere dotati di 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 prompt di emergenza per attivare un pulsante di emergenza sui dispositivi Android.

Questa funzionalità è attivata per impostazione predefinita nelle release di Android 8.0 e successive, ma deve essere applicata alle build esistenti delle release precedenti. Questa funzionalità è destinata esclusivamente ai dispositivi venduti nel mercato indiano, ma può essere inclusa su tutti i dispositivi venduti in tutto il mondo, poiché non ha alcun effetto al di fuori dell'India.

Esempi e origine

La funzionalità di prompt di emergenza è implementata nel progetto Android Open Source Project (AOSP) frameworks/base. È disponibile nel ramo principale ed è attivato per impostazione predefinita nelle release Android 8.0 e successive.

Questa funzionalità è disponibile nei seguenti branch e commit. Queste informazioni vengono fornite per consentire ai produttori di dispositivi di applicare facilmente le modifiche necessarie alle build esistenti. I produttori di dispositivi che vogliono implementare la funzionalità di riferimento AOSP di Emergency Affordance possono scegliere i commit dei branch applicabili nelle proprie build.

Tabella 1. Scelte mirate per la funzionalità di riferimento AOSP relativa all'affordance di emergenza

Branch Commit
principale e0c3c66 È stata aggiunta la funzionalità di prompt 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 prompt di emergenza veniva visualizzata sui tablet
nougat-dev e6680d9 È stata aggiunta la funzionalità di prompt di emergenza
95e1865 Sono state aggiunte le traduzioni per la stringa di azione di emergenza
a70bb89 È stato risolto un problema per cui la funzionalità di prompt di emergenza non veniva visualizzata sui tablet
marshmallow-dev cd22634 È stata aggiunta la funzionalità di prompt di emergenza
13f51c6 Sono state aggiunte le traduzioni per la stringa di azione di emergenza
6531666 È stato risolto un problema per cui la funzionalità di prompt di emergenza veniva visualizzata sui tablet
lollipop-mr1-dev 5fbc86b È stata aggiunta la funzionalità di prompt di emergenza
1b60879 Sono state aggiunte le traduzioni per la stringa di azione di emergenza
d74366f È stato risolto un problema per cui la funzionalità di prompt di emergenza veniva visualizzata sui tablet

Implementazione

La funzionalità di prompt di emergenza non apporta modifiche alle API esposte tramite l'SDK (software development kit) Android. Se abilitata e attivata, la funzionalità fornisce due attivatori che possono avviare una chiamata di emergenza al 112, che è l'unico numero di emergenza da utilizzare in India e obbligatorio ai sensi delle normative del DoT indiano.

Una chiamata di emergenza viene avviata in uno dei seguenti modi:

Premere a lungo il pulsante EMERGENZA
sulla schermata di blocco
Toccando l'opzione Emergenza
nel menu di azioni globali
pulsante di emergenza

Figura 1. Pulsante EMERGENZA nella schermata di blocco.

Opzione di emergenza

Figura 2. Azione di emergenza nel menu Azioni globali (accessibile premendo a lungo il tasto di accensione).

Questa funzionalità introduce i seguenti componenti interni:

  • 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 fornisce un'API interna per utilizzare la funzionalità EmergencyAffordance. Fornisce metodi per avviare la chiamata di emergenza e eseguire query in fase di esecuzione 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 falso 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 il codice paese mobile delle schede SIM installate. Se una delle schede SIM installate o delle reti cellulari rilevate ha un codice MCC corrispondente a uno dei codici 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 codice MCC corrispondente.

Le seguenti risorse e impostazioni influiscono sul comportamento della funzionalità di accessibilità di emergenza. Se il tipo di configurazione è:

  • Risorsa, è una risorsa interna definita in frameworks/base/core/res/res/values/config.xml.
  • Impostazione, si tratta di un'impostazione memorizzata nel provider delle impostazioni di sistema.

Tabella 2. Impostazioni che influiscono sul comportamento della funzionalità di prompt 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 deve essere attiva la funzionalità.
Tipo: array di numeri interi
Valore predefinito: {404,405}
Impostazione emergency_affordance_number Sostituzione dell'impostazione globale con il numero da chiamare con l'affordance di emergenza. Questo ha effetto solo sulle immagini di build di debug (ovvero il tipo di build è userdebug o eng). Questo è destinato solo ai test.
Tipo: stringa
Valore predefinito: non impostato
Impostazione force_emergency_affordance Impostazione globale che indica se la funzionalità di accessibilità di emergenza deve essere mostrata indipendentemente dall'attività del dispositivo. Questo è destinato solo ai test.
Tipo: booleano (1 o 0)
Valore predefinito: non impostato --> 0

Attivare le chiamate di emergenza al 112

La funzionalità di prompt di emergenza connette la chiamata utilizzando il tastierino per le chiamate di emergenza in modo che la chiamata possa essere collegata quando la schermata di blocco è attiva. Il tastierino per le chiamate di emergenza collega le chiamate solo all'elenco di numeri fornito dal Radio Interface Layer (RIL) tramite la proprietà di sistema:

  • ril.ecclist quando non è installata alcuna SIM.
  • ril.ecclistSimSlotNumber quando è inserita una SIM e SimSlotNumber è l'ID dello slot dell'abbonato predefinito.

I produttori di dispositivi che utilizzano la funzionalità di prompt di emergenza devono assicurarsi che i dispositivi in India attivino sempre il 112 come numero di emergenza nell'RIL.

Convalida

Durante il test su una build di debug, il numero chiamato può essere modificato con il seguente comando:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Sebbene questa impostazione possa essere impostata in una normale build utente, viene ignorata. Per collegare effettivamente la chiamata, il numero deve essere nell'elenco dei numeri di emergenza fornito dall'RIL. Questo valore può essere impostato 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 prompt 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, ti consigliamo di testare i seguenti casi:

  • Se l'opzione è attiva, premendo a lungo il pulsante EMERGENZA sulla schermata di blocco (Figura 1) viene avviata una chiamata al numero di emergenza specificato.
  • Quando è attivato, l'elemento Emergenza nel menu di azioni globali è presente e toccandolo 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 è 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, i test devono garantire che il rilevamento dell'MCC della SIM funzioni correttamente in ogni slot della SIM. La funzionalità di accessibilità di emergenza non è regolata dalla compatibilità Android, pertanto non sono previsti test di Compatibility Test Suite (CTS).

Domande frequenti

D. Il numero di emergenza 112 non è ancora stato commissionato in India. Dovrebbe essere ancora utilizzato?

112 è il numero utilizzato in India come Public Safety Answering Point (PSAP) come definito dall'Integrated Emergency Communications and Response Systems (IECRS). Fino alla messa in servizio del PSAP, tutte le chiamate al 112 vengono inoltrate al numero di emergenza 100 esistente (anche se questa è responsabilità dell'operatore, non di Android).

D. E per quanto riguarda altri attivatori come la triplice pressione del tasto di accensione?

I produttori di dispositivi possono implementare attivatori aggiuntivi. Tuttavia, anche se il DoT indiano approva il triplo tocco del tasto di accensione hardware, questo attivatore non è supportato nell'implementazione di riferimento AOSP, poiché alcune app di uso comune (ad esempio l'app Fotocamera) utilizzano gesti del tasto di accensione che includono tocchi ripetuti del tasto di accensione. Queste app potrebbero interferire con il tastierino di emergenza o l'utente potrebbe attivare accidentalmente il pulsante di emergenza mentre tenta di attivare azioni in queste app.