Implementare l'affordance di emergenza

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
Schermata di blocco che mostra un pulsante EMERGENZA

Figura 1. Pulsante EMERGENZA nella schermata di blocco.

Menu Azioni globali con l'opzione Emergenza selezionata

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à 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.ecclist quando non è installata alcuna SIM.
  • ril.ecclistSimSlotNumber quando viene inserita una SIM e SimSlotNumber è 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.