在我的应用程序中,我需要找到连接网络的速度(wifi/GPRS/3G)。在这里我需要帮助来确定 GPRS/3G 网络的速度。你能帮我解决这个问题吗?
问问题
5352 次
4 回答
1
这也不是一个完整的答案,但对于 Wifi 网络(不是蜂窝网络),您可以通过以下方式获得链接速率:
public String getLinkRate()
{
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiInfo wi = wm.getConnectionInfo();
return String.format("%d Mbps", wi.getLinkSpeed());
}
需要注意的几点:
- 这将需要
android.permission.ACCESS_WIFI_STATE
许可。 - 它始终是 802.11 标准指定的速率之一(请参见此处的表格)
- 它只是手机和 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
基本上你需要获得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 回答