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

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