투케이2K

912. (Android/Java) [간단 소스] NetworkCapabilities 간단 설명 및 사용 옵션 정리 - 네트워크 속성 정보 확인 본문

Android

912. (Android/Java) [간단 소스] NetworkCapabilities 간단 설명 및 사용 옵션 정리 - 네트워크 속성 정보 확인

투케이2K 2024. 12. 5. 21:09

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

 

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

- 언어 : Java / Kotlin


- 개발 툴 : AndroidStudio


- 기술 구분 : NetworkCapabilities / 네트워크 속성 정보 확인

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






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

1. NetworkCapabilities 은 현재 연결된 네트워크에 대한 정보를 확인할 수 있는 객체 입니다


2. NetworkCapabilities 은 안드로이드 Api 21 레벨 (안드로이드 5.0) 부터 사용할 수 있습니다


3. NetworkCapabilities 주요 네트워크 정보 표시 관련 상수 : 

  >> NET_CAPABILITY_FOREGROUND : 빠른 네트워크 전환을 용이하게 하기 위해 백그라운드에서 유지되는 네트워크가 아니라 앱에서 사용할 수 있는 네트워크임을 나타냅니다.
  >> NET_CAPABILITY_INTERNET : 네트워크가 인터넷에 접속할 수 있음을 나타냅니다.
  >> NET_CAPABILITY_LOCAL_NETWORK : 네트워크가 로컬 네트워크임을 나타냅니다.
  >> NET_CAPABILITY_MMS : MMS 메시지를 보내고 받기 위해 통신사의 MMSC에 접속할 수 있는 네트워크임을 나타냅니다.
  >> NET_CAPABILITY_NOT_CONGESTED : 네트워크가 혼잡하지 않음을 나타냅니다.
  >> NET_CAPABILITY_NOT_METERED : 네트워크가 무제한임을 나타냅니다.
  >> NET_CAPABILITY_NOT_RESTRICTED : 네트워크를 일반적으로 사용할 수 있음을 나타냅니다.
  >> NET_CAPABILITY_NOT_ROAMING : 네트워크가 로밍 중이 아님을 나타냅니다.
  >> NET_CAPABILITY_NOT_SUSPENDED : 네트워크가 현재 중단되지 않았음을 나타냅니다.
  >> NET_CAPABILITY_NOT_VPN : 네트워크가 VPN이 아님을 나타냅니다.
  >> NET_CAPABILITY_PRIORITIZE_BANDWIDTH : 네트워크가 인터넷 대역폭을 우선시할 수 있어야 함을 나타냅니다.
  >> NET_CAPABILITY_PRIORITIZE_LATENCY : 네트워크가 인터넷 지연 시간을 우선시할 수 있어야 함을 나타냅니다.
  >> NET_CAPABILITY_TEMPORARILY_NOT_METERED : 네트워크가 일시적으로 무제한 사용 중임을 나타냅니다.
  >> NET_CAPABILITY_VALIDATED : 네트워크의 연결이 성공적으로 검증되었음을 나타냅니다.
  >> NET_CAPABILITY_WIFI_P2P : Wi-Fi P2P 에 도달할 수 있는 네트워크임을 나타냅니다.
  >> TRANSPORT_BLUETOOTH : 네트워크가 Bluetooth 전송을 사용함을 나타냅니다.
  >> TRANSPORT_CELLULAR : 네트워크가 셀룰러 전송을 사용함을 나타냅니다.
  >> TRANSPORT_ETHERNET : 네트워크가 이더넷 전송을 사용함을 나타냅니다.
  >> TRANSPORT_USB : 네트워크가 USB 전송을 사용함을 나타냅니다.
  >> TRANSPORT_VPN : 네트워크가 VPN 전송을 사용함을 나타냅니다.
  >> TRANSPORT_WIFI : 네트워크가 Wi-Fi 전송을 사용함을 나타냅니다.
  >> TRANSPORT_WIFI_AWARE : 네트워크가 Wi-Fi Aware 전송을 사용함을 나타냅니다.


4. NetworkCapabilities 주요 네트워크 정보 관련 함수 : 

  >> getCapabilities() : NetworkCapabilities 인스턴스에 설정된 모든 기능을 가져옵니다
  >> getLinkDownstreamBandwidthKbps() : 네트워크의 하향 대역폭을 Kbps 단위로 검색합니다.
  >> getLinkUpstreamBandwidthKbps() : 네트워크의 상향 대역폭을 Kbps 단위로 검색합니다.
  >> getNetworkSpecifier() : 특정 네트워크 지정자를 가져옵니다.
  >> getSignalStrength() : 신호 강도를 검색합니다.
  >> hasCapability(int capability) : 인스턴스에 기능이 있는지 테스트합니다.
  >> hasTransport(int transportType) : 인스턴스에 전송이 있는지 테스트합니다.


5. NetworkCapabilities 사용 예시 소스 코드 :

  // [ConnectivityManager 생성]
  ConnectivityManager cm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);

  // [Network 및 NetworkCapabilities 생성]
  Network network = cm.getActiveNetwork();

  NetworkCapabilities networkCapabilities = cm.getNetworkCapabilities(network);

  // [인터넷 사용가능 하고 , 유효한 연결인지 확인 수행]
  boolean hasCapabilityInternet = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
  boolean hasCapabilityValidated = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);

  // [and 결과로 인터넷 사용 가능한 네트워크 환경 상태 체크]
  boolean returnData = (hasCapabilityInternet && hasCapabilityValidated);

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






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

https://developer.android.com/reference/android/net/NetworkCapabilities

https://developer.android.com/develop/connectivity/network-ops/reading-network-state?hl=ko

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

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

 

반응형
Comments