Обнаружить, если нет подключения к Интернету

У меня есть код, чтобы определить, есть ли сетевое подключение или нет:

    ConnectivityManager cm = (ConnectivityManager)  getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();

    if (netInfo != null && netInfo.isConnected()) 
    {
        // There is an internet connection
    }

Но если есть подключение к сети и нет интернета, это бесполезно. Мне нужно пропинговать веб-сайт и дождаться ответа или тайм-аута, чтобы определить подключение к Интернету:

    URL sourceUrl;
    try {
        sourceUrl = new URL("http://www.google.com");
        URLConnection Connection = sourceUrl.openConnection();
        Connection.setConnectTimeout(500);
        Connection.connect();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

        // no Internet
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

        // no Internet
    }

Но это медленное обнаружение. Я должен научиться хорошему и быстрому способу его обнаружения.

Заранее спасибо.

5
задан Tuna Karakasoglu 12 December 2012 в 15:11
поделиться