2015-01-16 13 views
7

Üç durum kontrol etmek gereken bir program yazıyorum: 1. Eğer WiFi yok, 2. WiFi varsa ama internet bağlantısı varsa (eğer benim router ve Ethernet kablosunu fişten çekin) ve 3. WiFi ve internet bağlantım varsa. Daha sonra, bu durumlardan birini (kırmızı, sarı veya yeşil) temsil etmek için uygulağımdaki bir simgenin rengini değiştirirdim. Şu anda durum 2 çalışmıyor, test için yönlendiricimde kabloyu çıkardığımda, simge rengi yeşilden kırmızıya değişir. İnternet varsa wifi Bundan sonra buAndroid WiFi var, ancak internet yok

fonksiyonu 1

private boolean isWifiAvailable() { 
    ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    return wifi.isConnected(); 
} 

gibi mevcut ise

public static void doPing(Context context) { 

     String googleUrl = "https://www.google.com"; 
     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

     try { 
      HttpParams httpParameters = new BasicHttpParams(); 
      HttpConnectionParams.setConnectionTimeout(httpParameters, TIMEOUT_CONNECTION); 

      HttpConnectionParams.setSoTimeout(httpParameters, TIMEOUT_SOCKET); 

      HttpClient client = new DefaultHttpClient(httpParameters); 
      if (L) Log.i(TAG, "Calling: " + url); 
      HttpGet getGoogle = getHttpGet(googleUrl); 
      HttpResponse responseGoogle = client.execute(getGoogle); 

      if (responseGoogle != null){ 
       connectionIconView.setIcon(R.drawable.green_wifi); 
      } 
      else if (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null){ 
       connectionIconView.setIcon(R.drawable.yellow_wifi); 
      } 
      else { 
       connectionIconView.setIcon(R.drawable.red_wifi); 
      } 

     } catch(Exception e) { 
      if (L) Log.e(TAG, "Error during HTTP call"); 
      e.printStackTrace(); 
     } 

cevap

14

Kontrol, böyle kontrol

fonksiyonu 2

public static boolean isInternetAccessible(Context context) { 
if (isWifiAvailable()) { 
    try { 
     HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); 
     urlc.setRequestProperty("User-Agent", "Test"); 
     urlc.setRequestProperty("Connection", "close"); 
     urlc.setConnectTimeout(1500); 
     urlc.connect(); 
     return (urlc.getResponseCode() == 200); 
    } catch (IOException e) { 
     Log.e(LOG_TAG, "Couldn't check internet connection", e); 
    } 
} else { 
    Log.d(LOG_TAG, "Internet not available!"); 
} 
return false; 
} 

Koşullar

  1. function 1 ise döner false -> true KIRMIZI
  2. function 1 ise iade ve function 2 getiri false renk değiştiren -> SARI
  3. değişiklik rengi her iki işlevi doğrudur dönerseniz -> YEŞİL için renk değiştir YEŞİL
+0

Sanırım gerçekten demek istiyorsun "Eğer işlev 1 true olursa ve işlev 2 yanlış döndürürse -> rengi SARI renkle değiştir ". Teşekkürler bir demet olsa! Bunun işe yarayıp yaramadığını kontrol edeceğim –

+0

Oh evet! Sarı kısmı özledim. : D – Rohit5k2

+0

google sayfası çağrılırken, beyaz sayfa milisaniye görünüyor .Bu sorunu çözmek için – Ajay

İlgili konular