Notice
Recent Posts
Recent Comments
Link
투케이2K
894. (Android/Java) [간단 소스] 안드로이드 하위 버전 (9, Q 버전 미만) WifiConfiguration 디바이스 AP 와이파이 연결 옵션 - Soft AP 본문
Android
894. (Android/Java) [간단 소스] 안드로이드 하위 버전 (9, Q 버전 미만) WifiConfiguration 디바이스 AP 와이파이 연결 옵션 - Soft AP
투케이2K 2024. 11. 16. 14:57[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Java
- 개발 툴 : Android Studio
- 구분 : 유틸 파일
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------
// TODO [WifiConfiguration : 와이파이 연결 옵션 설정 수행]
WifiConfiguration wifiConfiguration = new WifiConfiguration();
// TODO [초기 clear 작업 진행]
wifiConfiguration.allowedAuthAlgorithms.clear();
wifiConfiguration.allowedGroupCiphers.clear();
wifiConfiguration.allowedKeyManagement.clear();
wifiConfiguration.allowedPairwiseCiphers.clear();
wifiConfiguration.allowedProtocols.clear();
// TODO [와이파이 연결 정보 설정 수행]
wifiConfiguration.SSID = "\"" + String.valueOf(ssid) + "\""; // [연결하고자 하는 SSID]
wifiConfiguration.priority = 40;
// -----------------------------------------------------------
// TODO [디바이스] : [Soft AP 와이파이 연결 수행] : 비밀 번호 없는 AP 정보
// -----------------------------------------------------------
// TODO [참고] : 인터넷 사용이 확실하지 않은 상태로 >> 휴대폰이 자동으로 강한 신호에 연결 될 수 있음 :: 2회 정도 시도 필요
// -----------------------------------------------------------
wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
wifiConfiguration.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
wifiConfiguration.allowedAuthAlgorithms.clear();
wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wifiConfiguration.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
// TODO [와이파이 연결 수행]
WifiManager wifiManager = (WifiManager) mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if (wifiManager.getWifiState() != WifiManager.WIFI_STATE_ENABLED) {
wifiManager.setWifiEnabled(true);
}
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
int addNetwork = wifiManager.addNetwork(wifiConfiguration); // [네트워크 추가 수행]
boolean saveFlag = wifiManager.saveConfiguration(); // [설정 저장]
// TODO [기존 네트워크 연결 끊기]
wifiManager.disconnect();
// TODO [네트워크 연결 수행]
if (addNetwork != -1) {
boolean enableWifi = wifiManager.enableNetwork(addNetwork, true);
boolean reconnectWifi = wifiManager.reconnect();
}
// --------------------------------------------------------------------------------------
반응형
'Android' 카테고리의 다른 글
Comments