在安卓系统中计算网络速度

17

我正在使用一个包含Web服务内容的应用程序。

在其中,当互联网速度较慢时,我需要知道状态。如何在Android中找到互联网速度水平?

例如,假设我在手机上使用2Mbps连接,当连接速度变慢到50Kbps时,我需要通过制作Toast或Alert来注意到这种情况。

谢谢。


这可能会有所帮助:https://dev59.com/3W855IYBdhLWcg3wSiM7 - Calvin
那么你找到了什么?我想要检查网络速度并根据情况设置图像或视频的URL。例如,如果网络速度在 50kbps - 150 kbps 之间,链接1;在 150kbps - 500kbps 之间,链接2;而在 >500kbps 时,链接3。那么如何实现这个功能呢? - Bhavin Patel
3个回答

12
如果您连接了 WiFi,您可以使用 WifiManager 查找连接速度: WifiManager
WifiInfo wifiInfo = wifiManger.getConnectionInfo();

然后你可以从WifiInfo中获取当前速度:

int speedMbps = wifiInfo.getLinkSpeed();

如果你在使用3G网络,我认为没有标准的方法可以找出这一点,也许你可以自动地假设3G是慢速的。


2
无论如何感谢你,但我仍在寻找互联网速度,不仅限于WiFi,还包括3G、2G。 - Dhamodharan
4
这个答案是错误的,因为你的网络速度是由你的互联网服务提供商决定的,而不是由你的WiFi适配器或路由器决定的。 - mittelmania
没有一个android库可以提供网络速度。 wifiInfo.getLinkSpeed只提供网络的最大速度,而且这个速度会一直变化。 - the_unknown_spirit
如果用户使用移动数据连接,那么如何找出互联网连接的速度?请告诉我是否有人找到了正确的解决方案? - Sanjay Bhalani
我想检查互联网速度并相应地设置图像或视频URL。例如,如果当前互联网速度在50kbps - 150 kbps之间,则链接到link1;如果在150kbps - 500kbps之间,则链接到link2;如果大于500kbps,则链接到link3。那么如何实现这一点呢? - Bhavin Patel

0

这是专门用于检测互联网连接速度的Facebook SDK

ConnectionQuality cq = ConnectionClassManager.getInstance().getCurrentBandwidthQuality();

1
它总是返回UNKNOWN。 - Ronak Gadhia
这总是返回未知。 - surya
它总是返回 null,因为在从网络桶中获取值之前没有进行网络采样,为了使其工作,您需要启动采样并从服务器下载一个虚拟图像,然后停止采样。之后,您可以从网络桶中获取值。 - Swapnil Kadam

0
这是获取连接到WiFi时互联网速度的代码。
WifiManager wifiManager = (WifiManager) 
    this.getSystemService(Context.WIFI_SERVICE);

List<ScanResult> wifiList = wifiManager.getScanResults();
for (ScanResult scanResult : wifiList) {
    int level = WifiManager.calculateSignalLevel(scanResult.level, 5);
    String net=String.valueOf(level);
   // Toast.makeText(MainActivity.this,net,Toast.LENGTH_LONG).show();

}

// Level of current connection.here rssi is the value of internet speed whose value
// can be -50,-60 and some others,you can find the speed values easily on internet.

int rssi = wifiManager.getConnectionInfo().getRssi();
int level = WifiManager.calculateSignalLevel(rssi, 5);
String net=String.valueOf(rssi);
Toast.makeText(MainActivity.this,net,Toast.LENGTH_LONG).show();

// -100 is the minimum speed value of your internet.
if(rssi < -100) {
    slowInternet=false;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接