مشخصات مقاله
آموزش Wi- Fi اندروید
دوره آموزش برنامه نویسی اندروید
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
آموزش Wi- Fi اندروید
اندروید به برنامه ها اجازه می دهد تا در سطوح خیلی پایین به وضعیت وایرلس اتصالات دسترسی داشته باشند. برنامه می تواند تقریبا به تمام اطلاعات مربوط به اتصال Wi Fi دسترسی داشته باشد. این اطلاعات عبارتند از لینک شبکه ی اتصال، سرعت، آدرس IP، وضعیت انتقال و دیگر اطلاعات مربوط به شبکه می باشد. برنامه ها همچنین می توانند اتصالات Wi Fi را اسکن کنند، ذخیره کنند، اضافه کنند، به پایان برسانند و یا آغاز کنند.
اندروید WifiManager API را برای سازماندهی همه ی جنبه های اتصال Wi Fi ارائه می دهد. ما می توانیم این گروه را با فراخوانی روش getSystemService، نمونه گذاری کنیم. ترکیب آن در زیر ارائه شده است.
WifiManager mainWifiObj;
mainWifiObj = (WifiManager) getSystemService(Context.WIFI_SERVICE);
برای اسکن کردن لیستی از شبکه های وایرلس نیاز به ثبت BroadcastReceiver دارید، که می تواند به وسیله ی روش registerReceiver و شناسه ی آبجکت گروه دیافت کننده ثبت شود. ترکیب آن مانند زیر می باشد.
class WifiScanReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
}
}
WifiScanReceiver wifiReciever = new WifiScanReceiver();
registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
اسکن Wi Fi می تواند با فراخوانی روش startScan از گروه WifiManager شروع شود. این روش لیستی از آبجکت های نتایج اسکن را ارائه می دهد. شما می توانید با فراخوانی روش get به هر آبجکتی از لیست دسترسی داشته باشید. ترکیب مربوط به آن در زیر ارائه شده است.
List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
String data = wifiScanList.get(0).toString();
علاوه بر اسکن کردن، می توانید با استفاده از روش های تعریف شده در گروه WifiManager، کنترل بیشتری بر روی wi fi خود داشته باشید. این روش ها در جدول زیر ارائه شده اند.
ردیف |
متدها و توضیحات |
1 |
addNetwork(WifiConfiguration config) این روش توصیفات یک شبکه ی جدید را به مجموعه ی شبکه های محدوده اضافه می کند. |
2 |
createWifiLock(String tag) این روش یک قفل جدید wi fi ایجاد می کند. |
3 |
disconnect() این روش اتصال فعال موجود را قطع می کند. |
4 |
enableNetwork(int netId, boolean disableOthers) این روش اجازه اتصال به یک شبکه سابقا موجود در محدوده را می دهد. |
5 |
getWifiState() این روش وضعیت فعال شده ی Wi fi را می گیرد. |
6 |
isWifiEnabled() این روش گزارش می دهد که آیا Wi Fi فعال است یا غیرفعال. |
7 |
setWifiEnabled(boolean enabled) این روش wi fi را فعال یا غیرفعال می کند. |
8 |
updateNetwork(WifiConfiguration config) این روش توضیخات مربوط به شبکه ی موجود در محدوده را آپدیت می کند. |
مثال
در اینجا مثالی را می بینید که استفاده از Wi fi را توضیح می دهد. این مثال یک برنامه ی پایه ایجاد می کند که لیست شبکه های وایرلس را اسکن کرده و آنها را در یک لیست ویو قرار می دهد.
برای آزمایش این مثال باید آن را روی یک دستگاه واقعی هجرا کنید که در آن wi fi روشن می باشد.
مراحل |
توضیحات |
1 |
برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان WIFI تحت بسته ی com.example.wifi نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید. |
2 |
src/MainActivity.java را برای افزودن کد webview تغییر دهید. |
3 |
res/layout/activity_main را برای افزودن مولفه های XML مربوطه تغییر دهید. |
4 |
AndroidManifest.xml را برای افزودن اجازه های لازم تغییر دهید. |
5 |
برنامه را اجرا کنید و یک دستگاه اجرایی اندروید انتخاب کرده و برنامه را روی آن نصب کنید و نتایج را بررسی کنید. |
در زیر محتوای فایل تغییریافته ی فعالیت اصلی را مشاهده می کنید.
src/com.example.wifi/MainActivity.java.
package com.example.wifi;
import java.util.List;
import android.annotation.SuppressLint;
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.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
WifiManager mainWifiObj;
WifiScanReceiver wifiReciever;
ListView list;
String wifis[];
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView)findViewById(R.id.listView1);
mainWifiObj = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifiReciever = new WifiScanReceiver();
mainWifiObj.startScan();
}
protected void onPause() {
unregisterReceiver(wifiReciever);
super.onPause();
}
protected void onResume() {
registerReceiver(wifiReciever, new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
class WifiScanReceiver extends BroadcastReceiver {
@SuppressLint("UseValueOf")
public void onReceive(Context c, Intent intent) {
List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
wifis = new String[wifiScanList.size()];
for(int i = 0; i < wifiScanList.size(); i++){
wifis[i] = ((wifiScanList.get(i)).toString());
}
list.setAdapter(new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1,wifis));
}
}
}
در زیر محتوای تغییریافته ی xml مربوط به res/layout/activity_main.xml را مشاهده می کنید.
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingbottom="@dimen/activity_vertical_margin"
android:paddingleft="@dimen/activity_horizontal_margin"
android:paddingright="@dimen/activity_horizontal_margin"
android:paddingtop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<listview android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignparenttop="true"
android:layout_centerhorizontal="true"
android:drawselectorontop="false"
android:background="@android:color/background_dark"
android:listselector="@android:color/darker_gray">
</ListView>
</relativelayout>
در ادامه محتوای فایل AndroidManifest.xml می باشد.
<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.wifi"
android:versioncode="1"
android:versionname="1.0">
<uses-sdk android:minsdkversion="14"
android:targetsdkversion="17" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<application android:allowbackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity android:name="com.example.wifi.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.wifi.ListWifiActivity"
android:label="@string/title_activity_list_wifi">
</activity>
</application>
</manifest>
اجازه بدهید برنامه WIFI شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه ی شما، Eclipse پنجره ی زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.
دستگاه موبایل خود را به عنوان یک گزینه انتخاب کرده و سپس آن را چک کنید که صفحه ی آن با شبکه های وایرلس اطراف شما پر شده است، مانند تصویر زیر
به اطلاعات وایرلس شبکه های اطراف خود توجه داشته باشد که شامل اطلاعات بیشتری در مورد هر شبکه ی کشف شده می باشد.
خیلی ممنون اموزش ها عالی هستن