Notfallfunktion implementieren

Alle Mobilgeräte, die ab dem 1. Januar 2017 in Indien verkauft werden, müssen eine Paniktaste haben, um den Anforderungen des indischen Department of Telecommunications (DoT) zu entsprechen. Um diese regulatorischen Anforderungen zu erfüllen, enthält Android eine Referenzimplementierung der Funktion „Notfall-Affordance“, mit der ein Panikknopf 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 Versionen eingefügt werden. Diese Funktion ist ausschließlich für Geräte gedacht, die auf dem indischen Markt verkauft werden. Sie kann aber auf allen Geräten weltweit enthalten sein, da sie außerhalb Indiens keine Auswirkungen hat.

Beispiele und Quelle

Die Funktion „Notfall-Affordance“ wird im Open-Source-Projekt für Android (AOSP) frameworks/base implementiert. Sie ist im neuesten Android-Release-Branch verfügbar und in Android 8.0 und höher standardmäßig aktiviert.

Diese Funktion ist in den folgenden Branches und Commits verfügbar. Diese Informationen werden bereitgestellt, damit Gerätehersteller die erforderlichen Änderungen in ihre bestehenden Builds einfügen können. Gerätehersteller, die die AOSP-Referenzfunktion „Notfall-Affordance“ implementieren möchten, können die Commits aus den entsprechenden Zweigen in ihre eigenen Builds übernehmen.

Tabelle 1 Cherry-Picks für die AOSP-Referenzfunktion „Notfall-Affordance“

Branch Commits
android-latest-release e0c3c66 Funktion „Notfall-Affordance“ hinzugefügt
42a4338 Übersetzungen für Notfallaktion-String hinzugefügt
4df8d64 Problem behoben, bei dem die Funktion „Notfall-Affordance“ auf Tablets angezeigt wurde
nougat-dev e6680d9 Funktion „Notfallzusatz“ hinzugefügt
95e1865 Übersetzungen für Notfallaktion-String hinzugefügt
a70bb89 Problem behoben, bei dem die Funktion „Notfallzusatz“ auf Tablets angezeigt wurde
marshmallow-dev cd22634 Notfall-Affordance-Funktion hinzugefügt
13f51c6 Übersetzungen für Notfall-Aktionsstring hinzugefügt
6531666 Problem behoben, bei dem die Notfall-Affordance-Funktion auf Tablets angezeigt wurde
lollipop-mr1-dev 5fbc86b Funktion „Notfall-Affordance“ hinzugefügt
1b60879 Übersetzungen für Notfall-Aktionsstring hinzugefügt
d74366f Problem behoben, bei dem die Funktion „Notfall-Affordance“ auf Tablets angezeigt wurde

Implementierung

Die Funktion „Notfall-Affordance“ ändert nichts an den APIs, die über das Android Software Development Kit (SDK) verfügbar gemacht werden. Wenn die Funktion aktiviert ist, stehen zwei Auslöser zur Verfügung, mit denen ein Notruf an die 112 gesendet werden kann. Das ist die einzige Notrufnummer, die in Indien verwendet werden darf und die von den indischen DoT-Vorschriften vorgeschrieben wird.

Ein Notruf wird auf eine der folgenden Arten gestartet:

Langes Drücken der Schaltfläche NOTFALL
auf dem Sperrbildschirm
Tippen Sie im Menü für globale Aktionen auf die Option Notfall
.
Sperrbildschirm mit der Schaltfläche „NOTFALL“

Abbildung 1: NOTFALL-Schaltfläche auf dem Sperrbildschirm.

Globales Aktionsmenü mit ausgewählter Notfalloption

Abbildung 2: Notfallaktion im globalen Aktionsmenü (aufgerufen durch langes Drücken der Ein/Aus-Taste).

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

Die EmergencyAffordanceManager bietet eine interne API zur Verwendung der Funktion „Notfall-Affordance“. Sie bietet Methoden zum Initiieren des Notrufs und zum Abfragen zur Laufzeit, ob die Funktion aktiviert werden soll.

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

Das Feature kann zur Build-Zeit dauerhaft deaktiviert werden, indem die Konstante EmergencyAffordanceManager.ENABLED in false geändert wird. Dadurch gibt needsEmergencyAffordance() immer false zurück und verhindert den Start von EmergencyAffordanceService.

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 einen MCC hat, der mit einem der MCCs Indiens (404 oder 405) übereinstimmt, wird die Funktion aktiviert. Das bedeutet, dass die Funktion in Indien auch ohne SIM-Karte aktiviert werden kann. 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, die nicht aus Indien stammt, eingelegt wird und keines der erkannten Netzwerke einen passenden MCC hat.

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

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

Tabelle 2 Einstellungen, die sich auf das Verhalten der Funktion „Notfall-Affordance“ auswirken

Konfigurationstyp Name Beschreibung
Ressource config_emergency_call_number Die Telefonnummer, die automatisch gewählt wird, wenn der Notruf abgesetzt wird.
Typ: String
Standard: 112
Ressource config_emergency_mcc_codes Ein Array von Ganzzahlen, in dem die MCCs aufgeführt sind, in denen die Funktion aktiv sein soll.
Typ: Array von Ganzzahlen
Standard: {404,405}
Einstellung emergency_affordance_number Globale Einstellung, die mit der Nummer überschrieben wird, die mit der Notruffunktion angerufen werden soll. Dies wirkt sich nur auf debugfähige Build-Images aus (d. h. der Build-Typ ist „userdebug“ oder „eng“). Dies ist nur für Testzwecke vorgesehen.
Typ: String
Standard: nicht festgelegt
Einstellung force_emergency_affordance Globale Einstellung, ob die Funktion „Notfall-Affordance“ unabhängig vom Gerätestatus angezeigt werden soll. Dies ist nur für Testzwecke vorgesehen.
Typ: Boolesch (1 oder 0)
Standard: nicht festgelegt –> 0

Notrufe an die 112 aktivieren

Die Funktion „Notfall-Affordance“ stellt die Verbindung über die Notrufnummer her, sodass der Anruf auch bei aktivem Sperrbildschirm verbunden werden kann. Der Notruf-Dialer stellt Anrufe nur zu der Liste von Nummern her, 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 Slot-ID des Standardabonnenten.

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

Zertifizierungsstufe

Beim Testen mit einem debugfähigen Build kann die angerufene 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 Nutzer-Build festgelegt werden, wird aber ignoriert. Damit der Anruf tatsächlich verbunden wird, muss sich die Nummer in der Liste der Notrufnummern befinden, die von der RIL bereitgestellt werden. 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 „Notfall-Affordance“ auch dann aktiviert 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 diese 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 Option aktiviert ist, wird im Global Action-Menü das Element Notfall angezeigt. Wenn Sie darauf tippen, wird ein Anruf an die angegebene Notrufnummer gestartet.
  • Die Funktion wird nicht aktiviert, wenn kein indisches Mobilfunknetz mit einer nicht in Indien gekauften SIM-Karte erkannt wird.
  • Die Funktion wird auf dem Gerät aktiviert, wenn eine indische SIM-Karte eingelegt ist, unabhängig von den erkannten Mobilfunknetzen.
  • Die Funktion wird auf dem Gerät aktiviert, wenn ein indisches Mobilfunknetz erkannt wird, unabhängig von den installierten SIM-Karten.

Wenn ein Gerät mehrere SIM-Karten unterstützt, sollte beim Testen überprüft werden, ob die Erkennung des SIM-MCC in jedem SIM-Steckplatz korrekt funktioniert. Die Funktion „Notfall-Affordance“ unterliegt nicht der Android Compatibility Test Suite (CTS), daher gibt es keine CTS-Tests dafür.

Häufig gestellte Fragen

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

112 ist die Nummer, die in Indien als Notrufzentrale gemäß Integrated Emergency Communications and Response Systems (IECRS) verwendet wird. Bis zur Inbetriebnahme der Leitstelle werden alle Anrufe an die 112 an die bestehende Notrufnummer 100 weitergeleitet (dies liegt jedoch in der Verantwortung des Mobilfunkanbieters, nicht von Android).

F: Was ist mit anderen Triggern wie 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 den Hardware-Ein/Aus-Schalter, dieser Trigger wird jedoch nicht in der AOSP-Referenzimplementierung unterstützt, da einige weit verbreitete Apps (z. B. die Kamera-App) Ein/Aus-Schalter-Gesten verwenden, die wiederholtes Tippen auf den Ein/Aus-Schalter umfassen. Solche Apps können die Notrufnummer beeinträchtigen oder der Nutzer kann versehentlich die Paniktaste auslösen, wenn er versucht, Aktionen in diesen Apps auszulösen.