Реализация чрезвычайной финансовой возможности

Все мобильные устройства, продаваемые в Индии с 1 января 2017 года, должны иметь тревожную кнопку, чтобы соответствовать требованиям Министерства телекоммуникаций Индии (DoT). Чтобы удовлетворить эти нормативные требования, Android включает эталонную реализацию функции Emergency Affordance, позволяющую активировать тревожную кнопку на устройствах Android.

Эта функция включена по умолчанию в Android 8.0 и более поздних версиях, но ее необходимо внести в существующие сборки более ранних версий. В настоящее время эта функция предназначена исключительно для устройств, продаваемых на индийском рынке, но может быть включена на все устройства, продаваемые по всему миру, поскольку эта функция не действует за пределами Индии.

Примеры и источник

Функция Emergency Affordance реализована в рамках/базовом проекте Android Open Source Project (AOSP). Он доступен в основной ветке и включен по умолчанию в Android 8.0 и более поздних версиях.

Эта функция в настоящее время доступна в следующих ветках и коммитах. Эта информация предоставляется для того, чтобы производители устройств могли легко вносить необходимые изменения в существующие сборки. Производители устройств, желающие реализовать эталонную функцию экстренного доступа AOSP, могут выбирать коммиты из соответствующих ветвей в свои собственные сборки.

Таблица 1. Выбор базовой функции экстренной помощи AOSP

Ветвь фиксирует
основной e0c3c66 Добавлена ​​функция экстренной помощи.
42a4338 Добавлен перевод строки экстренного действия.
4df8d64 Исправлена ​​ошибка, из-за которой экстренная помощь отображалась на планшетах.
нуга-дев e6680d9 Добавлена ​​функция экстренной помощи.
95e1865 Добавлен перевод строки экстренного действия.
a70bb89 Исправлена ​​ошибка, из-за которой экстренная помощь отображалась на планшетах.
зефир-дев cd22634 Добавлена ​​функция экстренной помощи.
13f51c6 Добавлен перевод строки экстренного действия.
6531666 Исправлена ​​ошибка, из-за которой экстренная помощь отображалась на планшетах.
леденец-mr1-dev 5fbc86b Добавлена ​​функция экстренной помощи.
1b60879 Добавлен перевод строки экстренного действия.
d74366f Исправлена ​​ошибка, из-за которой экстренная помощь отображалась на планшетах.

Выполнение

Функция Emergency Affordance не вносит изменений в API, предоставляемые через Android Software Development Kit (SDK). При включении и активации эта функция предоставляет два триггера, которые могут инициировать экстренный вызов на номер 112, который является единственным номером службы экстренной помощи, который будет использоваться в Индии и предусмотрен правилами Министерства транспорта Индии.

Вызов службы экстренной помощи инициируется:

Длительное нажатие кнопки АВАРИЯ.
на экране блокировки
Нажатие на опцию «Экстренная помощь»
в меню глобальных действий
тревожная кнопка
Рисунок 1. Кнопка АВАРИЯ на экране блокировки.
аварийный вариант
Рисунок 2. Экстренное действие в меню глобальных действий (доступ к которому осуществляется путем длительного нажатия клавиши питания).

Эта функция представляет следующие внутренние компоненты:

  • EmergencyAffordanceManager
    frameworks/base/core/java/com/android/internal/policy/EmergencyAffordanceManager.java
    
  • EmergencyAffordanceService
    frameworks/base/services/core/java/com/android/server/emergency/EmergencyAffordanceService.java
    

Менеджер по чрезвычайным ситуациям

EmergencyAffordanceManager предоставляет внутренний API для использования функции Emergency Affordance. Он предоставляет методы для инициирования экстренного вызова и запроса во время выполнения, следует ли включить эту функцию.

  • void performEmergencyCall() . Инициирует экстренный вызов.
  • boolean needsEmergencyAffordance() . Определяет, должна ли функция быть активной.

Эту функцию можно навсегда отключить во время сборки, изменив константу EmergencyAffordanceManager.ENABLED на false . Это приведет к тому, что needsEmergencyAffordance() всегда будет возвращать значение false и предотвратит запуск EmergencyAffordanceService .

Чрезвычайная ситуацияДоступностьСервис

EmergencyAffordanceService — это системная служба, которая отслеживает мобильный код страны (MCC) всех обнаруженных сотовых сетей и MCC установленных SIM-карт. Если какая-либо из установленных SIM-карт или обнаруженных сотовых сетей имеет MCC, соответствующий одному из MCC Индии (404 или 405), эта функция будет включена. Это означает, что эту функцию можно включить в Индии, даже если SIM-карта отсутствует. Предполагается, что мобильная сеть позволит регистрироваться для экстренных вызовов даже без установленной SIM-карты. Эта функция будет оставаться включенной до тех пор, пока не будет установлена ​​неиндийская SIM-карта и ни в одной из обнаруженных сетей не будет соответствующего MCC.

Следующие ресурсы и настройки влияют на поведение функции Emergency Affordance. Если тип конфигурации:

  • Resource — это внутренний ресурс, определенный в frameworks/base/core/res/res/values/config.xml .
  • Настройка — это настройка, хранящаяся в поставщике системных настроек.

Таблица 2. Настройки, влияющие на поведение функции экстренного доступа

Тип конфигурации Имя Описание
Ресурс config_emergency_call_number Номер телефона, который автоматически набирается при инициировании экстренного вызова.
Тип: Строка
По умолчанию: 112
Ресурс config_emergency_mcc_codes Массив целых чисел, в котором перечислены центры клиентов, в которых функция должна быть активна.
Тип: Массив целых чисел
По умолчанию: {404,405}
Параметр Emergency_affordance_number Глобальная настройка переопределяет номер, на который можно позвонить с возможностью экстренной помощи. Это повлияет только на образы отлаживаемых сборок (т. е. тип сборки — userdebug или eng). Это предназначено только для тестирования.
Тип: Строка
По умолчанию: не установлено
Параметр Force_emergency_affordance Глобальная настройка: следует ли отображать возможность экстренной помощи независимо от состояния устройства. Это предназначено только для тестирования.
Тип: логический (1 или 0).
По умолчанию: не установлено --> 0.

Включить экстренные вызовы на номер 112

Функция экстренной доступности соединяет вызов с помощью экстренного набора номера, чтобы вызов можно было подключить, когда экран блокировки активен. Программа экстренного набора номера соединяет вызовы только со списком номеров, предоставленным уровнем радиоинтерфейса (RIL) через системное свойство:

  • ril.ecclist , когда SIM-карта не установлена.
  • ril.ecclist SimSlotNumber , когда SIM-карта вставлена, а SimSlotNumber — это идентификатор слота абонента по умолчанию.

Производители устройств, использующие функцию экстренной помощи, должны гарантировать, что устройства в Индии всегда включают 112 в качестве номера службы экстренной помощи в RIL.

Проверка

При тестировании отлаживаемой сборки вызываемый номер можно изменить с помощью следующей команды:

adb shell settings put global emergency_affordance_number NUMBER_TO_CALL

Хотя этот параметр можно установить в обычной пользовательской сборке, он будет игнорироваться. Для фактического подключения вызова номер должен находиться в списке номеров службы экстренной помощи, предоставленном RIL. Это можно временно установить с помощью следующей команды, выполняемой из корневой оболочки на устройстве userdebug:

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

Следующую команду также можно использовать для принудительного включения функции Emergency Affordance даже при отсутствии обнаружения индийской мобильной сети или вставленной индийской SIM-карты.

adb shell settings put global force_emergency_affordance 1

Как минимум рекомендуется протестировать следующие случаи:

  • После активации длительное нажатие кнопки EMERGENCY на экране блокировки (рис. 1) инициирует вызов на указанный номер службы экстренной помощи.
  • После активации пункт «Экстренная помощь» в глобальном меню действий присутствует, и нажатие на него инициирует вызов на указанный номер службы экстренной помощи.
  • Эта функция не активируется при отсутствии обнаруженной индийской мобильной сети с установленной SIM-картой неиндийского производства.
  • Функция активируется на устройстве при установке индийской SIM-карты независимо от обнаруженных мобильных сетей.
  • Функция активируется на устройстве при наличии индийской мобильной сети, независимо от установленных SIM-карт.

Если устройство поддерживает несколько SIM-карт, тестирование должно гарантировать, что обнаружение SIM MCC работает правильно в каждом слоте для SIM-карты. Функция Emergency Affordance не регулируется совместимостью Android, поэтому для нее не существует тестов совместимости (CTS).

Часто задаваемые вопросы

Вопрос. Номер службы экстренной помощи 112 еще не введен в эксплуатацию в Индии. Стоит ли его еще использовать?

112 — это номер, который будет использоваться в Индии в качестве пункта ответа общественной безопасности (PSAP), как это определено Интегрированной системой связи и реагирования на чрезвычайные ситуации (IECRS). Пока PSAP не будет введен в эксплуатацию, все звонки на номер 112 будут перенаправляться на существующий номер службы экстренной помощи 100 (хотя это ответственность оператора связи, а не Android).

Вопрос. А как насчет других триггеров, таких как тройное нажатие кнопки питания?

Производители устройств могут реализовать дополнительные триггеры. Однако, хотя Министерство транспорта Индии одобряет тройное нажатие аппаратной кнопки питания, этот триггер не поддерживается в эталонной реализации AOSP, поскольку некоторые широко используемые приложения (например, приложение «Камера») используют жесты кнопки питания, которые включают многократное нажатие кнопки питания. Такие приложения могут мешать работе службы экстренной помощи, или пользователь может случайно нажать тревожную кнопку, пытаясь вызвать действия в этих приложениях.