이 예는 프로그래밍 방식으로 Wi-Fi 네트워크를 스캔하는 방법을 보여줍니다.
1단계 − Android Studio에서 새 프로젝트를 생성하고 파일 ⇒ 새 프로젝트로 이동하여 필요한 모든 세부 정보를 입력하여 새 프로젝트를 생성합니다.
2단계 − res/layout/activity_main.xml에 다음 코드를 추가합니다.
사전> 3단계 − src/MainActivity.java
에 다음 코드 추가패키지 com.example.myapplication;import android.Manifest;import android.content.Context;import android.content.IntentFilter;import android.content.pm.PackageManager;import android.net.wifi.WifiManager;import android. os.Build;import android.support.annotation.NonNull;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os .Bundle;import android.view.View;import android.widget.Button;import android.widget.ListView;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private ListView wifiList; 개인 WifiManager wifiManager; 개인 최종 정수 MY_PERMISSIONS_ACCESS_COARSE_LOCATION =1; Wifi수신기Wifi; @Override protected void onCreate(Bundle storedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wifiList =findViewById(R.id.wifiList); 버튼 buttonScan =findViewById(R.id.scanBtn); wifiManager =(WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); if (!wifiManager.isWifiEnabled()) { Toast.makeText(getApplicationContext(), "Wifi 켜기...", Toast.LENGTH_LONG).show(); wifiManager.setWifiEnabled(참); } buttonScan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) ! =PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions( MainActivity .this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSIONS_ACCESS_COARSE_LOCATION); } else { wifiManager.startScan(); } } }); } @Override 보호 무효 onPostResume() { super.onPostResume(); 수신기Wifi =새로운 WifiReceiver(wifiManager, wifiList); IntentFilter intentFilter =새로운 IntentFilter(); intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); registerReceiver(receiverWifi, 인텐트 필터); getWifi(); } 비공개 무효 getWifi() { if (Build.VERSION.SDK_INT> =Build.VERSION_CODES.M) { Toast.makeText(MainActivity.this, "버전> =마시멜로", Toast.LENGTH_SHORT).show(); if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) ! =PackageManager.PERMISSION_GRANTED) { Toast.makeText(MainActivity.this, "위치 꺼짐", Toast.LENGTH_SHORT).show(); ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, MY_PERMISSIONS_ACCESS_COARSE_LOCATION); } else { Toast.makeText(MainActivity.this, "위치 켜짐", Toast.LENGTH_SHORT).show(); wifiManager.startScan(); } } else { Toast.makeText(MainActivity.this, "스캐닝", Toast.LENGTH_SHORT).show(); wifiManager.startScan(); } } @Override protected void onPause() { super.onPause(); unregisterReceiver(receiverWifi); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] 권한, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, 권한, grantResults); switch (requestCode) { case MY_PERMISSIONS_ACCESS_COARSE_LOCATION:if (grantResults.length> 0 && grantResults[0] ==PackageManager.PERMISSION_GRANTED) { Toast.makeText(MainActivity.this, "권한 부여됨", Toast.LENGTH_SHORT). ); wifiManager.startScan(); } else { Toast.makeText(MainActivity.this, "권한 부여되지 않음", Toast.LENGTH_SHORT).show(); 반품; } 부서지다; } }}4단계 − src/WifiReceiver에 다음 코드 추가
패키지 com.example.myapplication;가져오기 android.content.BroadcastReceiver;가져오기 android.content.Context;가져오기 android.content.Intent;가져오기 android.net.wifi.ScanResult;가져오기 android.net.wifi.WifiManager;가져오기 android.widget.ArrayAdapter, import android.widget.ListView, import android.widget.Toast, import java.util.ArrayList, import java.util.List, class WifiReceiver extends BroadcastReceiver { WifiManager wifiManager; 스트링빌더 sb; 목록보기 와이파이 장치 목록; 공개 WifiReceiver(WifiManager wifiManager, ListView wifiDeviceList) { this.wifiManager =wifiManager; this.wifiDeviceList =wifiDeviceList; } 공개 무효 onReceive(컨텍스트 컨텍스트, 의도 의도) { 문자열 작업 =의도.getAction(); if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) { sb =new StringBuilder(); 목록<스캔결과> wifiList =wifiManager.getScanResults(); ArrayList<문자열> deviceList =새로운 ArrayList<>(); (ScanResult scanResult :wifiList) { sb.append("\n").append(scanResult.SSID).append(" - ").append(scanResult.capabilities); deviceList.add(scanResult.SSID + " - " + scanResult.capabilities); } Toast.makeText(context, sb, Toast.LENGTH_SHORT).show(); ArrayAdapter arrayAdapter =새로운 ArrayAdapter(context, android.R.layout.simple_list_item_1, deviceList.toArray()); wifiDeviceList.setAdapter(배열 어댑터); } }}5단계 − androidManifest.xml에 다음 코드 추가
<활동 android:name ="com.example.myapplication.MainActivity"> <카테고리 안드로이드:이름 ="android.intent.category.LAUNCHER" /> 응용 프로그램을 실행해 보겠습니다. 실제 Android 모바일 장치를 컴퓨터에 연결했다고 가정합니다. Android 스튜디오에서 앱을 실행하려면 프로젝트의 활동 파일 중 하나를 열고 실행을 클릭하세요. 도구 모음에서 아이콘. 모바일 장치를 옵션으로 선택한 다음 기본 화면을 표시할 모바일 장치를 확인하십시오 –