Umsetzung von Emergency Affordance

Alle ab dem 1. Januar 2017 in Indien verkauften Mobilgeräte müssen über eine Paniktaste verfügen, um die Anforderungen des indischen Telekommunikationsministeriums (DoT) zu erfüllen. Um diesen regulatorischen Anforderungen gerecht zu werden, enthält Android eine Referenzimplementierung der Emergency Affordance-Funktion, um eine Paniktaste auf Android-Geräten zu aktivieren.

Diese Funktion ist in Android 8.0 und höheren Versionen standardmäßig aktiviert, muss jedoch in bestehende Builds früherer Versionen gepatcht werden. Derzeit ist diese Funktion ausschließlich auf Geräte ausgerichtet, die auf dem indischen Markt verkauft werden, kann jedoch auf allen weltweit verkauften Geräten integriert werden, da die Funktion außerhalb Indiens keine Auswirkungen hat.

Beispiele und Quelle

Die Emergency Affordance-Funktion ist in den Frameworks/Basisprojekten des Android Open Source Project (AOSP) implementiert. Es ist im Hauptzweig verfügbar und in Android 8.0 und höheren Versionen standardmäßig aktiviert.

Diese Funktion ist derzeit in den folgenden Branches und Commits verfügbar. Diese Informationen werden bereitgestellt, damit Gerätehersteller die erforderlichen Änderungen problemlos in ihre vorhandenen Builds integrieren können. Gerätehersteller, die die AOSP-Referenz-Notfall-Affordance-Funktion implementieren möchten, können die Commits aus den entsprechenden Zweigen in ihren eigenen Builds auswählen.

Tabelle 1. Auswahlmöglichkeiten für die AOSP-Referenzfunktion für Notfallangebote

Zweig Commits
hauptsächlich e0c3c66 Funktion zur Erschwinglichkeit von Notfällen hinzugefügt
42a4338 Übersetzungen für Notfallaktionszeichenfolge hinzugefügt
4df8d64 Es wurde ein Problem behoben, bei dem das Notfallangebot auf Tablets angezeigt wurde
Nougat-Entwickler e6680d9 Funktion zur Erschwinglichkeit für Notfälle hinzugefügt
95e1865 Übersetzungen für Notfallaktionszeichenfolge hinzugefügt
a70bb89 Es wurde ein Problem behoben, bei dem das Notfallangebot auf Tablets angezeigt wurde
Marshmallow-Entwickler cd22634 Funktion zur Erschwinglichkeit von Notfällen hinzugefügt
13f51c6 Übersetzungen für Notfallaktionszeichenfolge hinzugefügt
6531666 Es wurde ein Problem behoben, bei dem das Notfallangebot auf Tablets angezeigt wurde
lollipop-mr1-dev 5fbc86b Funktion zur Erschwinglichkeit von Notfällen hinzugefügt
1b60879 Übersetzungen für Notfallaktionszeichenfolge hinzugefügt
d74366f Es wurde ein Problem behoben, bei dem das Notfallangebot auf Tablets angezeigt wurde

Implementierung

Die Emergency Affordance-Funktion nimmt keine Änderungen an den APIs vor, die über das Android Software Development Kit (SDK) bereitgestellt werden. Wenn die Funktion aktiviert und aktiviert ist, bietet sie zwei Auslöser, mit denen ein Notruf an 112 eingeleitet werden kann. Dabei handelt es sich um die einzige in Indien zu verwendende Notrufnummer, die in den indischen DoT-Vorschriften vorgeschrieben ist.

Ein Notruf wird ausgelöst durch:

Langes Drücken der EMERGENCY- Taste
auf dem Sperrbildschirm
Tippen Sie auf die Option „Notfall“ .
im globalen Aktionsmenü
Notfall Knopf
Abbildung 1. NOTFALL- Taste auf dem Sperrbildschirm.
Notfalloption
Abbildung 2. Notfallaktion im globalen Aktionsmenü (Zugriff durch langes Drücken der Ein-/Aus-Taste).

Diese Funktion führt die folgenden internen Komponenten ein:

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

EmergencyAffordanceManager

Der EmergencyAffordanceManager stellt eine interne API zur Verwendung der Emergency Affordance-Funktion bereit. Es bietet Methoden zum Auslösen des Notrufs und zur Abfrage zur Laufzeit, ob die Funktion aktiviert werden soll.

  • void performEmergencyCall() . Leitet einen Notruf ein.
  • boolean needsEmergencyAffordance() . Legt fest, ob die Funktion aktiv sein soll.

Die Funktion kann zur Build-Zeit dauerhaft deaktiviert werden, indem die EmergencyAffordanceManager.ENABLED Konstante in false geändert wird. Dies führt dazu, dass needsEmergencyAffordance() immer „false“ zurückgibt und verhindert, dass der EmergencyAffordanceService gestartet wird.

EmergencyAffordanceService

Der EmergencyAffordanceService ist ein Systemdienst, der den Mobile Country Code (MCC) aller erkannten Mobilfunknetze und den MCC der installierten SIM-Karten überwacht. Wenn eine der installierten SIM-Karten oder erkannten Mobilfunknetze über einen MCC verfügt, der mit einem der indischen MCCs (404 oder 405) übereinstimmt, wird die Funktion aktiviert. Dies bedeutet, dass die Funktion in Indien auch dann aktiviert werden kann, wenn keine SIM-Karte vorhanden ist. Es wird davon ausgegangen, dass das Mobilfunknetz die Registrierung für Notrufe auch ohne installierte SIM-Karte ermöglicht. Die Funktion bleibt aktiviert, bis eine nicht aus Indien stammende SIM-Karte installiert ist und keines der erkannten Netzwerke über ein passendes MCC verfügt.

Die folgenden Ressourcen und Einstellungen wirken sich auf das Verhalten der Funktion „Emergency Affordance“ aus. Wenn der Konfigurationstyp ist:

  • Ressource : Es handelt sich um eine interne Ressource, die in frameworks/base/core/res/res/values/config.xml definiert ist.
  • Einstellung ist eine Einstellung, die im Systemeinstellungsanbieter gespeichert wird.

Tabelle 2. Einstellungen, die sich auf das Verhalten der Notfallfunktion auswirken

Konfigurationstyp Name Beschreibung
Ressource config_emergency_call_number Die Telefonnummer, die beim Auslösen des Notrufs automatisch gewählt wird.
Typ: Zeichenfolge
Standard: 112
Ressource config_emergency_mcc_codes Ein Array von Ganzzahlen, das die Kundencenter auflistet, in denen die Funktion aktiv sein soll.
Typ: Array von Ganzzahlen
Standard: {404.405}
Einstellung Emergency_affordance_number Überschreiben Sie die globale Einstellung mit der Nummer, die im Notfallangebot angerufen werden soll. Dies hat nur Auswirkungen auf debuggbare Build-Images (d. h. der Build-Typ ist userdebug oder eng). Dies ist nur zum Testen gedacht.
Typ: Zeichenfolge
Standard: nicht gesetzt
Einstellung force_emergency_affordance Globale Einstellung, ob das Notfallangebot unabhängig vom Gerätestatus angezeigt werden soll. Dies ist nur zum Testen gedacht.
Typ: Boolescher Wert (1 oder 0)
Standard: nicht gesetzt -> 0

Notrufe an 112 aktivieren

Die Notruffunktion verbindet den Anruf über den Notrufwähler, sodass der Anruf verbunden werden kann, wenn der Sperrbildschirm aktiv ist. Der Notrufwähler verbindet Anrufe nur mit der Nummernliste, die vom Radio Interface Layer (RIL) über die Systemeigenschaft bereitgestellt wird:

  • ril.ecclist , wenn keine SIM installiert ist.
  • ril.ecclist SimSlotNumber , wenn eine SIM-Karte eingelegt ist und SimSlotNumber die Steckplatz-ID des Standardteilnehmers ist.

Gerätehersteller, die die Notruffunktion nutzen, müssen sicherstellen, dass Geräte in Indien immer 112 als Notrufnummer im RIL aktivieren.

Validierung

Beim Testen eines debuggbaren Builds kann die aufgerufene Nummer mit dem folgenden Befehl geändert werden:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Obwohl diese Einstellung bei einem normalen Benutzer-Build festgelegt werden kann, wird sie ignoriert. Um den Anruf tatsächlich zu tätigen, muss die Nummer in der Liste der vom RIL bereitgestellten Notrufnummern enthalten sein. Dies kann vorübergehend mit dem folgenden Befehl festgelegt werden, der von einer Root-Shell auf einem Userdebug-Gerät ausgeführt wird:

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

Mit dem folgenden Befehl kann auch die Aktivierung der Emergency Affordance-Funktion erzwungen werden, selbst wenn kein indisches Mobilfunknetz erkannt wird oder keine indische SIM-Karte eingelegt ist.

adb shell settings put global force_emergency_affordance 1

Es wird empfohlen, mindestens die folgenden Fälle zu testen:

  • Nach der Aktivierung wird durch langes Drücken der EMERGENCY- Taste auf dem Sperrbildschirm (Abbildung 1) ein Anruf an die angegebene Notrufnummer eingeleitet.
  • Nach der Aktivierung ist das Element „Notfall“ im globalen Aktionsmenü vorhanden und durch Antippen wird ein Anruf an die angegebene Notrufnummer eingeleitet.
  • Die Funktion wird nicht aktiviert , wenn kein indisches Mobilfunknetz erkannt wird und eine nicht aus Indien stammende SIM-Karte installiert ist.
  • Die Funktion wird auf dem Gerät aktiviert , wenn eine indische SIM-Karte installiert ist, unabhängig von den erkannten Mobilfunknetzen.
  • Die Funktion wird auf dem Gerät aktiviert , wenn ein indisches Mobilfunknetz vorhanden ist, unabhängig von den installierten SIM-Karten.

Wenn ein Gerät mehrere SIM-Karten unterstützt, sollte durch Tests sichergestellt werden, dass die SIM-MCC-Erkennung in jedem SIM-Steckplatz ordnungsgemäß funktioniert. Die Emergency Affordance-Funktion unterliegt nicht der Android-Kompatibilität, daher gibt es keine Compatibility Test Suite (CTS)-Tests dafür.

Häufig gestellte Fragen

F. Die Notrufnummer 112 wurde in Indien noch nicht eingerichtet. Sollte es trotzdem verwendet werden?

112 ist die Nummer, die in Indien als Public Safety Answering Point (PSAP) gemäß der Definition des Integrated Emergency Communications and Response Systems (IECRS) verwendet wird. Bis zur Inbetriebnahme der PSAP werden alle Anrufe an 112 an die bestehende Notrufnummer 100 weitergeleitet (obwohl dies in der Verantwortung des Netzbetreibers und nicht von Android liegt).

F. Was ist mit anderen Auslösern wie dem dreifachen Drücken des Netzschalters?

Gerätehersteller können sich für die Implementierung zusätzlicher Auslöser entscheiden. Obwohl das indische Verteidigungsministerium das dreifache Tippen auf den Hardware-Einschaltknopf genehmigt, wird dieser Auslöser in der AOSP-Referenzimplementierung nicht unterstützt , da einige weit verbreitete Anwendungen (z. B. die Kamera-App) Einschaltknopf-Gesten verwenden, die wiederholtes Tippen auf den Einschaltknopf umfassen. Solche Anwendungen könnten die Notruffunktion stören oder der Benutzer könnte versehentlich die Paniktaste betätigen, während er versucht, Aktionen in diesen Anwendungen auszulösen.