Все мобильные устройства, продаваемые в Индии с 1 января 2017 года, должны быть оснащены тревожной кнопкой в соответствии с требованиями Департамента телекоммуникаций Индии (DoT). Для выполнения этих нормативных требований в Android реализована референсная реализация функции Emergency Affordance, которая позволяет использовать тревожную кнопку на устройствах Android.
Эта функция включена по умолчанию в Android 8.0 и более поздних версиях, но её необходимо обновить в существующих сборках более ранних версий. Эта функция предназначена исключительно для устройств, продаваемых на индийском рынке, но может быть включена на всех устройствах, продаваемых по всему миру, поскольку она не действует за пределами Индии.
Примеры и источники
Функция Emergency Affordance реализована в проекте фреймворков/базы Android Open Source Project (AOSP). Она доступна в последней версии Android и включена по умолчанию в Android 8.0 и более поздних версиях.
Эта функция доступна в следующих ветках и коммитах. Эта информация предоставлена для того, чтобы производители устройств могли внести необходимые изменения в свои текущие сборки. Производители устройств, желающие реализовать функцию Emergency Affordance, предусмотренную AOSP, могут выборочно добавлять коммиты из соответствующих веток в свои сборки.
Таблица 1. Выборочные параметры для функции Emergency Affordance ссылки AOSP
| Ветвь | Совершает |
|---|---|
| android-latest-release | e0c3c66 Добавлена функция экстренной помощи 42a4338 Добавлены переводы для строки экстренного действия 4df8d64 Исправлена ошибка, из-за которой функция «Экстренная помощь» отображалась на планшетах. |
| нуга-dev | e6680d9 Добавлена функция экстренной помощи 95e1865 Добавлены переводы для строки экстренного действия. a70bb89 Исправлена ошибка, из-за которой функция «Экстренное предоставление» отображалась на планшетах. |
| зефир-dev | cd22634 Добавлена функция экстренной помощи 13f51c6 Добавлены переводы для строки экстренного действия. 6531666 Исправлена ошибка, из-за которой функция «Экстренная помощь» отображалась на планшетах. |
| lollipop-mr1-dev | 5fbc86b Добавлена функция экстренной помощи 1b60879 Добавлены переводы для строки экстренного действия d74366f Исправлена ошибка, из-за которой функция «Экстренная помощь» отображалась на планшетах. |
Выполнение
Функция «Экстренная помощь» не вносит изменений в API, предоставляемые через Android Software Development Kit (SDK). При включении и активации функция предоставляет два триггера для экстренного вызова по номеру 112, который является единым номером экстренной помощи, используемым в Индии и предписанным Министерством транспорта Индии.
Экстренный вызов инициируется одним из следующих способов:
| Длительное нажатие кнопки «АВАРИЯ» на экране блокировки | Нажатие на опцию «Экстренный вызов» в меню глобальных действий |
|---|---|
![]() Рисунок 1. Кнопка «Экстренный вызов» на экране блокировки. | ![]() Рисунок 2. Экстренное действие в меню глобальных действий (доступ к которому осуществляется длительным нажатием клавиши питания). |
Эта функция представляет следующие внутренние компоненты:
-
EmergencyAffordanceManagerframeworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java EmergencyAffordanceServiceframeworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
EmergencyAffordanceManager
EmergencyAffordanceManager предоставляет внутренний API для использования функции Emergency Affordance. Он предоставляет методы для инициирования экстренного вызова и запроса во время выполнения, следует ли включить эту функцию.
-
void performEmergencyCall(). Инициирует экстренный вызов. -
boolean needsEmergencyAffordance(). Определяет, должна ли функция быть активной.
Функцию можно отключить навсегда во время сборки, изменив константу EmergencyAffordanceManager.ENABLED на false . В результате функция needsEmergencyAffordance() всегда будет возвращать false и не позволит запустить EmergencyAffordanceService .
EmergencyAffordanceService
EmergencyAffordanceService — это системная служба, которая отслеживает код страны мобильной связи (MCC) всех обнаруженных сотовых сетей и MCC установленных SIM-карт. Если MCC какой-либо из установленных SIM-карт или обнаруженных сотовых сетей совпадает с одним из индийских MCC (404 или 405), то функция активируется. Это означает, что функцию можно включить в Индии даже без SIM-карты. Предполагается, что мобильная сеть разрешает регистрацию для экстренных вызовов даже без установленной SIM-карты. Функция остается включенной до тех пор, пока не будет установлена неиндийская SIM-карта, и ни одна из обнаруженных сетей не найдет совпадающий MCC.
Следующие ресурсы и настройки влияют на работу функции «Экстренная помощь». Если тип конфигурации:
- Ресурс: Внутренний ресурс, определенный в
frameworks/base/core/res/res/values/config.xml. - Настройка: настройка, хранящаяся у поставщика системных настроек.
Таблица 2. Настройки, влияющие на поведение функции Emergency Affordance
| Тип конфигурации | Имя | Описание |
|---|---|---|
| Ресурс | config_emergency_call_number | Номер телефона, который автоматически набирается при инициировании экстренного вызова. Тип: строка По умолчанию: 112 |
| Ресурс | config_emergency_mcc_codes | Массив целых чисел, в котором перечислены MCC, в которых функция должна быть активна. Тип: Массив целых чисел По умолчанию: {404,405} |
| Параметр | номер_экстренной_помощи | Переопределение глобальных настроек с указанием номера для экстренного вызова. Это влияет только на отлаживаемые образы сборки (то есть, на сборки типа userdebug или eng). Предназначено только для тестирования. Тип: строка По умолчанию: не установлено |
| Параметр | force_emergency_affordance | Глобальная настройка, указывающая, должна ли функция «Экстренная возможность» отображаться независимо от состояния устройства. Эта настройка предназначена только для тестирования. Тип: Логический (1 или 0) По умолчанию: не установлено --> 0 |
Включить экстренные вызовы на номер 112
Функция «Экстренный доступ» (Emergency Affordance) подключает вызов с помощью функции экстренного набора, чтобы его можно было подключить даже при активном экране блокировки. Функция экстренного набора соединяет вызовы только со списком номеров, предоставленным радиоинтерфейсом (RIL) через системное свойство:
-
ril.ecclist, если SIM-карта не установлена. -
ril.ecclist SimSlotNumber, когда вставлена SIM-карта, аSimSlotNumber— это идентификатор слота абонента по умолчанию.
Производители устройств, использующих функцию Emergency Affordance, должны убедиться, что в их устройствах в Индии всегда включен номер 112 в качестве номера экстренной помощи в RIL.
Проверка
При тестировании отлаживаемой сборки вызываемый номер можно изменить с помощью следующей команды:
adb shell settings put global emergency_affordance_number NUMBER_TO_CALL
Хотя этот параметр можно настроить в сборке обычного пользователя, он игнорируется. Для фактического соединения номер должен быть в списке номеров экстренных служб, предоставляемом RIL. Временно настроить его можно с помощью следующей команды, выполненной из командной оболочки root на устройстве userdebug:
setprop ril.ecclist "$(getprop ril.ecclist),NUMBER_TO_CALL"
Следующую команду также можно использовать для принудительного включения функции Emergency Affordance даже при отсутствии обнаружения индийской мобильной сети или вставки индийской SIM-карты.
adb shell settings put global force_emergency_affordance 1
Как минимум рекомендуется проверить следующие случаи:
- При активации длительное нажатие кнопки «ЭКСТРЕННЫЙ ВЫЗОВ» на экране блокировки (рис. 1) инициирует вызов указанного номера экстренной службы.
- При активации пункт «Экстренная помощь» в меню глобальных действий становится активным, и его нажатие инициирует вызов указанного номера экстренной службы.
- Функция не активируется при отсутствии обнаруженной индийской мобильной сети с установленной неиндийской SIM-картой.
- Функция активируется на устройстве при установке индийской SIM-карты, независимо от обнаруженных мобильных сетей.
- Функция активируется на устройстве при наличии индийской мобильной сети, независимо от установленных SIM-карт.
Если устройство поддерживает несколько SIM-карт, тестирование должно подтвердить корректность определения MCC SIM-карты в каждом слоте. Функция Emergency Affordance не регулируется тестами Android Compatibility Suite (CTS), поэтому для неё нет тестов CTS.
Часто задаваемые вопросы
В. Номер экстренной службы 112 в Индии пока не введён. Стоит ли его использовать?
112 — это номер, используемый в Индии в качестве пункта экстренной связи (PSAP), согласно Интегрированной системе экстренной связи и реагирования (IECRS). До ввода в эксплуатацию PSAP все звонки на номер 112 будут перенаправляться на существующий номер экстренной помощи 100 (хотя это ответственность оператора, а не Android).
В. А как насчет других триггеров, например, тройного нажатия кнопки питания?
Производители устройств могут реализовывать дополнительные триггеры. Однако, хотя Министерство транспорта Индии (DoT) одобряет тройное нажатие аппаратной кнопки питания, этот триггер не поддерживается в эталонной реализации AOSP, поскольку некоторые широко используемые приложения (например, приложение «Камера») используют жесты кнопки питания, включающие многократное нажатие. Такие приложения могут мешать работе экстренного вызова, или пользователь может случайно нажать кнопку тревоги, пытаясь выполнить какие-либо действия в этих приложениях.

