Android 安卓-当调制解调器的互联网led为红色时,验证互联网连接的最佳方法?

Android 安卓-当调制解调器的互联网led为红色时,验证互联网连接的最佳方法?,android,networking,Android,Networking,我知道这个问题已经被问了很多次,但没有一个答案能解决我的问题,我的问题是当我的调制解调器重新启动时,开始打开led,例如电源、dns、无线、DSL和互联网,当互联网led为黄色时,表示有互联网,但当led为红色时,我所有的代码(见下文)当明显没有互联网时返回到true(您不能以这种方式导航) 这是我的方法代码(连接到internet、isOnline、haveNetworkConnection)(当internet指示灯为红色时,所有方法都返回true) public boolean连接到互联网

我知道这个问题已经被问了很多次,但没有一个答案能解决我的问题,我的问题是当我的调制解调器重新启动时,开始打开led,例如电源、dns、无线、DSL和互联网,当互联网led为黄色时,表示有互联网,但当led为红色时,我所有的代码(见下文)当明显没有互联网时返回到true(您不能以这种方式导航)

这是我的方法代码(连接到internet、isOnline、haveNetworkConnection)(当internet指示灯为红色时,所有方法都返回true)

public boolean连接到互联网(){
ConnectivityManager connectivity=(ConnectivityManager)_context.getSystemService(context.connectivity_SERVICE);
if(连接性!=null)
{
NetworkInfo[]info=connectivity.getAllNetworkInfo();
如果(信息!=null)
对于(int i=0;i
如何验证led何时为红色?有什么办法吗?谢谢

我在内部回答了这个问题,但这也可能是对这个问题的回答。基本上,我的解决方案是在
80
端口上将
Socket
设置为Google

我在许多项目中使用以下代码:

Socket socket;
final String host = "www.google.com";
final int port = 80;
final int timeout = 30000;   // 30 seconds of timeout

try {
  socket = new Socket();
  socket.connect(new InetSocketAddress(host, port), timeout);
}
catch (UnknownHostException uhe) {
  Log.e("GoogleSock", "I couldn't resolve the host you've provided!");
}
catch (SocketTimeoutException ste) {
  Log.e("GoogleSock", "After a reasonable amount of time, I'm not able to connect, Google is probably down!");
}
catch (IOException ioe) {
  Log.e("GoogleSock", "Hmmm... Sudden disconnection, probably you should retry once again!");
} 
如果响应时间对您很重要,那么这可能很棘手。在
UnknownHostException
s上,可能需要更长的时间超时,大约45秒。如果您有连接问题,则不应触发此命令。实际上,抛出的任何异常都意味着99.999%的用户可能存在连接问题

无论如何,如果响应时间对您很重要,并且您希望对冲您的赌注,您可以通过两种方式解决此问题:

  • 不要使用主机,而是使用IP地址。您只需在主机上多次使用
    ping
    ,就可以获得多个谷歌IP。例如:

    shut-up@i-kill-you ~/services $ ping www.google.com
    PING www.google.com (173.194.40.179) 56(84) bytes of data.
    
  • 另一种解决方法是启动
    看门狗
    线程,并在所需时间后完成连接尝试。显然,强制完成并不意味着成功,所以在你的情况下,谷歌会倒闭


了解红色LED在路由器操作方面的含义将有所帮助。你有手册吗?
shut-up@i-kill-you ~/services $ ping www.google.com
PING www.google.com (173.194.40.179) 56(84) bytes of data.