Добавьте возможности 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)

Если значение истинно, то сеть можно считать безлимитной.

Дополнительные соображения

При работе с этой функцией следует помнить следующее:

  • Для использования флага 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.

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