Notfallhilfe implementieren

Alle in Indien ab dem 1. Januar 2017 verkauften Mobilgeräte müssen eine Notruftaste haben, um den Anforderungen des indischen Department of Telecommunications (DoT) zu entsprechen. Um diese rechtlichen Anforderungen zu erfüllen, enthält Android eine Referenzimplementierung der Funktion „Notfallfunktion“, mit der eine Paniktaste auf Android-Geräten aktiviert werden kann.

Diese Funktion ist in Android 8.0 und höher standardmäßig aktiviert, muss aber in vorhandene Builds früherer Releases eingefügt werden. Diese Funktion ist ausschließlich auf Geräte ausgerichtet, die auf dem indischen Markt verkauft werden. Sie kann jedoch auf allen Geräten weltweit enthalten sein, da sie außerhalb Indiens keine Auswirkungen hat.

Beispiele und Quelle

Die Funktion für Notfallfunktionen ist im Android Open Source Project (AOSP) im Projekt frameworks/base implementiert. Sie ist im Hauptzweig verfügbar und standardmäßig in Android 8.0 und höher aktiviert.

Diese Funktion ist in den folgenden Branches und Commits verfügbar. Diese Informationen sollen es Geräteherstellern ermöglichen, die erforderlichen Änderungen ganz einfach in ihre vorhandenen Builds einzubinden. Gerätehersteller, die die AOSP-Referenzfunktion für Notfallfunktionen implementieren möchten, können die Commits aus den entsprechenden Branches in ihre eigenen Builds übernehmen.

Tabelle 1 Beispiele für die AOSP-Referenzfunktion „Notfallfunktion“

Branch Commits
Hauptnummer e0c3c66 Die Funktion „Notfallfunktion“ wurde hinzugefügt
42a4338 Übersetzungen für den String „Notfallaktion“ wurden hinzugefügt
4df8d64 Ein Problem wurde behoben, durch das die Funktion „Notfallfunktion“ auf Tablets angezeigt wurde
nougat-dev e6680d9 Die Funktion „Notfallfunktion“ wurde hinzugefügt
95e1865 Übersetzungen für den String „Notfallaktion“ wurden hinzugefügt
a70bb89 Ein Problem wurde behoben, durch das die Funktion „Notfallfunktion“ auf Tablets angezeigt wurde
marshmallow-dev cd22634 Die Funktion „Notfallfunktion“ wurde hinzugefügt
13f51c6 Übersetzungen für den String „Notfallaktion“ wurden hinzugefügt
6531666 Ein Problem wurde behoben, bei dem die Funktion „Notfallfunktion“ auf Tablets angezeigt wurde
lollipop-mr1-dev 5fbc86b Die Funktion „Notfallfunktion“ wurde hinzugefügt
1b60879 Übersetzungen für den String für Notfallaktionen wurden hinzugefügt
d74366f Ein Problem wurde behoben, durch das die Funktion „Notfallfunktion“ auf Tablets angezeigt wurde

Implementierung

Die Funktion für Notfallfunktionen ändert nichts an den APIs, die über das Android Software Development Kit (SDK) freigegeben werden. Wenn die Funktion aktiviert ist, gibt es zwei Trigger, mit denen ein Notruf an die 112 gestartet werden kann. Dies ist die einzige Notrufnummer, die in Indien verwendet werden darf und die gemäß den Vorschriften des indischen Ministeriums für Telekommunikation (DoT) vorgeschrieben ist.

Ein Notruf kann auf folgende Arten gestartet werden:

Drücke lange auf die Schaltfläche NOTFALL
auf dem Sperrbildschirm.
Tippen Sie im globalen Aktionsmenü auf die Option Notfall
.
Notruftaste

Abbildung 1: Die Schaltfläche „NOTFALL“ auf dem Sperrbildschirm.

Notfalloption

Abbildung 2: Notfallaktion im Menü „Globale Aktionen“ (durch langes Drücken der Ein/Aus-Taste aufgerufen)

Mit dieser Funktion werden die folgenden internen Komponenten eingeführt:

  • 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 für die Verwendung der Funktion „Notfallfunktion“ bereit. Sie bietet Methoden zum Initiieren des Notrufs und zum Abfragen bei Laufzeit, ob die Funktion aktiviert sein soll.

  • void performEmergencyCall(). Startet einen Notruf.
  • boolean needsEmergencyAffordance(): Bestimmt, ob die Funktion aktiv sein soll.

Die Funktion kann zum Zeitpunkt der Build-Phase dauerhaft deaktiviert werden, indem die Konstante EmergencyAffordanceManager.ENABLED in false geändert wird. Dadurch gibt needsEmergencyAffordance() immer „false“ zurück und verhindert, dass 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 eine MCC hat, die mit einer der MCCs in Indien (404 oder 405) übereinstimmt, ist die Funktion aktiviert. Das 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 zulässt. Die Funktion bleibt aktiviert, bis eine SIM-Karte verwendet wird, die nicht in Indien registriert ist, und keines der erkannten Netzwerke einen übereinstimmenden MCC hat.

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

  • Ressource: Eine interne Ressource, die in frameworks/base/core/res/res/values/config.xml definiert ist.
  • Einstellung: Eine Einstellung, die im Anbieter der Systemeinstellungen gespeichert ist.

Tabelle 2 Einstellungen, die sich auf das Verhalten der Funktion „Notfallfunktion“ auswirken

Konfigurationstyp Name Beschreibung
Ressource config_emergency_call_number Die Telefonnummer, die automatisch gewählt wird, wenn der Notruf gestartet wird.
Typ: String
Standard: 112
Ressource config_emergency_mcc_codes Ein Array von Ganzzahlen, das die Verwaltungskonten enthält, in denen die Funktion aktiv sein soll.
Typ: Array von Ganzzahlen
Standard: {404,405}
Einstellung emergency_affordance_number Überschreibung der globalen Einstellung mit der Nummer, die mit der Notruffunktion angerufen werden soll. Dies wirkt sich nur auf Images mit Debug-Funktion aus, d. h. auf Builds vom Typ „userdebug“ oder „eng“. Diese Funktion ist nur für Tests vorgesehen.
Typ: String
Standard: unset
Einstellung force_emergency_affordance Globale Einstellung, ob die Funktion „Notfallfunktion“ unabhängig vom Gerätestatus angezeigt werden soll. Diese Funktion ist nur für Tests vorgesehen.
Typ: Boolescher Wert (1 oder 0)
Standard: nicht festgelegt -> 0

Notrufe an 112 aktivieren

Die Funktion „Notfallfunktion“ stellt den Anruf über den Notruf an, damit der Anruf auch dann verbunden werden kann, wenn der Sperrbildschirm aktiv ist. Der Notruf verbindet Anrufe nur mit der Liste der Nummern, die von der Radio Interface Layer (RIL) über die Systemeigenschaft bereitgestellt werden:

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

Gerätehersteller, die die Funktion „Emergency Affordance“ verwenden, müssen dafür sorgen, dass auf Geräten in Indien immer 112 als Notrufnummer in der RIL aktiviert ist.

Zertifizierungsstufe

Beim Testen mit einem debugfähigen Build kann die aufgerufene Nummer mit dem folgenden Befehl geändert werden:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Diese Einstellung kann zwar in einem normalen Nutzerbuild festgelegt werden, wird aber ignoriert. Damit der Anruf tatsächlich verbunden werden kann, muss die Nummer in der Liste der Notrufnummern der RIL enthalten sein. Dies kann vorübergehend mit dem folgenden Befehl festgelegt werden, der über eine Root-Shell auf einem Userdebug-Gerät ausgeführt wird:

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

Mit dem folgenden Befehl kann die Funktion „Notfallfunktion“ auch dann erzwungen werden, wenn kein indisches Mobilfunknetz erkannt oder keine indische SIM-Karte eingelegt wurde.

adb shell settings put global force_emergency_affordance 1

Wir empfehlen, mindestens die folgenden Fälle zu testen:

  • Wenn die Funktion aktiviert ist, wird durch langes Drücken der Schaltfläche NOTFALL auf dem Sperrbildschirm (Abbildung 1) ein Anruf an die angegebene Notrufnummer gestartet.
  • Wenn die Funktion aktiviert ist, wird im globalen Aktionsmenü der Eintrag Notfall angezeigt. Wenn Sie darauf tippen, wird ein Anruf an die angegebene Notrufnummer gestartet.
  • Die Funktion wird nicht aktiviert, wenn kein indisches Mobilfunknetz erkannt wird und eine SIM-Karte eines anderen Landes 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 sich ein indisches Mobilfunknetz in der Nähe befindet, unabhängig von den installierten SIM-Karten.

Wenn ein Gerät mehrere SIM-Karten unterstützt, muss bei Tests sichergestellt werden, dass die SIM-MCC-Erkennung in jedem SIM-Steckplatz richtig funktioniert. Die Funktion für Notfallfunktionen unterliegt nicht der Android-Kompatibilität. Daher gibt es keine CTS-Tests (Compatibility Test Suite) dafür.

Häufig gestellte Fragen

F: Die Notrufnummer 112 ist in Indien noch nicht in Betrieb. Sollte es trotzdem verwendet werden?

112 ist die Nummer, die in Indien als Notrufzentrale gemäß den Integrated Emergency Communications and Response Systems (IECRS) verwendet wird. Bis die PSAP in Betrieb genommen wird, werden alle Anrufe an die 112 an die bestehende Notrufnummer 100 weitergeleitet. Dies ist jedoch Sache des Mobilfunkanbieters und nicht von Android.

F: Wie sieht es mit anderen Auslösern aus, z. B. dem dreimaligen Drücken der Ein/Aus-Taste?

Gerätehersteller können zusätzliche Trigger implementieren. Das indische DoT genehmigt zwar das dreimalige Tippen auf die Ein‑/Aus-Taste, dieser Trigger wird jedoch nicht in der AOSP-Referenzimplementierung unterstützt, da einige weit verbreitete Apps (z. B. die Kamera-App) Gesten für die Ein‑/Aus-Taste verwenden, die wiederholtes Tippen auf die Ein‑/Aus-Taste beinhalten. Solche Apps können den Notruf stören oder der Nutzer kann versehentlich die Paniktaste auslösen, wenn er versucht, Aktionen in diesen Apps auszulösen.