투케이2K

894. (Android/Java) [간단 소스] 안드로이드 하위 버전 (10, Q 버전 미만) WifiConfiguration 디바이스 AP 와이파이 연결 옵션 - Soft AP 본문

Android

894. (Android/Java) [간단 소스] 안드로이드 하위 버전 (10, 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();

}

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

 

반응형
Comments