实际上,我有一个检查网络连接的功能...那就是:
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/