Android网络类型检测和评估连接速度

标签 android bluetooth wifi 3g

我需要检测当前的网络类型,并据此假设可能的速度

基于此Detect if connection is wifi, 3G or EDGE in android?

我已经能够使用 3G/2G 的 getSubtype() 函数检测速度

但对于 WIFI 和蓝牙?

我可以使用 ConnectivityManager.TYPE_BLUETOOTHConnectivityManager.TYPE_WIFI 检测蓝牙/WIFI

但如果蓝牙和 WIFI 提供互联网资源,是否有可能检测到可能的速度?

可能正在使用信号强度?

最佳答案

这将适用于移动连接 (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

关于Android网络类型检测和评估连接速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31518992/

相关文章:

java - 如何获取所有的Drawable资源?

android - 将设备地址发送到android-bluetooth中的ConnectThread(BluetoothDevice设备)

android - 如何通过 WIFI 与其他设备共享一个 android 设备的屏幕?

ios - 强制 Wifi 弹出窗口 : Click a link to open Safari

ios - NEHotspotConfigurationManager 没有密码/SSID 无效的错误

java - Glide 不从 url 加载图像

android - ffmpeg for android avformat_open_input = qsub_0_in_QPR_VFP2

android - 如何使用 BroadcastReceiver 处理多个 Action ?

java - 读取蓝牙设备时出现空指针异常

android - 获取通过蓝牙共享的文件名