android - 在 Android 中检查连接是否良好

标签 android

实际上,我有一个检查网络连接的功能...那就是:

public boolean isOnline() {
        ConnectivityManager cm =
            (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
    }

但是,如果我的连接信号很弱……当我登录我的应用程序时需要很长时间,它就会崩溃。如果我想检查连接是否良好或快速,我该怎么做?比如超时条件或类似的东西..

非常感谢!

最佳答案

首先你应该确定是否(不)在 wifi 上。然后您可以使用

检查所需的“速度”
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
int prov = tm.getNetworkType();

switch (prov) {
        case 1: return GPRS;
        case 2: return EDGE;
        case 3: return UMTS;
        case 8: return HSDPA;
        case 9: return HSUPA;
        case 10:return HSPA;
        default:return UNKNOWN;
        }

如果你想检查连接的 wifi 的信号强度(这不能保证良好的网络!)你可以使用

WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int level=WifiManager.calculateSignalLevel(wifiInfo.getRssi(), 5 /** this is how many levels MAX should be displayed **/);

级别越高,信号越好。您还可以使用 yourwifi.level 获取 dBm。 -100 到 0。0 最高。干杯。

编辑:并且由于您的“应用程序崩溃”。 听起来你在 main(ui/thread) 中做了太多的事情。确保它在自己的 Thread 或 AsyncTask 中用于长时间操作的东西。

关于android - 在 Android 中检查连接是否良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23411577/

相关文章:

java - Settings.ACTION_SOUND_SETTINGS 不会返回到应用程序

android - Leanback.DetailsFragment 未按预期滚动

android - 使用 robospice-retrofit 和 getstream.io 时没有这样的方法错误

javascript - Android webview 无法正常显示

Android Studio 3.2 金丝雀版本不呈现导航标签

java - 单击按钮时 URL 未打开

Android导航组件回栈

android - ListView 内部 fragment 错误

android - 通过蓝牙获取文件

android - onclick 按钮在 ListView 中不起作用