В Android 11 добавлена поддержка 5G в ваших приложениях. В этой статье рассматривается эта функциональность и дается обзор того, как добавление специфических для 5G функций в ваше приложение может улучшить пользовательский опыт.
Создано для 5G
Принимая решение о том, как взаимодействовать с 5G, подумайте о том, какие типы пользовательского опыта вы хотите создать. Вот несколько способов, которыми 5G может улучшить ваше приложение:
- Благодаря улучшению скорости и снижению задержки, обеспечиваемым технологией 5G, ваши текущие задачи автоматически станут быстрее и качественнее.
- Улучшите пользовательский опыт, например, за счет показа видео в разрешении 4K или загрузки игровых ресурсов с более высоким разрешением.
- После подтверждения того, что увеличение потребления данных не повлечет за собой дополнительных расходов для пользователя, включите в функционал функции, обычно доступные только через Wi-Fi, например, возможность предварительной загрузки контента, обычно предназначенного для безлимитного Wi-Fi.
- Обеспечьте уникальные возможности 5G, работающие только на высоких скоростях и с низкой задержкой.
Функциональность 5G
В Android 11 представлены следующие функциональные изменения и улучшения:
Проверьте показания счетчика.
Функция NET_CAPABILITY_TEMPORARILY_NOT_METERED добавленная в Android 11, позволяет узнать, является ли используемая вами сеть безлимитной, на основе информации, предоставляемой сотовыми операторами.
Новый флаг используется вместе с NET_CAPABILITY_NOT_METERED . Существующий флаг указывает, является ли сеть всегда безлимитной, и применяется как к Wi-Fi, так и к сотовым соединениям.
Разница между двумя флагами заключается в том, что NET_CAPABILITY_TEMPORARILY_NOT_METERED может изменяться без изменения типа сети. Приложения, ориентированные на Android 11, могут использовать флаг NET_CAPABILITY_TEMPORARILY_NOT_METERED . На устройствах под управлением Android 9 и ниже операционная система не будет сообщать об этом флаге. Для приложений, работающих на Android 10, этот флаг может быть доступен в зависимости от устройства, на котором он запущен.
После того, как вы определите, что текущая сеть временно или постоянно не тарифицируется, вы сможете отображать контент с более высоким разрешением (например, видео 4K), загружать журналы, создавать резервные копии файлов и заблаговременно загружать контент.
В следующих разделах описаны шаги по добавлению проверки учета потребления ресурсов в ваше приложение.
Зарегистрируйте сетевой обратный вызов
Зарегистрируйте сетевой обратный вызов с помощью ConnectivityManager.registerDefaultNetworkCallback() чтобы получать уведомления об изменениях NetworkCapabilities . Вы можете отслеживать изменения NetworkCapabilities , переопределив метод onCapabilitiesChanged() в вашем NetworkCallback .
registerDefaultNetworkCallback() заставляет зарегистрированный коллбэк срабатывать немедленно после регистрации, предоставляя приложению информацию о текущем состоянии. Последующие коллбэки критически важны для того, чтобы приложения могли предпринять соответствующие действия при изменении состояния с безлимитного на лимитированное или наоборот.
Проверьте наличие счетчика.
Используйте объект NetworkCapabilites , полученный в сетевом обработчике обратного вызова, чтобы проверить вывод следующего кода:
Котлин
NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) || NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)
Java
NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) || NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)
Если значение истинно, то сеть можно рассматривать как нетарифицируемую.
Дополнительные соображения
При работе с этим функционалом следует учитывать следующее:
Для использования флага
NET_CAPABILITY_TEMPORARILY_NOT_METEREDнеобходимо скомпилировать приложение с использованием SDK Android 11.Возможность
NET_CAPABILITY_NOT_METEREDявляется постоянной для сети. Сеть с этой возможностью автоматически отключится, если потеряет её (станет работать по тарификации).В отличие от этого,
NET_CAPABILITY_TEMPORARILY_NOT_METEREDможет изменяться в сети без отключения . Поэтому приложениям необходимо отслеживать вызов функции обратного вызоваonCapabilitiesChanged(), чтобы обрабатывать ситуацию, когда сеть возвращается в режим лимитированного использования (теряет возможностьNET_CAPABILITY_TEMPORARILY_NOT_METERED).Сеть не может одновременно иметь значения
NET_CAPABILITY_NOT_METEREDиNET_CAPABILITY_TEMPORARILY_NOT_METERED.
обнаружение 5G
Начиная с Android 11, вы можете определить, подключено ли устройство к сети 5G, используя вызов API на основе обратного вызова. Вы можете проверить, является ли соединение сетью 5G NR (автономная) или NSA (неавтономная).
Этот вызов API может использоваться, например, в следующих случаях:
Отображение фирменной символики 5G в вашем приложении подчеркнет, что вы предлагаете уникальный опыт использования 5G.
Уникальная функция 5G активируется в приложении только при подключении к сети 5G. Рекомендуется совмещать эту проверку с проверкой лимита трафика .
Отслеживание подключений 5G в аналитических целях.
Для проверки обнаружения 5G без устройства с поддержкой 5G можно использовать функции, добавленные в эмулятор Android SDK .
Обнаружение 5G
Вызовите TelephonyManager.listen() , передав в качестве параметра LISTEN_DISPLAY_INFO_CHANGED , чтобы определить, подключен ли пользователь к сети 5G. Переопределите метод onDisplayInfoChanged() , чтобы определить тип сети, используемый для отображения. Исключением является случай, когда оператор связи выбирает отображение 5G в качестве RAT для своей сети mmWave; в этом случае возвращается OVERRIDE_NETWORK_TYPE_NR_NSA .
В следующей таблице показаны сети, соответствующие этим значениям:
| Тип возвращаемого значения | Сеть |
|---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO | Advanced Pro LTE (5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA | NR (5G) для сетей 5G Sub-6 |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE | (5G+/5G UW) для сетей 5G mmWave |
Оценка пропускной способности
Для оценки пропускной способности используется объект NetworkCapabilities , с которым вы работаете при определении уровня потребления. Вы можете получить оценки пропускной способности, используя этот объект.
Надежность и точность методов оценки пропускной способности getLinkDownstreamBandwidthKbps() и getLinkUpstreamBandwidthKbps() в Android 11 улучшены благодаря обновлению поддержки фреймворка и исправлению ошибок платформы/модема для обеспечения работы 5G.
Настройки пропускной способности по умолчанию предоставляют рекомендации только при запуске приложения. Это должно помочь вам в сценарии «запуска в режиме ожидания». Ваше приложение должно измерять то, что оно видит, когда пользователи начинают взаимодействовать с приложением, и динамически корректировать свое поведение при потоковой передаче. Например, вы можете выбрать разрешение видео, которое будет предоставляться, на основе оценки пропускной способности при запуске. Продолжайте проверять оценки по мере того, как ваши пользователи используют приложение; по мере изменения типа и мощности их соединения, корректируйте поведение вашего приложения соответствующим образом.