투케이2K

824. (Android/Java) [간단 소스] Wifi Scan 와이파이 스캔 결과 Rssi 기준 리스트 정렬 본문

Android

824. (Android/Java) [간단 소스] Wifi Scan 와이파이 스캔 결과 Rssi 기준 리스트 정렬

투케이2K 2024. 8. 1. 20:55
반응형

[개발 환경 설정]

개발 툴 : 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] 스캔 된 와이파이 정보가 없습니다 .. 잠시후 다시 시도해주세요");
        }
    }

 

반응형
Comments