Wdrożenie interfejsu awaryjnego

Wszystkie urządzenia mobilne sprzedawane w Indiach od 1 stycznia 2017 r. muszą mieć przycisk alarmowy, aby spełniać wymagania indyjskiego Departamentu Telekomunikacji (DoT). Aby spełnić te wymagania prawne, Android zawiera referencyjną implementację funkcji Emergency Affordance, która umożliwia włączenie przycisku alarmowego na urządzeniach z Androidem.

Ta funkcja jest domyślnie włączona w Androidzie 8.0 i nowszych wersjach, ale w przypadku starszych wersji trzeba ją dodać. Ta funkcja jest przeznaczona wyłącznie na urządzenia sprzedawane na rynku indyjskim, ale można ją uwzględnić na wszystkich urządzeniach sprzedawanych na całym świecie, ponieważ poza Indiami nie ma ona żadnego wpływu.

Przykłady i źródło

Funkcja Emergency Affordance jest zaimplementowana w ramach Projektu Android Open Source (AOSP) w projekcie frameworks/base. Jest ona dostępna w najnowszej wersji Androida i jest domyślnie włączona w Androidzie 8.0 i nowszych.

Ta funkcja jest dostępna w tych gałęziach i zatwierdzeniach. Te informacje są udostępniane, aby umożliwić producentom urządzeń wprowadzenie niezbędnych zmian w ich obecnych kompilacjach. Producenci urządzeń, którzy chcą wdrożyć funkcję ułatwień dostępu w sytuacjach awaryjnych w wersji referencyjnej AOSP, mogą wybrać commity z odpowiednich gałęzi i zastosować je w swoich kompilacjach.

Tabela 1. Wybrane zmiany w funkcji ułatwień dostępu w sytuacjach awaryjnych w AOSP

Oddział Zatwierdzenia
android-latest-release e0c3c66 Dodano funkcję ułatwień dostępu w sytuacjach alarmowych
42a4338 Dodano tłumaczenia ciągu tekstowego dotyczącego działań w sytuacjach alarmowych
4df8d64 Naprawiono problem z wyświetlaniem funkcji ułatwień dostępu w sytuacjach alarmowych na tabletach
nougat-dev e6680d9 Dodano funkcję ułatwień dostępu w sytuacjach alarmowych
95e1865 Dodano tłumaczenia ciągu tekstowego dotyczącego działań w sytuacjach alarmowych
a70bb89 Naprawiono problem z wyświetlaniem funkcji ułatwień dostępu w sytuacjach alarmowych na tabletach
marshmallow-dev cd22634 Dodano funkcję ułatwień dostępu w sytuacjach alarmowych
13f51c6 Dodano tłumaczenia ciągu tekstowego dotyczącego działań w sytuacjach alarmowych
6531666 Rozwiązano problem, który powodował, że funkcja ułatwień dostępu w sytuacjach alarmowych wyświetlała się na tabletach
lollipop-mr1-dev 5fbc86b Dodano funkcję ułatwień dostępu w sytuacjach awaryjnych
1b60879 Dodano tłumaczenia ciągu tekstowego działania w sytuacji awaryjnej
d74366f Rozwiązano problem polegający na tym, że funkcja ułatwień dostępu w sytuacjach awaryjnych była wyświetlana na tabletach

Implementacja

Funkcja ułatwień w sytuacjach awaryjnych nie wprowadza żadnych zmian w interfejsach API udostępnianych przez pakiet SDK Androida. Po włączeniu i aktywacji ta funkcja udostępnia 2 sposoby inicjowania połączenia alarmowego na numer 112, który jest jedynym numerem alarmowym używanym w Indiach i wymaganym przez przepisy indyjskiego Departamentu Telekomunikacji.

Połączenie alarmowe jest inicjowane przez:

przytrzymanie przycisku ALARMOWY
na ekranie blokady;
Kliknięcie opcji Alarmowe
w menu czynności globalnych
Ekran blokady z przyciskiem ALARMOWE

Rysunek 1. Przycisk ALARM na ekranie blokady.

Menu działań globalnych z wybraną opcją Alarm

Rysunek 2. Działanie alarmowe w menu czynności globalnych (dostępnym po przytrzymaniu przycisku zasilania).

Ta funkcja wprowadza te komponenty wewnętrzne:

  • 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 udostępnia wewnętrzny interfejs API do korzystania z funkcji Emergency Affordance. Zawiera metody inicjowania połączenia alarmowego i sprawdzania w czasie działania, czy funkcja powinna być włączona.

  • void performEmergencyCall(). Nawiązuje połączenie alarmowe.
  • boolean needsEmergencyAffordance(). Określa, czy funkcja ma być aktywna.

Funkcję można trwale wyłączyć w czasie kompilacji, zmieniając stałą EmergencyAffordanceManager.ENABLED na false. Powoduje to, że needsEmergencyAffordance() zawsze zwraca wartość false i uniemożliwia uruchomienie EmergencyAffordanceService.

EmergencyAffordanceService

EmergencyAffordanceService to usługa systemowa, która monitoruje kod kraju sieci komórkowej (MCC) wszystkich wykrytych sieci komórkowych oraz kod MCC zainstalowanych kart SIM. Jeśli któraś z zainstalowanych kart SIM lub wykrytych sieci komórkowych ma kod MCC pasujący do jednego z kodów MCC w Indiach (404 lub 405), funkcja jest włączona. Oznacza to, że funkcję można włączyć w Indiach nawet wtedy, gdy nie ma karty SIM. Zakłada się, że sieć komórkowa zezwala na rejestrację połączeń alarmowych nawet bez zainstalowanej karty SIM. Funkcja pozostaje włączona, dopóki nie zostanie zainstalowana karta SIM spoza Indii i żadna z wykrytych sieci nie będzie miała pasującego kodu MCC.

Na działanie funkcji Ułatwienia w sytuacji awaryjnej mają wpływ te zasoby i ustawienia: Jeśli typ konfiguracji to:

  • Zasób: zasób wewnętrzny zdefiniowany w frameworks/base/core/res/res/values/config.xml.
  • Ustawienie: ustawienie przechowywane w ustawieniach systemu.

Tabela 2. Ustawienia wpływające na działanie funkcji ułatwień dostępu w sytuacjach alarmowych

Typ konfiguracji Nazwa Opis
Zasób config_emergency_call_number Numer telefonu, który jest automatycznie wybierany po zainicjowaniu połączenia alarmowego.
Typ: ciąg
Wartość domyślna: 112
Zasób config_emergency_mcc_codes Tablica liczb całkowitych zawierająca kody MCC, w których funkcja powinna być aktywna.
Typ: tablica liczb całkowitych
Wartość domyślna: {404,405}
Ustawienie emergency_affordance_number Zastąpienie ustawienia globalnego numerem, pod który można zadzwonić w nagłych wypadkach. Ma to wpływ tylko na obrazy kompilacji, które można debugować (czyli typ kompilacji to userdebug lub eng). Jest to przeznaczone tylko do testowania.
Typ: ciąg
Wartość domyślna: brak
Ustawienie force_emergency_affordance Ustawienie globalne określające, czy funkcja ułatwień dostępu w sytuacjach awaryjnych ma być wyświetlana niezależnie od stanu urządzenia. Jest to przeznaczone tylko do testowania.
Typ: wartość logiczna (1 lub 0)
Wartość domyślna: nieustawiona –> 0

Włącz połączenia alarmowe na numer 112

Funkcja połączeń alarmowych nawiązuje połączenie za pomocą aplikacji do połączeń alarmowych, dzięki czemu połączenie może zostać nawiązane, gdy ekran blokady jest aktywny. Aplikacja do wybierania numerów alarmowych łączy połączenia tylko z listą numerów podaną przez warstwę interfejsu radiowego (RIL) za pomocą właściwości systemowej:

  • ril.ecclist, gdy nie jest zainstalowana karta SIM.
  • ril.ecclistSimSlotNumber – gdy włożona jest karta SIM, a SimSlotNumber to identyfikator gniazda domyślnego subskrybenta.

Producenci urządzeń korzystający z funkcji ułatwień dostępu w sytuacjach awaryjnych muszą sprawdzić, czy w Indiach numer 112 jest zawsze włączony jako numer alarmowy w RIL.

Weryfikacja

Podczas testowania kompilacji z możliwością debugowania numer, na który dzwonisz, możesz zmienić za pomocą tego polecenia:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Chociaż to ustawienie można skonfigurować w przypadku zwykłej kompilacji użytkownika, jest ono ignorowane. Aby nawiązać połączenie, numer musi znajdować się na liście numerów alarmowych podanej przez RIL. Można to tymczasowo ustawić za pomocą tego polecenia wykonanego w powłoce roota na urządzeniu w wersji userdebug:

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

Poniższe polecenie umożliwia też wymuszenie włączenia funkcji Emergency Affordance, nawet jeśli nie wykryto indyjskiej sieci komórkowej lub nie włożono indyjskiej karty SIM.

adb shell settings put global force_emergency_affordance 1

Zalecamy przetestowanie co najmniej tych przypadków:

  • Po włączeniu tej funkcji naciśnięcie i przytrzymanie przycisku ALARMOWE na ekranie blokady (rysunek 1) spowoduje nawiązanie połączenia z określonym numerem alarmowym.
  • Po włączeniu tej opcji w menu działań globalnych pojawia się pozycja Alarmowe. Kliknięcie jej powoduje nawiązanie połączenia z określonym numerem alarmowym.
  • Funkcja nie jest aktywowana, jeśli nie wykryto indyjskiej sieci komórkowej z zainstalowaną kartą SIM spoza Indii.
  • Funkcja jest aktywowana na urządzeniu po zainstalowaniu indyjskiej karty SIM, niezależnie od wykrytych sieci komórkowych.
  • Funkcja jest aktywowana na urządzeniu w obecności indyjskiej sieci komórkowej, niezależnie od zainstalowanych kart SIM.

Jeśli urządzenie obsługuje kilka kart SIM, testy powinny potwierdzić, że wykrywanie kodu MCC działa prawidłowo w każdym gnieździe SIM. Funkcja Emergency Affordance nie jest objęta pakietem testów zgodności Androida (CTS), więc nie ma dla niej testów CTS.

Najczęstsze pytania

Pytanie: Numer alarmowy 112 nie został jeszcze uruchomiony w Indiach. Czy nadal należy go używać?

112 to numer używany w Indiach jako centrum powiadamiania ratunkowego (CPR) zgodnie z definicją zintegrowanych systemów komunikacji i reagowania w sytuacjach zagrożenia (IECRS). Do czasu uruchomienia PSAP wszystkie połączenia na numer 112 są przekierowywane na dotychczasowy numer alarmowy 100 (odpowiedzialność za to ponosi operator, a nie Android).

Pytanie: Co z innymi wyzwalaczami, takimi jak trzykrotne naciśnięcie przycisku zasilania?

Producenci urządzeń mogą wdrażać dodatkowe reguły. Indyjskie Ministerstwo Telekomunikacji (DoT) zatwierdza potrójne kliknięcie sprzętowego przycisku zasilania, ale ten wyzwalacz nie jest obsługiwany w referencyjnej implementacji AOSP, ponieważ niektóre powszechnie używane aplikacje (np. Aparat) korzystają z gestów przycisku zasilania, które obejmują wielokrotne kliknięcie tego przycisku. Takie aplikacje mogą zakłócać działanie funkcji połączeń alarmowych lub użytkownik może przypadkowo włączyć przycisk alarmowy podczas próby wywołania działań w tych aplikacjach.