2017-05-03 10 views
0

Android 개발을 처음 사용했습니다. 활동 내에서 WiFi 연결/연결 해제에 대한 수신기를 설정하려면 어떻게해야합니까? 그것은 UART 연결이 설정되어 있고 UART 장치로 WiFi 상태 정보를 보내야하기 때문에 Activity 내부에 있어야합니다. BroadcastReceivers로 몇 가지 시도했지만 실패했습니다.Android WiFi 상태 수신기

this.registerReceiver(this.myWifiReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); 

그리고 onPause에 : 나는 또한 현재 나는이 활동의 ​​onResume의 내부를하고 있어요는 브로드 캐스트 리시버를 등록하는 방법에 대한 몇 가지 도움이 필요할 수 있습니다

private BroadcastReceiver myWifiReceiver = new BroadcastReceiver(){ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     ConnectivityManager connectivityManager = ((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)); 
     NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); 
     if(networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI){ 
      if(networkInfo.isConnected()){ 
       Log.d("WIFI", "CONNECTED"); 
      }else{ 
       Log.d("WIFI", "DISCONNECTED"); 
      } 
     } 
}}; 

: 여기 내 마지막 시도입니다

this.unregisterReceiver(myWifiReceiver); 

편집 :

덕분 Devunwired 님의 답변 내가 원했던 것을 얻었습니다. 나중에 참조 할 수 있도록 코드를 게시하고 있습니다.

this.registerReceiver(this.myWifiReceiver, new IntentFilter(
     WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)); 

답변

1

는 연결/연결 해제 "가 무엇을 의미하는지에 따라 : onResume 항상 호출되지 않았기 때문에

private BroadcastReceiver myWifiReceiver = new BroadcastReceiver(){ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     SupplicantState newState = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE); 

     switch(newState){ 
      case ASSOCIATED: 
       Log.d("WIFI", "CONNECTED"); 
       break; 
      case DISCONNECTED: 
       if(!disconnected){ 
        Log.d("WIFI", "DISCONNECTED"); 
        disconnected = true; 
       } 
     } 
}}; 

나는 또한 onStartBroadcastReceiver 등록 이동 (결과적 onStop에 등록 취소를 이동) "올바른 방송 조치를 관찰하지 못할 수도 있습니다. ConnectivityManager.CONNECTIVITY_ACTION은 기본 연결이 완전히 설정되거나 손실 될 때 트리거됩니다.

WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION 또는 WifiManager.SUPPLICANT_STATE_CHANGED_ACTION에 관심이있을 수 있습니다. 이는 WiFi 무선 연결 상태가 변경 될 때 트리거됩니다.

나는 브로드 캐스트 리시버와 몇 가지를 시도했지만 위의 작업이 사용자의 요구를 만족하지 않는 경우에, 나는 당신이 발생하는 장애에 정교하게하는 것이 좋습니다 것

을 실패했습니다.