小编use*_*530的帖子

使用Android获取当前的互联网速度(移动和Wifi)

我有一个必须在离线和在线模式下工作的应用程序.应用程序必须根据当前网络连接(Wifi或数据)的Internet速度向应用服务器发出请求.

如果连接了Wifi,我可以使用此代码获得当前连接的Wifi信号强度.

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int level = WifiManager.calculateSignalLevel(wifiInfo.getRssi(), 5);
Run Code Online (Sandbox Code Playgroud)

要么

wifiInfo.getLinkSpeed();
Run Code Online (Sandbox Code Playgroud)

如果移动互联网已连接,我可以使用监听器类获得信号强度

@Override
    public void onSignalStrengthsChanged(SignalStrength signalStrength) {
        super.onSignalStrengthsChanged(signalStrength);
        int obj  = signalStrength.getGsmSignalStrength();
        int dBm = (2 * obj) -113;
 }
Run Code Online (Sandbox Code Playgroud)

上面的代码获得信号强度,而不是速度.那么,我如何获得连接网络的当前速度?

通常,在商店或网站中找到的速度测试应用程序通过发送或下载特定文件或ping远程服务器然后使用经过的时间计算速度来检查速度.

我正在与之通信的应用服务器不支持此上传/下载或ping功能,因此我无法使用它.

那么,有没有其他方法可以检查当前可以实时完成的互联网连接的速度?

任何线索都可能有所帮助.

PS:此链接具有用于检查当前网络的连接类型的代码.但在某些情况下,我的LTE信号具有完整的强度但没有/非常慢的互联网连接.所以,对我来说,这也不是一个准确的解决方案.

https://gist.github.com/emil2k/5130324

谢谢

android wifimanager android-wifi telephonymanager

17
推荐指数
1
解决办法
1万
查看次数