Wdrażanie środków nadzwyczajnych

Wszystkie urządzenia mobilne sprzedawane w Indiach od 1 stycznia 2017 r. muszą być wyposażone w przycisk paniki, aby spełnić wymagania indyjskiego Departamentu Telekomunikacji (DoT). Aby spełnić te wymagania prawne, system Android zawiera referencyjną implementację funkcji Emergency Affordance umożliwiającej włączenie przycisku paniki na urządzeniach z systemem Android.

Ta funkcja jest domyślnie włączona w systemie Android 8.0 i nowszych wersjach, ale należy ją załatać w istniejących kompilacjach wcześniejszych wersji. Obecnie ta funkcja jest przeznaczona wyłącznie dla urządzeń sprzedawanych na rynku indyjskim, ale można ją włączyć na wszystkich urządzeniach sprzedawanych na całym świecie, ponieważ ta funkcja nie działa poza Indiami.

Przykłady i źródło

Funkcja Emergency Affordance jest zaimplementowana w ramach/projektie podstawowym Android Open Source Project (AOSP). Jest dostępny w głównej gałęzi i jest domyślnie włączony w Androidzie 8.0 i nowszych wersjach.

Ta funkcja jest obecnie dostępna w następujących gałęziach i zatwierdzeniach. Informacje te mają na celu umożliwienie producentom urządzeń łatwe wprowadzenie niezbędnych zmian w istniejących kompilacjach. Producenci urządzeń, którzy chcą wdrożyć funkcję afordancji referencyjnej AOSP, mogą wybierać zatwierdzenia z odpowiednich gałęzi do własnych kompilacji.

Tabela 1. Najlepsze typy dla referencyjnej funkcji afordancji awaryjnej AOSP

Oddział Zatwierdza
główny e0c3c66 Dodano funkcję afordancji awaryjnej
42a4338 Dodano tłumaczenia ciągu działań awaryjnych
4df8d64 Naprawiono błąd powodujący wyświetlanie afordancji awaryjnej na tabletach
nugat-dev e6680d9 Dodano funkcję przystępności awaryjnej
95e1865 Dodano tłumaczenia ciągu działań awaryjnych
a70bb89 Naprawiono problem polegający na tym, że na tabletach wyświetlała się afordancja awaryjna
marshmallow-dev cd22634 Dodano funkcję awaryjną
13f51c6 Dodano tłumaczenia ciągu działań awaryjnych
6531666 Naprawiono błąd powodujący wyświetlanie afordancji awaryjnej na tabletach
Lollipop-mr1-dev 5fbc86b Dodano funkcję afordancji awaryjnej
1b60879 Dodano tłumaczenia ciągu działań awaryjnych
d74366f Naprawiono błąd powodujący wyświetlanie afordancji awaryjnej na tabletach

Realizacja

Funkcja Emergency Affordance nie wprowadza żadnych zmian w interfejsach API udostępnianych za pośrednictwem zestawu Android Software Development Kit (SDK). Po włączeniu i aktywowaniu funkcja zapewnia dwa wyzwalacze, które mogą zainicjować połączenie alarmowe pod numer 112, który jest jedynym numerem alarmowym używanym w Indiach i zgodnym z indyjskimi przepisami DoT.

Połączenie alarmowe jest inicjowane przez:

Długie naciśnięcie przycisku AWARYJNEGO
na ekranie blokady
Dotknięcie opcji awaryjnej
w globalnym menu akcji
przycisk awaryjny
Rysunek 1. Przycisk AWARYJNY na ekranie blokady.
opcja awaryjna
Rysunek 2. Akcja awaryjna w Globalnym menu akcji (dostępne po długim naciśnięciu klawisza zasilania).

Ta funkcja wprowadza następujące 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
    

Menedżer ds. zarządzania awaryjnego

EmergencyAffordanceManager udostępnia wewnętrzny interfejs API umożliwiający korzystanie z funkcji EmergencyAffordance. Zapewnia metody inicjowania połączenia alarmowego i sprawdzania w czasie wykonywania, czy funkcja powinna być włączona.

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

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

Usługa EmergencyAffordanceService

EmergencyAffordanceService to usługa systemowa monitorująca Mobile Country Code (MCC) wszystkich wykrytych sieci komórkowych oraz MCC zainstalowanych kart SIM. Jeśli którakolwiek z zainstalowanych kart SIM lub wykrytych sieci komórkowych ma MCC odpowiadający jednemu z indyjskich MCC (404 lub 405), funkcja zostanie włączona. Oznacza to, że tę funkcję można włączyć w Indiach, nawet jeśli nie ma karty SIM. Zakłada się, że sieć komórkowa umożliwi rejestrację połączeń alarmowych nawet bez zainstalowanej karty SIM. Funkcja pozostanie włączona, dopóki nie zostanie zainstalowana karta SIM spoza Indii i żadna z wykrytych sieci nie będzie miała pasującego MCC.

Poniższe zasoby i ustawienia wpływają na działanie funkcji Afordancja awaryjna. Jeśli typ konfiguracji to:

  • Zasób , jest to zasób wewnętrzny zdefiniowany w frameworks/base/core/res/res/values/config.xml .
  • Ustawienie , jest to ustawienie przechowywane u dostawcy ustawień systemowych.

Tabela 2. Ustawienia wpływające na zachowanie funkcji afordancji awaryjnej

Typ konfiguracji Nazwa Opis
Ratunek config_emergency_call_number Numer telefonu wybierany automatycznie po zainicjowaniu połączenia alarmowego.
Typ: ciąg
Wartość domyślna: 112
Ratunek config_emergency_mcc_codes Tablica liczb całkowitych zawierająca listę kont MCK, w których funkcja powinna być aktywna.
Typ: tablica liczb całkowitych
Wartość domyślna: {404 405}
Ustawienie numer_dostępności_awaryjnej Zastąpienie ustawienia globalnego numerem, pod który należy zadzwonić z afordancją awaryjną. Będzie to miało wpływ tylko na debugowalne obrazy kompilacji (tzn. typ kompilacji to userdebug lub eng). Jest to przeznaczone wyłącznie do testowania.
Typ: ciąg
Wartość domyślna: nieustawiona
Ustawienie force_emergency_affordance Ustawienie globalne, czy afordancja awaryjna ma być pokazywana niezależnie od stanu urządzenia. Jest to przeznaczone wyłącznie do testowania.
Typ: Boolean (1 lub 0)
Domyślnie: nieustawione --> 0

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

Funkcja afordancji alarmowej łączy połączenie za pomocą dialera alarmowego, dzięki czemu połączenie można nawiązać, gdy ekran blokady jest aktywny. Dialer alarmowy łączy połączenia tylko z listą numerów udostępnioną przez warstwę interfejsu radiowego (RIL) poprzez właściwość systemu:

  • ril.ecclist , gdy nie jest zainstalowana żadna karta SIM.
  • ril.ecclist SimSlotNumber po włożeniu karty SIM, a SimSlotNumber to identyfikator gniazda domyślnego abonenta.

Producenci urządzeń korzystający z funkcji afordancji awaryjnej muszą dopilnować, aby urządzenia w Indiach zawsze udostępniały numer 112 jako numer alarmowy w RIL.

Walidacja

Podczas testowania kompilacji z możliwością debugowania wywoływany numer można zmienić za pomocą następującego polecenia:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Chociaż to ustawienie można ustawić w przypadku normalnej kompilacji użytkownika, zostanie ono zignorowane. Aby faktycznie nawiązać połączenie, numer musi znajdować się na liście numerów alarmowych udostępnianej przez RIL. Można to tymczasowo ustawić za pomocą następującego polecenia wykonanego z powłoki roota na urządzeniu do debugowania użytkownika:

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

Poniższego polecenia można również użyć do wymuszenia włączenia funkcji Emergency Affordance nawet w przypadku braku wykrycia indyjskiej sieci komórkowej lub włożenia indyjskiej karty SIM.

adb shell settings put global force_emergency_affordance 1

Zaleca się przetestowanie co najmniej następujących przypadków:

  • Po aktywacji, długie naciśnięcie przycisku AWARYJNE na ekranie blokady (Rysunek 1) inicjuje połączenie z określonym numerem alarmowym.
  • Po aktywacji pozycja Alarm w globalnym menu akcji jest dostępna i dotknięcie jej inicjuje połączenie z określonym numerem alarmowym.
  • Funkcja nie jest aktywowana w przypadku braku wykrytej 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 wiele kart SIM, testowanie powinno upewnić się, że wykrywanie MCC karty SIM działa prawidłowo w każdym gnieździe SIM. Funkcja Emergency Affordance nie podlega zgodności z systemem Android, dlatego nie ma dla niej testów Compatibility Test Suite (CTS).

Często Zadawane Pytania

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

112 to numer, który będzie używany w Indiach jako punkt przyjmowania zgłoszeń o wypadkach (PSAP) zgodnie z definicją w zintegrowanych systemach łączności i reagowania w sytuacjach kryzysowych (IECRS). Do czasu uruchomienia PSAP wszystkie połączenia z numerem 112 będą kierowane na istniejący numer alarmowy 100 (choć jest to obowiązek operatora, a nie Androida).

P. A co z innymi wyzwalaczami, takimi jak trzykrotne naciśnięcie przycisku zasilania?

Producenci urządzeń mogą zdecydować się na wdrożenie dodatkowych wyzwalaczy. Jednakże, chociaż indyjski Departament DoT zatwierdza trzykrotne naciśnięcie sprzętowego przycisku zasilania, ten wyzwalacz nie jest obsługiwany w referencyjnej implementacji AOSP, ponieważ niektóre powszechnie używane aplikacje (np. aplikacja Aparat) wykorzystują gesty przycisku zasilania, które obejmują wielokrotne naciśnięcia przycisku zasilania. Takie aplikacje mogą zakłócać działanie dialera alarmowego lub użytkownik może przypadkowo nacisnąć przycisk paniki, próbując wywołać działania w tych aplikacjach.