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 |
|---|---|
Rysunek 1. Przycisk ALARM na ekranie blokady. |
Rysunek 2. Działanie alarmowe w menu czynności globalnych (dostępnym po przytrzymaniu przycisku zasilania). |
Ta funkcja wprowadza te komponenty wewnętrzne:
EmergencyAffordanceManagerframeworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.javaEmergencyAffordanceServiceframeworks/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, aSimSlotNumberto 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.