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

时间:2011-04-15 07:50:26

标签: android gprs

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

4 个答案:

答案 0 :(得分: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标准规定的费率之一(请参阅table here
  3. 只有手机和AP协商的费率才是最高费率。许多因素会影响您在网上冲浪时所获得的实际费率(例如无线拥塞和冲突,上游链接速率)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

下载速度也可能因各种条件而异。像网络力量(展位无线和移动)。例如,如果用户连接到54mbit wifi并且接入点是60米形式的用户,那么下载速度甚至不会是其中的一半。 以下是下载速度计算java howto calculate Mbit/s during while loop download

的示例

答案 3 :(得分:-1)

查看Zwitscher's NetworkHelper class

基本上你需要获得ConnectivityManager

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

然后查询此内容以了解您想知道的内容

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

有关详情,请浏览上述课程,了解typesubType的含义。