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