В 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)
Ява
NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) || NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)
Если значение равно true, то сеть можно считать безлимитной.
Дополнительные соображения
При работе с этой функцией помните следующее:
Использование флага
NET_CAPABILITY_TEMPORARILY_NOT_METERED
требует, чтобы ваше приложение было скомпилировано с использованием Android 11 SDK.Возможность
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 | Расширенный профессиональный 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.
Настройки пропускной способности по умолчанию дают рекомендации только при запуске приложения. Это поможет вам в ситуации «запуска в режиме ожидания». Ваше приложение должно анализировать данные, получаемые с момента начала взаимодействия пользователей с приложением, и динамически корректировать поведение потоковой передачи. Например, вы можете выбрать разрешение видео на основе оценки пропускной способности при запуске. Продолжайте проверять оценки по мере использования приложения пользователями; по мере изменения типа и скорости их подключения корректируйте поведение приложения соответствующим образом.