Notice
Recent Posts
Recent Comments
Link
투케이2K
824. (Android/Java) [간단 소스] Wifi Scan 와이파이 스캔 결과 Rssi 기준 리스트 정렬 본문
[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// ---------------------------------------------------------------------------
// [와이파이 스캔 기능 관련 참고 사이트]
// ---------------------------------------------------------------------------
// https://blog.naver.com/kkh0977/223077683541?trackingCode=blog_bloghome_searchlist
// ---------------------------------------------------------------------------
// [사전 와이파이 스캔 수행 : WifiManager >> startScan]
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
// [와이파이 스캔 결과가 반환 되는 onNext : List<ScanResult> value]
// ---------------------------------------------------------------------------
@Override
public void onNext(@NonNull List<ScanResult> value) {
if (value != null && value.size()>0){ // [콜백 반환 와이파이 스캔 리스트 null 체크]
// [변수 선언]
ArrayList filterList = new ArrayList<>();
// [콜백 반환 된 리스트 정렬 수행 : RSSI 값 신호 세기 큰 기준]
Collections.sort( value , new Comparator<ScanResult>() {
@Override
public int compare(ScanResult scan0, ScanResult scan1) {
return scan0.level-scan1.level;
}
});
Collections.reverse(value);
// [반환 된 리스트 정보 확인]
for (int i=0; i<value.size(); i++){
String info = "\n";
info += "SSID : " + String.valueOf(value.get(i).SSID) + "\n" + "\n";
info += "BSSID : " + String.valueOf(value.get(i).BSSID) + "\n" + "\n";
info += "AUTH : " + String.valueOf(value.get(i).capabilities) + "\n" + "\n";
info += "Ghz : " + String.valueOf(C_App.get_Wifi_GHz(value.get(i).frequency)) + "\n" + "\n";
info += "RSSI : " + String.valueOf(value.get(i).level) + "\n";
if (C_Util.stringNotNull(String.valueOf(value.get(i).SSID)) == true
&& filterList.contains(String.valueOf(value.get(i).BSSID)) == false){ // [방어 로직 추가] : [SSID 널 체크 및 중복 BSSID 추가 제한]
filterList.add(String.valueOf(info)); // [신규 리스트에 추가]
}
}
// [신규 리스트 정보 확인]
if (filterList != null && filterList.size()>0){
// [추가 로직 처리 수행]
}
else {
C_Ui_View.toastLongError(MainScreenActivity.this, "[1] 스캔 된 와이파이 정보가 없습니다 .. 잠시후 다시 시도해주세요");
}
}
else {
C_Ui_View.toastLongError(MainScreenActivity.this, "[2] 스캔 된 와이파이 정보가 없습니다 .. 잠시후 다시 시도해주세요");
}
}
반응형
'Android' 카테고리의 다른 글
Comments