Внедрение чрезвычайных возможностей

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

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

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

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

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

Таблица 1. Основные характеристики эталонной функции доступности в чрезвычайных ситуациях AOSP

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

Реализация

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

Экстренный вызов инициируется:

Длительное нажатие кнопки EMERGENCY
на экране блокировки
Нажатие на опцию « Экстренная ситуация »
в меню глобальных действий
тревожная кнопка
Рисунок 1. Кнопка EMERGENCY на экране блокировки.
аварийный вариант
Рис. 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

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-карта не из Индии и ни в одной из обнаруженных сетей нет соответствующего Центра клиентов.

Следующие ресурсы и настройки влияют на работу функции 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. Это можно временно установить с помощью следующей команды, выполняемой из корневой оболочки на устройстве пользовательской отладки:

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, поэтому для нее нет тестов Compatibility Test Suite (CTS).

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

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

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

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

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