Устройства 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 tests/runtest.sh
). Когда вы реализуете настроенную версию или поведение, вам следует отразить эти настройки в специальных модульных тестах.