如何在android中找到GPRS/3G网络的数据传输速度



在我的应用程序中,我需要找到连接网络的速度(wifi/GPRS/3G)。这里我需要帮助找到GPRS/3G网络的速度。你能帮我解决这个问题吗?

这也不是一个完整的答案,但是对于Wifi网络(不是蜂窝网络),您可以通过以下方式获得链接速率:

public String getLinkRate() 
{
    WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
    WifiInfo wi = wm.getConnectionInfo();
    return String.format("%d Mbps", wi.getLinkSpeed());
}

注意事项:

  1. 这需要android.permission.ACCESS_WIFI_STATE权限。
  2. 它将始终是802.11标准指定的速率之一(见这里的表)
  3. 仅是手机与AP协商的最大速率。很多因素都会影响你在网上冲浪时的实际速率(例如无线拥塞和碰撞,上游链路速率)

TrafficStats将完成这项工作。你可以得到字节传输,然后你可以计算速度。

也许可以弄清楚,该用户连接的是wifi, gprs或g3网络。然后你就可以计算出每种技术的速度有多快。您也可以将文件(例如3MB)放在快速连接服务器上。然后你可以下载那个文件并测量时间,它需要多长时间。然后计算一下…或者您可以在文件下载时每秒钟计算一次。

下载速度也可能因不同的条件而异。喜欢网络强度(展位无线和移动)。例如,如果用户连接到54mbit的wifi,接入点距离用户60米,那么下载速度甚至不会是它的一半。下面是计算下载速度的示例java如何在while循环下载期间计算Mbit/s

看看Zwitscher的NetworkHelper类

基本上你需要获得ConnectivityManager

cManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

,然后查询你想知道的

NetworkInfo info = cManager.getActiveNetworkInfo();
int type = info.getType();
int subType = info.getSubtype();

更多信息,浏览上面的类,查看typesubType的含义

最新更新