我想写一个在通知栏中显示互联网速度的应用程序,我试过这段代码,但它目前只显示链接速度而不是实际速度
WifiInfo wifiInfo = wifiManger.getConnectionInfo();
int speedMbps = wifiInfo.getLinkSpeed();
如何通过 wifi 或 3G 获取准确的互联网速度?
最佳答案
起初,我以为您的意思是您对查看最大下载/上传速度感兴趣,例如 Speedtest.net 提供的信息。现在我相信您的意思是您有兴趣获取当前的网络流量使用情况。我在底部留下了与我最初假设相关的解释。
新答案(如果您有兴趣获取当前的上传/下载流量):
查看 TrafficStats
类(class)。它具有诸如 getMobileRxBytes()
和 getMobileTxBytes()
之类的函数,它们分别给出自启动以来接收和传输的字节数。您可以每秒获取这些值,然后进行计算以找出每秒的差异(或“每秒字节数”)。
// set this to true when you want it to stop
boolean mStopHandler = false;
Runnable runnable = new Runnable() {
@Override
public void run() {
// complete calculations
if (!mStopHandler) {
mHandler.postDelayed(this, 1000); //runs every second
}
}
};
// begin task
mHandler.post(runnable);
原始答案(假设您对最大下载/上传速度感兴趣):
这不可能按照您想要的方式进行。互联网速度是您的设备和您指定的目标服务器之间的数据传输速率。当您访问 Speedtest.net 时,您正在向他们的服务器发送信息并以尽可能快的速度从他们的服务器接收信息,它会告诉您它正在检测的速率。为了能够查看实时速度统计数据,您需要不断地与远程服务器通信。 (此外,该服务器需要能够比客户端更快地下载和上传,否则您最终测试的是服务器互联网连接的最大传输速率,而不是客户端的!)。
关于android - android编程中的互联网速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27000027/