Определение типа сети Android и оценка скорости соединения

Мне нужно определить текущий тип сети и на основе чего я могу предположить возможную скорость

На основе этого определите, является ли соединение Wi-Fi, 3G или EDGE в андроиде?

Я уже могу определять скорость с помощью функций getSubtype() для 3G/2G.

А для WIFI и BLUETOOTH?

Я могу обнаружить Bluetooth/WIFI с помощью ConnectivityManager.TYPE_BLUETOOTH и ConnectivityManager.TYPE_WIFI

Но можно ли определить возможную скорость с помощью Bluetooth и WIFI, если он обеспечивает источник Интернета?

Может быть, используя силу сигнала?


person Dickens A S    schedule 20.07.2015    source источник
comment
Я не уверен, что для WIFI и BLUETOOTH есть подтип(), который можно использовать для определения скорости.   -  person Dickens A S    schedule 20.07.2015
comment
Я думаю, вы правы, мой ответ будет работать только для мобильных устройств: if info.getType() == ConnectivityManager.TYPE_MOBILE   -  person Philipp E    schedule 20.07.2015


Ответы (1)


Это будет работать для мобильного подключения (info.getType() == ConnectivityManager.TYPE_MOBILE)

ConnectivityManager cm = (ConnectivityManager) mContext
    .getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
Integer subType = info.getSubtype();

switch (subType) {
  case TelephonyManager.NETWORK_TYPE_1xRTT:
    return "50-100 kbps";
  case TelephonyManager.NETWORK_TYPE_CDMA:
    return "14-64 kbps";
  case TelephonyManager.NETWORK_TYPE_UMTS:
    return "400-7000 kbps";      

NETWORK_TYPE_1xRTT = ~ 50-100 kbps
NETWORK_TYPE_CDMA = ~ 14-64 kbps
NETWORK_TYPE_EDGE = ~ 50-100 kbps
NETWORK_TYPE_EVDO_0 = ~ 400-1000 kbps
NETWORK_TYPE_EVDO_A = ~ 600-1400 kbps
NETWORK_TYPE_GPRS = ~ 100 kbps
NETWORK_TYPE_HSDPA = ~ 2-14 Mbps
NETWORK_TYPE_HSPA = ~ 700-1700 kbps
NETWORK_TYPE_HSUPA = ~ 1-23 Mbps
NETWORK_TYPE_UMTS = ~ 400-7000 kbps
NETWORK_TYPE_EHRPD = ~ 1-2 Mbps
NETWORK_TYPE_EVDO_B = ~ 5 Mbps
NETWORK_TYPE_HSPAP = ~ 10-20 Mbps
NETWORK_TYPE_IDEN = ~ 25 kbps
NETWORK_TYPE_LTE = ~ 10+ Mbps
person Philipp E    schedule 20.07.2015
comment
подходит ли getSubtype для WIFI и BLUETOOTH? - person Dickens A S; 20.07.2015
comment
Возвращает целое число, зависящее от типа сети, описывающее подтип сети. -> Я так думаю. - person Philipp E; 20.07.2015
comment
Если getSubType() применим для BLUETOOTH/WIFI.... EDGE, CDMA, GPRS, UMTS применимы? или он имеет другое значение? - person Dickens A S; 20.07.2015