2014-01-20 5 views
0

나는 하나 개의 기능을 구현하기 위해 필요로하는 곳에 내가 하나의 응용 프로그램에서 일하고 있습니다. 사용자가 무선 인터넷에 연결되어 있다면, 나는 와이파이 연결을 해제하고 모바일 인터넷에 그를 연결합니다.안드로이드 네트워크 변경 이벤트

나는 와이파이 전원을 끄고 ON 모바일 데이터 설정 및 최대 제한 시간 20 초 때 ON/OFF 와이파이 및 ON/OFF 모바일 데이터하지만 내가 원하는 모든 기능을 구현했습니다. 그것은 단지 최대 20초 해당 사용자가 모바일 데이터에 연결되거나 이동 요청 데이터가 전송되지 후 수신한다. 방법은 아래

+1

원하는대로 할, 20 초 동안 다음 모바일 데이터를 확인하는 것이 잠을 후 실행하고이 사용 가능한 경우, 다른 사용자 나에게 경고, 데이터를 전송합니다 당신이 원하는 것이 무엇이든 –

답변

0

를 사용하여 연결된 연결 WIFI 중 하나를 확인하거나 모바일

public static boolean isInternetAvailable(Context context) 
    { 
     boolean haveConnectedWifi = false; 
     boolean haveConnectedMobile = false; 
     boolean connectionavailable = false; 

     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo[] netInfo = cm.getAllNetworkInfo(); 


     NetworkInfo informationabtnet = cm.getActiveNetworkInfo(); 
     for (NetworkInfo ni : netInfo) 
     { 
      try 
      { 

      if (ni.getTypeName().equalsIgnoreCase("WIFI")) 
       if (ni.isConnected()) 
        haveConnectedWifi = true; 
      if (ni.getTypeName().equalsIgnoreCase("MOBILE")) 
       if (ni.isConnected()) 
        haveConnectedMobile = true; 
      if(informationabtnet.isAvailable()&&informationabtnet.isConnected()) 
       connectionavailable = true; 
       Log.i("ConnectionAvailable", ""+connectionavailable); 

      } 
      catch (Exception e) { 
       // TODO: handle exception 
       System.out.println("Inside utils catch clause , exception is"+e.toString()); 
       e.printStackTrace(); 

      } 
     } 
     return haveConnectedWifi || haveConnectedMobile; 
    } 

당신이 어떤 네트워크에서 휴대 전화가 연결되어 알게됩니다이 방법을 사용하면 원하는 작업을 수행 할 수 있습니다.

실행 당신이 당신의 WIFI를 끄고이 문. 이 문장은 20 초 당신은 당신이 다른 스레드를 하나를 사용할 수 있습니다 여기

new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 

//TODO this statement will execute after 20 seconds 
         } 
        }, 1 * 20 * 1000); 
관련 문제