728x90
안녕하세요.
안드로이드에서 WiFi정보 스캔하는 방법을 공유해보겠습니다!
자주 사용하는 코드는 스틱 코드에 등록하면 간편하게 불러와서 사용할 수 있습니다.
stickode.com/detail.html?no=2156
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 |