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, Android zawiera referencyjne wdrożenie funkcji pomocy w sytuacji awaryjnej, która umożliwia użycie przycisku paniki na urządzeniach z Androidem.
Ta funkcja jest domyślnie włączona w Androidzie 8.0 i nowszych wersjach, ale musi zostać wdrożona w dotychczasowych wersjach. Ta funkcja jest przeznaczona wyłącznie do urządzeń sprzedawanych na rynku indyjskim, ale może być uwzględniona 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 implementowana w ramach projektu frameworks/base w ramach Projektu Android Open Source (AOSP). Jest ona dostępna w głównej gałęzi i domyślnie włączona w wersjach Androida 8.0 i nowszych.
Ta funkcja jest dostępna w tych gałęziach i komitach: Te informacje są udostępniane, aby umożliwić producentom urządzeń łatwe wdrożenie niezbędnych poprawek w dotychczasowych wersjach. Producenci urządzeń, którzy chcą zaimplementować referencyjną funkcję AOSP dotyczącą ułatwień dostępu w sytuacjach awaryjnych, mogą wybrać commity z odpowiednich gałęzi i włączyć je do własnych kompilacji.
Tabela 1. Wybrane funkcje AOSP dotyczące pomocy awaryjnej
Oddział | Zatwierdzenia |
---|---|
główny | e0c3c66
Dodano funkcję pomocy w sytuacji awaryjnej 42a4338 Dodano tłumaczenia dla ciągu znaków dotyczących działania w sytuacji alarmowej 4df8d64 Rozwiązano problem z wyświetlaniem funkcji pomocy w sytuacji alarmowej na tabletach |
nougat-dev | e6680d9
Dodano funkcję Emergency Affordance 95e1865 Dodano tłumaczenia dla ciągu znaków dotyczących działania w sytuacji alarmowej a70bb89 Naprawiono problem z wyświetlaniem funkcji Emergency Affordance na tabletach |
marshmallow-dev | cd22634
Dodano funkcję Emergency Affordance 13f51c6 Dodano tłumaczenia dla ciągu znaków dotyczących działania w sytuacji alarmowej 6531666 Rozwiązano problem z wyświetlaniem funkcji Emergency Affordance na tabletach |
lollipop-mr1-dev | 5fbc86b
Dodano funkcję Emergency Affordance 1b60879 Dodano tłumaczenia dla ciągu znaków akcji awaryjnej d74366f Rozwiązano problem z wyświetlaniem funkcji Emergency Affordance na tabletach |
Implementacja
Funkcja pomocy w sytuacji awaryjnej nie wprowadza żadnych zmian w interfejsach API udostępnianych przez pakiet SDK Androida. Po włączeniu i aktywowaniu funkcja ta udostępnia 2 wyzwalacze, które mogą zainicjować połączenie alarmowe na numer 112, który jest jedynym numerem alarmowym w Indiach i jest wymagany przez indyjskie przepisy DoT.
Połączenie alarmowe jest inicjowane w jeden z tych sposobów:
naciśnięcie i przytrzymanie przycisku WYPADEK AWARYJNY na ekranie blokady; |
kliknięcie opcji Alarm w menu globalnych działań. |
---|---|
![]() Rysunek 1. Przycisk ALARM na ekranie blokady. |
![]() Rysunek 2. Działanie alarmowe w menu globalnych czynności (otwarte przez długie naciśnięcie 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
Interfejs EmergencyAffordanceManager udostępnia wewnętrzny interfejs API do korzystania z funkcji EmergencyAffordance. Zawiera ona metody inicjowania połączeń alarmowych oraz wykonywania zapytań w czasie działania, jeśli funkcja ma być włączona.
void performEmergencyCall()
. Rozpoczyna 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
.
W efekcie funkcja needsEmergencyAffordance()
zawsze zwraca wartość „fałsz” i nie uruchamia funkcji EmergencyAffordanceService
.
EmergencyAffordanceService
EmergencyAffordanceService
to usługa systemowa, która monitoruje kod kraju komórkowego (MCC) wszystkich wykrytych sieci komórkowych oraz kod MCC zainstalowanych kart SIM. Jeśli dowolna z włożonych kart SIM lub wykryte sieci komórkowe mają kod MCC odpowiadający jednemu z kodów MCC Indii (404 lub 405), funkcja jest włączona. Oznacza to, że tę funkcję można włączyć w Indiach, nawet jeśli nie ma karty SIM. Zakładamy, że sieć komórkowa zezwala na rejestrację połączeń alarmowych nawet bez zainstalowanej karty SIM. Ta funkcja pozostaje włączona, dopóki nie zostanie zainstalowana karta SIM z innego kraju niż Indie i żadna z wykrytych sieci nie będzie miała dopasowanego kodu MCC.
Te zasoby i ustawienia wpływają na działanie funkcji Emergency Affordance. Jeśli typ konfiguracji to:
- Zasób – wewnętrzny zasób zdefiniowany w pliku
frameworks/base/core/res/res/values/config.xml
. - Ustawienie – ustawienie zapisane w ustawieniach dostawcy systemu.
Tabela 2. Ustawienia wpływające na działanie funkcji pomocy w sytuacji alarmowej
Typ konfiguracji | Nazwa | Opis |
---|---|---|
Zasób | config_emergency_call_number | Numer telefonu, który jest wybierany automatycznie po zainicjowaniu połączenia alarmowego. Typ: ciąg znaków Domyślnie: 112 |
Zasób | config_emergency_mcc_codes | Tablica liczb całkowitych z listą kont MCK, na których dana funkcja ma być aktywna. Typ: tablica liczb całkowitych Domyślnie: {404,405} |
Ustawienie | emergency_affordance_number | Zastąpienie globalnego ustawienia numerem, pod który ma być wykonane połączenie w ramach interfejsu awaryjnego. Ma to wpływ tylko na obrazy kompilacji umożliwiające debugowanie (czyli typ kompilacji to userdebug lub eng). Jest to przeznaczone tylko do testowania. Typ: ciąg znaków Domyślna wartość: nie ustawiona |
Ustawienie | force_emergency_affordance | Ustawienie globalne określające, czy funkcja Emergency Affordance powinna być wyświetlana niezależnie od stanu urządzenia. Jest to przeznaczone tylko do testowania. Typ: wartość logiczna (1 lub 0) Domyślnie: nie ustawione –> 0 |
Włączanie połączeń alarmowych na numer 112
Funkcja pomocy w sytuacji alarmowej łączy połączenie za pomocą wybierania numeru alarmowego, aby można było nawiązać połączenie, gdy aktywny jest ekran blokady. Dialer alarmowy łączy połączenia tylko z listą numerów udostępnionych przez interfejs RIL (Radio Interface Layer) za pomocą właściwości systemowej:
ril.ecclist
, gdy nie ma zainstalowanej karty SIM.ril.ecclistSimSlotNumber
, gdy włożona jest karta SIM, aSimSlotNumber
to identyfikator slotu domyślnego subskrybenta.
Producenci urządzeń korzystający z funkcji pomocy w sytuacji alarmowej muszą zadbać o to, aby na urządzeniach w Indiach zawsze był włączony numer alarmowy 112 w interfejsie RIL.
Weryfikacja
Podczas testowania na kompilacji z możliwością debugowania numer, na który jest wykonywane połączenie, można zmienić za pomocą tego polecenia:
adb shell settings put global emergency_affordance_number NUMBER_TO_CALL
To ustawienie można ustawić w zwykłej wersji użytkownika, ale jest ono ignorowane. Aby połączyć rozmowę, numer musi znajdować się na liście numerów alarmowych podanych przez RIL. Można to tymczasowo ustawić, wykonując to polecenie w powłoce root na urządzeniu z userdebug:
setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"
Poniższe polecenie może też służyć do wymuszenia włączenia funkcji pomocy w sytuacji awaryjnej nawet wtedy, gdy 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 scenariuszy:
- Po aktywacji długie naciśnięcie przycisku EMERGENCY na ekranie blokady (rysunek 1) inicjuje połączenie z podanym numerem alarmowym.
- Po włączeniu w menu globalnym akcji pojawi się opcja Alarm. Po jej kliknięciu zostanie nawiązane połączenie z numerem alarmowym.
- Funkcja nie jest aktywowana, jeśli nie wykryto sieci komórkowej w Indiach, a w urządzeniu jest zainstalowana karta SIM innego operatora.
- Ta funkcja jest włączona na urządzeniu, gdy w nim jest zainstalowana indyjska karta SIM, niezależnie od wykrytych sieci komórkowych.
- Funkcja jest włączona na urządzeniu, jeśli jest dostępne indyjskie połączenie komórkowe, niezależnie od zainstalowanych kart SIM.
Jeśli urządzenie obsługuje kilka kart SIM, należy przeprowadzić testy, aby sprawdzić, czy wykrywanie MCC karty SIM działa prawidłowo w każdym gnieździe SIM. Funkcja Emergency Affordance nie jest regulowana przez zgodność z Androidem, więc nie ma dla niej testów Compatibility Test Suite (CTS).
Najczęstsze pytania
Pytanie: Numer alarmowy 112 nie został jeszcze uruchomiony w Indiach. Czy nadal warto z niego korzystać?
112 to numer używany w Indiach jako centrum powiadamiania ratunkowego (PSAP) zgodnie z definicją w ramach zintegrowanych systemów komunikacji i reagowania w sytuacji zagrożenia (IECRS). Do czasu uruchomienia PSAP wszystkie połączenia na numer 112 są przekierowywane na istniejący numer alarmowy 100 (chociaż jest to odpowiedzialność operatora, a nie Androida).
Pytanie: A co z innymi uruchamianiem, takim jak trzykrotne naciśnięcie przycisku zasilania?
Producenci urządzeń mogą stosować dodatkowe reguły. Jednak chociaż indyjska DoT zatwierdza trzykrotne naciśnięcie przycisku zasilania, to nie jest ono obsługiwane w implementacji referencyjnej AOSP, ponieważ niektóre popularne aplikacje (np. Aparat) używają gestów przycisku zasilania, które obejmują wielokrotne naciśnięcie przycisku zasilania. Takie aplikacje mogą zakłócać działanie aplikacji do wybierania numerów alarmowych lub użytkownik może przypadkowo aktywować przycisk alarmowy podczas próby wywołania działań w tych aplikacjach.