В Android 11 добавлена поддержка 5G в приложениях. В этой статье мы расскажем о функциях, связанных с 5G, и о том, как они могут улучшить приложение.
Оптимизация для 5G
Решая, как использовать 5G, подумайте о том, какие возможности вы хотите создать. Вот несколько примеров того, как 5G может улучшить ваше приложение:
- Автоматически повышайте скорость и качество работы существующих функций благодаря улучшенной скорости и задержке 5G.
- Улучшайте пользовательский опыт, например показывайте видео в формате 4K или скачивайте игровые ресурсы в более высоком разрешении.
- Убедившись, что увеличенный объем трафика не приведет к дополнительным расходам, вы можете предложить пользователю функции, которые обычно доступны только при подключении по 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() вызывает зарегистрированный обратный вызов сразу после регистрации, предоставляя приложению информацию о текущем состоянии. Обратные вызовы Future критически важны для приложений, чтобы они могли предпринять соответствующие действия, когда состояние меняется с безлимитного на лимитное или наоборот.
Проверка лимитного подключения
Используйте объект NetworkCapabilites, который вы получаете в обратном вызове сети, чтобы проверить выходные данные следующего кода:
Kotlin
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)
Если значение равно 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 |
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.
Значения пропускной способности по умолчанию используются только при запуске приложения. Это должно помочь вам со сценарием "запуск в режиме ожидания". Приложение должно измерять то, что видит, как только пользователи начинают взаимодействовать с ним, и динамически корректировать поведение потоковой передачи. Например, вы можете выбрать разрешение видео на основе оценки пропускной способности при запуске. Продолжайте проверять оценки, пока пользователи работают с приложением. Если тип и качество подключения меняются, корректируйте поведение приложения.