안드로이드

안드로이드 주변 wifi 목록 검색하기

알통몬_ 2017. 9. 21. 16:25
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 

이번 포스팅에서는 주변 wifi 를 검색하는 방법에 대해 알아보겠습니다.

가장 먼저 Wifi 검색을 위해 퍼미션을 하나 추가해주어야 합니다.

1
2
 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
cs


먼저 전역 변수로

1
2
3
 
    WifiManager manager;
    private List<ScanResult> scanResults; // ScanResult List
cs


위처럼 선언해주시구요.

onCreate() 부분에 아래처럼 선언해줍니다.

1
2
3
4
5
6
7
8
9
10
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        manager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
 
        if(!manager.isWifiEnabled()){
            manager.setWifiEnabled(true); // wifi 가 켜져있지 않을 경우 자동으로 wifi를 켜줍니다.
        }
    }
cs


그 다음 Receiver 를 등록해줍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();
            if(action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
                scanResults= manager.getScanResults();
                for(int i = 0; i < scanResults.size(); i++) {
                    Log.d("ssid[" + i + "]", scanResults.get(i).SSID);
                    // 주변 와이파이 SSID를 반복문을 이용해 로그를 찍어보았습니다.
                }
 
            }else if(action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
                sendBroadcast(new Intent("wifi.ON_NETWORK_STATE_CHANGED"));
            }
        }
    };
cs


그 다음으로 검색을 원하는 타이밍에 아래 코드를 호출해주면 됩니다.

1
2
3
4
5
6
IntentFilter intentFilter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
                intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
                registerReceiver(receiver, intentFilter);
 
                manager.startScan();
 
cs


마지막으로 액티비티를 나갔을 때 Receiver 를 종료해주면 됩니다.

1
2
3
4
5
6
7
 
    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(receiver);
    }
 
cs


크게 어렵지 않죠??

이상입니다.

반응형