gpt4 book ai didi

java - 确定网络连接带宽(速度) wifi 和移动数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:23 26 4
gpt4 key购买 nike

我想获得以 kbps 或 mbps 为单位的网络连接带宽。如果设备连接到 wifi,那么它应该返回网络带宽(速度)以及移动数据。

它将返回 wifi 容量速率,但我想要准确的数据传输速率。

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

最佳答案

您不能只查询此信息。您的互联网速度由您的 ISP 决定和控制,而不是由您的网络接口(interface)或路由器决定和控制。

因此,获得(当前)连接速度的唯一方法是从足够近的位置下载文件并计算检索文件所需的时间。例如:

static final String FILE_URL = "http://www.example.com/speedtest/file.bin";
static final long FILE_SIZE = 5 * 1024 * 8; // 5MB in Kilobits

long mStart, mEnd;
Context mContext;
URL mUrl = new URL(FILE_URL);
HttpURLConnection mCon = (HttpURLConnection)mUrl.openConnection();
mCon.setChunkedStreamingMode(0);

if(mCon.getResponseCode() == HttpURLConnection.HTTP_OK) {
mStart = new Date().getTime();

InputStream input = mCon.getInputStream();
File f = new File(mContext.getDir("temp", Context.MODE_PRIVATE), "file.bin");
FileOutputStream fo = new FileOutputStream(f);
int read_len = 0;

while((read_len = input.read(buffer)) > 0) {
fo.write(buffer, 0, read_len);
}
fo.close();
mEnd = new Date().getTime();
mCon.disconnect();

return FILE_SIZE / ((mEnd - mStart) / 1000);
}

此代码在经过轻微修改(您需要 mContext 成为有效上下文)并从 AsyncTask 或工作线程内部执行时,将下载远程文件并返回文件下载速度以 Kbps 下载。

关于java - 确定网络连接带宽(速度) wifi 和移动数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27543291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com