android - android编程中的互联网速度

标签 android

我想写一个在通知栏中显示互联网速度的应用程序,我试过这段代码,但它目前只显示链接速度而不是实际速度

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/

相关文章:

android - React Native - 在单个应用程序中组合 2 种导航类型

android - 我无法在 phonegap 构建中加载我的 Polymer 项目

android - 键盘一直挡住我的视线...如何解决?

java - 应用程序在 android 4.0.3 上使用 url.openStream() 崩溃

java - 当我关闭我的应用程序时,为什么我的 Android 应用程序 Activitie 会重新打开

android - CompoundButton(Switch)上的 NullPointer 异常

android - 基于密度的多个apk

java - 给定 SMS 字符串的正则表达式是什么

java - Android:何时开始使用 .在 Android list 中?

android - 轴突框架 : Android support?