Notice
Recent Posts
Recent Comments
Link
투케이2K
899. (Android/Java) connectivityManager 사용해 NetworkRequest 특정 와이파이 연결 및 Handler 딜레이 설정 연결 해제 수행 본문
Android
899. (Android/Java) connectivityManager 사용해 NetworkRequest 특정 와이파이 연결 및 Handler 딜레이 설정 연결 해제 수행
투케이2K 2024. 11. 18. 20:24[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Java
- 개발 툴 : Android Studio
- 구분 : 간단 소스
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------
// --------------------------------------------
// TODO [전역 변수 선언]
// --------------------------------------------
ConnectivityManager connectivityManager = null;
// --------------------------------------------
// TODO [connectivityManager 객체 생성 및 와이파이 연결 수행]
// --------------------------------------------
// TODO [사전 와이파이 기능 활성 상태여야 합니다]
// --------------------------------------------
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
// [연결할 와이파이 정보 확인]
String ssid = "TEST";
String pw = "a0123456789";
WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
.setSsid(String.valueOf(ssid))
.setWpa2Passphrase(String.valueOf(pw)) // TODO [WPA2 형식]
.build();
NetworkRequest networkRequest = new NetworkRequest.Builder()
.removeTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI) // [와이파이 사용 활성]
.setNetworkSpecifier(wifiNetworkSpecifier)
.build();
connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.requestNetwork(networkRequest, networkCallback); // TODO [네트워크 요청 , 응답 확인 콜백 지정]
}
// --------------------------------------------
// TODO [ConnectivityManager.NetworkCallback 네트워크 연결 콜백 응답 지정]
// --------------------------------------------
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) { // TODO [연결 완료 및 소켓 통신 사용 가능]
super.onAvailable(network);
S_Log._W_(ACTIVITY_NAME + " :: requestNetwork :: onAvailable :: Wifi Connection Success", null);
// TODO 특정 시간 이후 AP 제안 removeNetworkSuggestions 옵션 해제 설정
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
S_Log._E_(ACTIVITY_NAME + " :: requestNetwork :: onAvailable :: 딜레이 설정 및 네트워크 연결 해제", null);
try { connectivityManager.unregisterNetworkCallback(networkCallback); } catch (Exception e){ e.printStackTrace(); }
}
}, 10000);
}
@Override
public void onUnavailable() { // TODO [네트워크에 연결되지 않은 경우]
super.onUnavailable();
S_Log._E_(ACTIVITY_NAME + " :: requestNetwork :: onUnavailable :: Wifi Connection Fail", null);
// [콜백 해제] : [AP 연결 종료]
try { connectivityManager.unregisterNetworkCallback(networkCallback); } catch (Exception e){ e.printStackTrace(); }
}
@Override
public void onLost(Network network) { // TODO [네트워크 연결이 끊겨, 이용이 불가능]
super.onLost(network);
S_Log._E_(ACTIVITY_NAME + " :: requestNetwork :: onLost :: Wifi Connection Lost", null);
// [콜백 해제] : [AP 연결 종료]
try { connectivityManager.unregisterNetworkCallback(networkCallback); } catch (Exception e){ e.printStackTrace(); }
}
};
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
https://blog.naver.com/kkh0977/223649794949
// --------------------------------------------------------------------------------------
반응형
'Android' 카테고리의 다른 글
Comments