728x90
    
    
  안녕하세요.
안드로이드에서 WiFi정보 스캔하는 방법을 공유해보겠습니다!
자주 사용하는 코드는 스틱 코드에 등록하면 간편하게 불러와서 사용할 수 있습니다.
stickode.com/detail.html?no=2156
스틱코드
stickode.com
1. manifest 필요한 퍼미션 등록
2. 사용자 권한요청
3. wifi정보 스캔 코드
4. 테스트 결과
1. manifest 필요한 퍼미션 등록
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>위치정보와 wifi 상태를 확인할 수 있는 퍼미션 등록
2. 사용자 권한 요청
if (ContextCompat.checkSelfPermission(MainActivity.this,
                Manifest.permission.ACCESS_COARSE_LOCATION)
                != PackageManager.PERMISSION_GRANTED) {
            Log.d("permission","checkSelfPermission");
            if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,
                    Manifest.permission.ACCESS_COARSE_LOCATION)) {
                Log.d("permission","shouldShowRequestPermissionRationale");
                // 사용자에게 설명을 보여줍니다.
                // 권한 요청을 다시 시도합니다.
            } else {
                // 권한요청
                Log.d("permission","권한 요청");
                ActivityCompat.requestPermissions(MainActivity.this,
                        new String[]{Manifest.permission.ACCESS_COARSE_LOCATION,
                                Manifest.permission.ACCESS_FINE_LOCATION,
                                Manifest.permission.ACCESS_WIFI_STATE,Manifest.permission.CHANGE_WIFI_STATE},
                        1000);
            }
        }onCreate() 부분에 권한을 요청하는 코드 추가
//권한요청을 사용자에게 허락받았는지 못받았는지 결과를 알수 있는 콜백 메서드
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 1000: {
                if (grantResults.length > 0
                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // 권한 획득 성공
                    Log.d("permission","권한 획득 성공");
                } else {
                    // 권한 획득 실패
                    Log.d("permission","권한 획득 실패");
                }
                return;
            }
        }
    }권한 요청 콜백 메서드를 main 액티비티에 추가하여
권한을 획득 성공했는지 확인할 수 있습니다.


3. wifi정보 스캔 코드
WifiManager wifiManager;
private void scanSuccess() {
  List<ScanResult> results = wifiManager.getScanResults();
  Log.e("wifi-info",results.toString());
  test_tv.setText(results.toString());
}
private void scanFailure() {
  // handle failure: new scan did NOT succeed
  // consider using old scan results: these are the OLD results!
  List<ScanResult> results = wifiManager.getScanResults();
}onCreate() 메서드 윗부분에 wifiManager 변수 선언 및 스캔 결과를 확인하는 메서드 추가
BroadcastReceiver wifiScanReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context c, Intent intent) {
                boolean success = intent.getBooleanExtra(
                        WifiManager.EXTRA_RESULTS_UPDATED, false);
                if (success) {
                    scanSuccess();
                    Log.e("wifi","scanSuccess !!!!!!!!!!!!!!!");
                } else {
                    // scan failure handling
                    scanFailure();
                    Log.e("wifi","scanFailure ..............");
                }
            }
        };
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
        registerReceiver(wifiScanReceiver, intentFilter);
        wifi_scan_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                boolean success = wifiManager.startScan();
                if (!success) {
                    // scan failure handling
                    scanFailure();
                    Log.e("wifi","scanFailure ..............");
                }
            }
        });onCreate() 메서드에 wifi정보 상태 체크하는 코드 추가
4. 테스트 결과


앱에서 에뮬레이터의 WiFi 정보를 정상적으로 스캔할 것을 확인할 수 있습니다.

'안드로이드 자바' 카테고리의 다른 글
| [JAVA][Android] 안드로이드 OCR 기능 만들기 (4) | 2021.06.13 | 
|---|---|
| [JAVA][Android] 라이브 방송 화면 만들기 (0) | 2021.06.11 | 
| [JAVA][Android] 로또 QR 코드 웹뷰 띄워주기 (0) | 2021.06.08 | 
| [JAVA][Android] 안드로이드 STT (4) | 2021.06.06 | 
| [JAVA][Android] 스위치 버튼으로 배경음악 on/off 하기 (0) | 2021.06.03 | 
 
                    
                   
                    
                   
                    
                  