Notice
Recent Posts
Recent Comments
Link
투케이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
// --------------------------------------------------------------------------------------
반응형
'Android' 카테고리의 다른 글
Comments