نمایش لیست وایفای های فعال در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش نمایش لیست وایفای های فعال در برنامه نویسی اندروید خواهیم پرداخت بعد از به دست آوردن لیست وایفای ها در listview قرار خواهد گرفت در ادامه با ما همراه باشید.
ابتدا باید دسترسی استفاده از wifi و تغییر در wifi را قرار دهیم.
پس باید وارد فایل AndroidManifest.xml شده و دسترسی های زیر را اضافه کنیم.
1 2 | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> |
وارد layout خود شده در اینجا نام آن برابر با activity_wifi_scanner.xml است و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="10dp" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/wifilist" android:layout_width="match_parent" android:layout_height="312dp" android:layout_weight="0.97" /> <Button android:id="@+id/scan" android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="bottom" android:layout_margin="15dp" android:background="@android:color/holo_green_light" android:text="Scan Again" /> </LinearLayout> |
در بالا یک ListView و یک دکمه قرار دارد که در ListView لیست وایفای های فعال قرار می گیرد و دکمه هم برای fetch کردن یا انجامم عمل به دست آوردن وایفای های فعال مورد استفاده قرار می گیرد.
سپس وارد اکتیویتی اصلی شده در اینجا نام آن برابر با WifiScanner شده و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | package ir.programchi; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.wifi.ScanResult; import android.net.wifi.WifiManager; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class WifiScanner extends Activity implements View.OnClickListener{ WifiManager wifi; ListView lv; Button buttonScan; int size = 0; List<ScanResult> results; String ITEM_KEY = "key"; ArrayList<String> arraylist = new ArrayList<>(); ArrayAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setTitle("Widhwan Setup Wizard"); setContentView(R.layout.activity_wifi_scanner); buttonScan = (Button) findViewById(R.id.scan); buttonScan.setOnClickListener(this); lv = (ListView)findViewById(R.id.wifilist); wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); if (wifi.isWifiEnabled() == false) { Toast.makeText(getApplicationContext(), "Wifi is disabled !", Toast.LENGTH_LONG).show(); wifi.setWifiEnabled(true); } this.adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,arraylist); lv.setAdapter(this.adapter); scanWifiNetworks(); } public void onClick(View view) { scanWifiNetworks(); } private void scanWifiNetworks(){ arraylist.clear(); registerReceiver(wifi_receiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); wifi.startScan(); Log.d("WifScanner", "scanWifiNetworks"); Toast.makeText(this, "Scanning....", Toast.LENGTH_SHORT).show(); } BroadcastReceiver wifi_receiver= new BroadcastReceiver() { @Override public void onReceive(Context c, Intent intent) { Log.d("WifScanner", "onReceive"); results = wifi.getScanResults(); size = results.size(); unregisterReceiver(this); try { while (size >= 0) { size--; arraylist.add(results.get(size).SSID); adapter.notifyDataSetChanged(); } } catch (Exception e) { Log.w("WifScanner", "Exception: "+e); } } }; } |
در بالا با استفاده از کلاس WifiManager شروع به دست آوردن لیست وایفای ها می کنیم سپس یک Collection از نوع ScanResult تعریف می کنیم تا SSID هر وایفای را به دست آوریم و در آرایه که تعریف کردیم قرار دهیم بخش مهم این کار BroadcastReceiver است که تمامی SSID ها را به دست می آورد بعد از به دست آمدن SSID ها و قرار گرفتن در آرایه زمان فید یا Populate کردن آن به ListView است .
این آموزش هم به پایان رسید.
موفق و پیروز باشید.