Добавьте возможности 5G в свое приложение

В 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.

Настройки пропускной способности по умолчанию дают рекомендации только при запуске приложения. Это поможет вам в ситуации «запуска в режиме ожидания». Ваше приложение должно анализировать данные, получаемые с момента начала взаимодействия пользователей с приложением, и динамически корректировать поведение потоковой передачи. Например, вы можете выбрать разрешение видео на основе оценки пропускной способности при запуске. Продолжайте проверять оценки по мере использования приложения пользователями; по мере изменения типа и скорости их подключения корректируйте поведение приложения соответствующим образом.