Устройства Android без баланса данных пропускают сетевой трафик, что требует от операторов связи и телекоммуникационных компаний внедрения протоколов для его устранения. В Android реализовано универсальное решение, позволяющее операторам связи и телекоммуникационным компаниям сообщать о том, что баланс устройства исчерпан.
Платформа Android предоставляет операторское приложение по умолчанию с заданным поведением для снижения трафика на основе сигнала обнаружения портала авторизации. Кроме того, операторы связи и OEM-производители могут гибко и недорого настраивать это поведение.
Примеры и источники
Приложение-оператор по умолчанию находится по адресу platform/frameworks/base/packages/CarrierDefaultApp/ .
Выполнение
Приложение оператора связи по умолчанию настроено для обеспечения наилучшего взаимодействия с ненастроенными операторами связи. Операторы связи могут использовать это поведение по умолчанию. Они также могут переопределить поведение по умолчанию, добавив сопоставления сигналов и действий в XML-файл конфигурации оператора связи. Они могут отказаться от использования приложения по умолчанию и вместо этого использовать привилегии UICC в своем собственном автономном приложении оператора связи.
Введение в реализацию
Сигналы
Платформа Android поддерживает настройку действий для следующих параметризованных сигналов:
-
TelephonyIntents.ACTION_CARRIER_SIGNAL_REDIRECTED
-
TelephonyIntents.ACTION_CARRIER_SIGNAL_REQUEST_NETWORK_FAILED
Эти сигналы находятся в frameworks/base/telephony/java/com/android/internal/telephony/TelephonyIntents.java
.
Поддерживаемые действия
Приложение оператора связи по умолчанию определяет набор поддерживаемых действий, которые можно сопоставить с поддерживаемыми сигналами. Они определены в файле CarrierActionUtils.java
:
public static final int CARRIER_ACTION_ENABLE_METERED_APNS = 0; public static final int CARRIER_ACTION_DISABLE_METERED_APNS = 1; public static final int CARRIER_ACTION_DISABLE_RADIO = 2; public static final int CARRIER_ACTION_ENABLE_RADIO = 3; public static final int CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION = 4; public static final int CARRIER_ACTION_SHOW_NO_DATA_SERVICE_NOTIFICATION = 5; public static final int CARRIER_ACTION_CANCEL_ALL_NOTIFICATIONS = 6;
Примечание: Если оператор реализует собственное автономное приложение, он может реализовать поддержку сигналов, отличных от упомянутых в этом разделе. Он также может определять и настраивать собственные действия.
Сопоставления сигналов и действий по умолчанию
Настройте действия по умолчанию, выполнив следующий процесс:
- Определите ключ для поддерживаемых сигналов.
Сопоставления сигналов и действий по умолчанию определены в
CarrierConfigManager.java
. Каждый из поддерживаемых сигналов имеет ключ:public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY = "carrier_default_actions_on_redirection_string_array"; public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_DCFAILURE_STRING_ARRAY = "carrier_default_actions_on_dcfailure_string_array";
- Свяжите действия по умолчанию с сигнальными клавишами.
Идентификаторы действий по умолчанию связаны с ключами сигналов:
sDefaults.putStringArray(KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY, new String[]{ "1, 4" //1: CARRIER_ACTION_SHOW_PORTAL_NOTIFICATION // 4: CARRIER_ACTION_DISABLE_METERED_APNS });
Структура телефонии сопоставляет эти действия с соответствующими сигналами.
Переопределить действия по умолчанию
Вы можете определить пользовательские действия для поддерживаемых сигналов в XML-файле конфигурации оператора, связав идентификаторы действий с ключами сигналов (определёнными в CarrierConfigManager.java
). Например, следующее сопоставление отключает тарифицируемые APN и отображает уведомление портала при перенаправлении:
<string-array name="carrier_default_actions_on_redirection_string_array" num="2"> <item value="1" /> <item value="4" /> </string-array>
Инфраструктура телефонии загружает эти конфигурации и переопределяет действия по умолчанию.
Проверка
Для этой функции не существует тестов CTS, CTS Verifier или GTS.
Используйте эти ручные проверочные тесты для проверки функции:
- Проверить уведомление о дисбалансе сигнала на устройстве телекоммуникационной компании.
- Проверьте регулирование перенаправления трафика в состоянии дисбаланса и отключенного Wi-Fi.
- Убедитесь, что сетевой трафик отключен и в состоянии дисбаланса появляется пользовательский интерфейс уведомлений.
- Проверка функции голосового вызова/VoLTE в состоянии дисбаланса.
- Убедитесь, что видеозвонки заблокированы в состоянии дисбаланса.
- При включенном Wi-Fi убедитесь, что пользователь может продолжать просмотр веб-страниц, а трафик браузера не включает сетевой трафик в состоянии дисбаланса.
- Проверьте функции Wi-Fi, WFC и Bluetooth в состоянии разбалансировки.
- Отключите Wi-Fi. Проверьте интерфейс уведомления о дисбалансе и убедитесь, что обычный трафик браузера не перенаправляется на сайт регистрации оператора связи. Убедитесь, что при нажатии на ссылку в интерфейсе уведомления браузер переходит на сайт регистрации оператора связи.
- Убедитесь, что переключение в режим полета не сбрасывает состояние регулирования трафика.
- Убедитесь, что замена работающей SIM-карты сбрасывает состояние сетевого трафика.
- Убедитесь, что повторная установка несбалансированной SIM-карты перезапускает перенаправление трафика и снова обеспечивает регулирование сетевого трафика.
- Убедитесь, что перезагрузка телефона повторно активирует перенаправление и возвращает в действие пользовательский интерфейс управления трафиком и уведомлений.
- Нажмите на уведомление «captiveportal». Убедитесь, что установлено ограниченное сетевое соединение, чтобы пользователь мог добавлять кредиты.
- Убедитесь, что пополнение баланса SIM-карты или повторная активация приводят к восстановлению трафика сотовой сети, а также к исчезновению уведомления о связи с телекоммуникационной компанией и отсутствии баланса.
- Проверка работоспособности после восстановления службы данных.
Приложение по умолчанию предоставляет несколько примеров модульных тестов и скрипт для их запуска (см. tests/runtest.sh
). При реализации модифицированной версии или поведения необходимо реализовать эти настройки в виде отдельных модульных тестов.