4

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

4

4 回答 4

1

这也不是一个完整的答案,但对于 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 协商为最大速率的速率。许多因素都会影响您在网上冲浪时获得的实际速率(例如无线拥塞和冲突,上行链路速率)
于 2012-03-24T02:42:11.703 回答
1

TrafficStats将完成这项工作。您可以获取传输的字节数,然后可以计算速度。

于 2012-06-04T14:02:36.063 回答
0

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

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

于 2012-10-18T16:52:00.807 回答
-1

看看Zwitscher 的 NetworkHelper 类

基本上你需要获得ConnectivityManager

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

然后查询这个你想知道的

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

有关更多信息,请浏览上面的类以查看 和 的type含义subType

于 2011-04-15T07:57:36.543 回答