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