투케이2K

910. (Android/Java) [간단 소스] ConnectivityManager.NetworkCallback 간단 설명 및 사용 옵션 정리 본문

Android

910. (Android/Java) [간단 소스] ConnectivityManager.NetworkCallback 간단 설명 및 사용 옵션 정리

투케이2K 2024. 12. 4. 19:47

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

 

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin


- 개발 툴 : AndroidStudio


- 기술 구분 : ConnectivityManager.NetworkCallback / 네트워크 변경 상태 확인

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[설명 정리]
// --------------------------------------------------------------------------------------

1. ConnectivityManager.NetworkCallback 은 Android Api 21 (안드로이드 5) 에서 추가 네트워크 변경 상태 확인 콜백 클래스입니다


2. ConnectivityManager.NetworkCallback 은 NetworkRequest 객체의 요청에 의한 네트워크 변경 상태를 확인할 수 있습니다


3. ConnectivityManager.NetworkCallback 에 포함 된 주요 함수 : 

  >> onAvailable(Network network) : 프레임워크가 연결되고 새로운 네트워크가 사용 가능한 상태로 선언되면 호출됩니다
  >> onBlockedStatusChanged(Network network, boolean blocked) : 지정된 네트워크에 대한 액세스가 차단되거나 차단이 해제될 때 호출됩니다
  >> onLost(Network network) : 네트워크 연결이 끊어지거나 더 이상 이 요청이나 콜백을 충족시킬 수 없을 때 호출됩니다
  >> onUnavailable() : 지정한 시간 초과 시간 내에 네트워크를 찾을 수 없거나 , 네트워크 변경 요청을 충족할 수 없는 경우 (시간 초과가 지정되었는지 여부와 관계없이) 호출됩니다


4. ConnectivityManager.NetworkCallback 사용 방법 예시 코드 : 

  // --------------------------------------------
  // TODO [WifiNetworkSpecifier]
  // --------------------------------------------
  String ssid = "TWOK";
  String password = "t0123456789";

  WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
          .setSsid(String.valueOf(ssid))
          .setWpa2Passphrase(String.valueOf(password)) // TODO [WPA/WPA2 형식]
          .build();


  // --------------------------------------------
  // TODO [NetworkRequest]
  // --------------------------------------------
  NetworkRequest networkRequest = new NetworkRequest.Builder()
        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
        .setNetworkSpecifier(wifiNetworkSpecifier)
        .build();


  // --------------------------------------------
  // TODO [ConnectivityManager]
  // --------------------------------------------
  ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
  connectivityManager.requestNetwork(networkRequest, new ConnectivityManager.NetworkCallback() {
      @Override
      public void onAvailable(Network network) {
          super.onAvailable(network);
          S_Log._W_("requestNetwork :: onAvailable :: Wifi Connection Success", null);
      }

      @Override
      public void onUnavailable() {
          super.onUnavailable();
          S_Log._E_("requestNetwork :: onUnavailable :: Wifi Connection Fail", null);
      }

      @Override
      public void onLost(Network network) {
          super.onLost(network);
          S_Log._E_("requestNetwork :: onLost :: Wifi Connection Lost", null);
      }

  });


5. 참고 : NetworkRequest 를 통해 네트워크 변경 요청을 하려는 경우 휴대폰 단말기에서 WIFI 와이파이 기능이 활성화 상태가 되어 있어야합니다

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback

https://blog.naver.com/kkh0977/223554797505?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments