음....
이번글에는 안드로이드에서 구현하기 귀찮은 부분을 편하게 구현시킨 라이브러리를 하나 공유!!!!
- 이름 : WifiUtils
- Github : https://github.com/ThanosFisherman/WifiUtils
와이파이 통신을 구현하기 위해서는 Wifimanager를 이용해서 구현을 해야 함
- 구글문서 : https://developer.android.com/reference/android/net/wifi/WifiManager
진행 절차는 간단함
1. WIFI 동작가능한지 확인
2. WIFI Scan 시작
3. 신호 확인 후 접속
근데!!
해보신 분들은 해당 부분 구현이 어렵다는 것을 알 것임
그냥 Connect을 한다고 되는 것도 아니고 요즘은 특정 WiFi 에 접속하려면 WiFiSuggestion을 사용해야 한다.
- 참고 내용 : https://developer.android.com/reference/android/net/wifi/WifiNetworkSuggestion.Builder
Wi-Fi Suggestion 관련해서는 다음에 정리하도록 하겠음
오늘은 라이브러리를 사용하는 법을 알아볼 거니깐?!!
자!! 아무튼 저 귀찮은 작업을 한방에 없애는 방법이 WiFiUtils 라이브러리가 되시겠다
방법은 간단하다
1. 라이브러리 implemetation
implementation("io.github.thanosfisherman.wifiutils:wifiutils:1.6.6")
2. WiFi 권한설정
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
3. WiFiUtils Log 설정
WifiUtils.enableLog(true);
WifiUtils.forwardLog(new Logger() {
@Override
public void log(int priority, String tag, String message) {
Log.e(tag, message);
}
});
4. WiFi 검색
WifiUtils.withContext(context).scanWifi(new ScanResultsListener() {
@Override
public void onScanResults(@NonNull List<ScanResult> scanResults) {
if(scanResults.isEmpty()){
Log.e("getScanResults", "SCAN RESULTS IT's EMPTY");
WifiUtils.withContext(context).disableWifi();
return;
}
for(ScanResult result : scanResults){
if(result.SSID.equals("특정 SSID")){
// 특정 SSID 신호가 검색됬음을 확인
Log.e("getScanResults", "FIND ==> " + result);
break;
}
}
}
}).start();
5. WiFi 접속
WifiUtils.withContext(context)
.connectWith(SSID, BSSID, PASSWORD)
.setTimeout(40000)
.onConnectionResult(new ConnectionSuccessListener() {
@Override
public void success() {
Log.d("WifiUtils_Connect", "Success!!");
}
@Override
public void failed(@NonNull ConnectionErrorCode errorCode) {
Log.e("WifiUtils_Connect", "Fail!!");
}
}).start();
※ 여기서 BSSID 값이 뭔지 모르는 분들이 있을 거 같아 말씀드림.
- BSSID(Basic Service Set Identifier) 는 네트워크 ID라고 생각하면 편하실 거다. 통상 MAC 주소라고 생각하면 됨
그러면 이 주소값은 어떻게 읽어오냐??
아주 편한 라이브러리라고 말씀드렸었다 ㅎㅎㅎ
Scan 결과물에 들어있으니 걱정 안 하셔도 괜찮음
FIND 로그를 확인해 보면 BSSID 값이 있으니 걱정 마시라
6. WiFi 접속해제
WifiUtils.withContext(context).disconnect(new DisconnectionSuccessListener() {
@Override
public void success() {
WifiUtils.wifiLog("DISCONNECT Success!!");
}
@Override
public void failed(@NonNull DisconnectionErrorCode errorCode) {
WifiUtils.wifiLog("DISCONNECT Fail : " + errorCode);
}
});
이 정도가 심플하게 사용하는 방법이다!!
좀 더 사용하면서 느낀 점을 말하자면 Wi-Fi 접속을 바로 진행하기보다는 Scan 후 해당 SSID 가 확인 된다면 진행하는 것을 추천한다.
질문은 댓글로 남겨주시면 응답하겠음!!
오늘도 다들 즐코딩~!!
'개발 정보 공유 > Android' 카테고리의 다른 글
[ExifInterface] 사진 속성값 READ / WRITE (0) | 2023.09.18 |
---|---|
Android Email 유효성 체크 (0) | 2022.08.02 |
<Android> TextWatcher 사용방법!! (EditText 글자 입력 시 변경 이벤트 수신처리) (0) | 2022.07.18 |
'똠프가' 개인정보처리방침 (1) | 2022.03.02 |
안드로이드 BadTokenException 처리 (0) | 2021.12.06 |