Требуется минимум API: 21.Я использую ConnectivityManager
в сочетании с NetworkCapabilities
, чтобы получить пропускную способность как в нисходящем, так и в восходящем направлении.Работает просто отлично.Вы можете решить, будет ли скорость 2G, 3G или 4G на основе скорости в кбит / с.
ConnectivityManager cm = (ConnectivityManager)this.getSystemService(CONNECTIVITY_SERVICE);
NetworkCapabilities nc = cm.getNetworkCapabilities(cm.getActiveNetwork());
var downSpeed = nc.getLinkDownstreamBandwidthKbps();
var upSpeed = nc.getLinkUpstreamBandwidthKbps();
- 2G GSM ~ 14,4 Кбит / с
- G GPRS ~ 26,8 Кбит / с
- E EDGE ~ 108,8 Кбит / с
- 3G UMTS ~ 128 Кбит / с
- H HSPA ~ 3,6 Мбит / с
- H + HSPA + ~ 14,4 Мбит / с-23,0 Мбит / с
- 4G LTE ~ 50 Мбит / с
- 4G LTE-A ~ 500 Мбит / с
Загрузка файла является чрезмерной разработкой решения, поскольку, в конце концов, вы не несете ответственности за подключение пользователей к Интернету- они есть (точнее их поставщик услуг)!Предоставление им информации на основе их текущего статуса более чем достаточно для большинства случаев использования.Это дает вам быстрый способ проверки текущей скорости соединения перед выполнением операций.