آموزش برنامه نویسی اندروید با اندروید استودیو (بخش سی و سوم: کار با شبکه WiFi در اندروید)

استاندارد

بعضی اوقات پیش می آید که در اپلیکیشن هایی که می نویسیم، شبکه WiFi دستگاه اندرویدی برای اتصال روشن شود.

مثلا برای انتقال فایل و یا به طور کلی ارتباط با دستگاه دیگر از طریق WiFi ، کار با شبکه WiFi ضروری است. همچنین گاهی اوقات پیش می آید که در برنامه های اندرویدی، بخواهیم برنامه به هر دلیلی به اینترنت وصل شود.

در این بخش یاد میگیرید که چگونه با شبکه وای فای کار کرده و آن را در صورت لزوم هر وقت که بخواهید روشن و یا خاموش نمایید.

من یک پروژه جدید به نام Wifi-Gsm ایجاد می کنم.

از مسیر Res -> Layoyt به سراغ فایل activity_main.xml می رویم. سپس از تب Design وارد قسمت Palette ها می شویم و دو دکمه Button را به لایه اپلیکیشن اضافه می کنیم.

در واقع می خواهیم با این دکمه ها، شبکه وای فای را قطع و یا وصل بکنیم. پس اسم یکی از آن ها رو “روشن” و اسم دیگری را “خاموش” میگذاریم.

کد Xml دکمه ها

<Button
        android:text="روشن"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="156dp"
        android:id="@+id/RoshanButton" />

    <Button
        android:text="خاموش"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/RoshanButton"
        android:layout_alignLeft="@+id/RoshanButton"
        android:layout_alignStart="@+id/RoshanButton"
        android:layout_marginTop="55dp"
        android:id="@+id/KhamoshButton" />

حال به سراغ کد جاوای برنامه MainActivity.java می رویم. در این قسمت پس از معرفی دکمه ها به این بخش، باید کدهایی را بنویسیم که اپلیکیشن با استفاده از دو دکمه، بتواند شبکه WiFi را قطع و یا وصل کند.

در مرحله اول، باید دکمه ها را به برنامه معرفی نماییم.

Button wifibtnRoshan = (Button) findViewById(R.id.RoshanButton);
Button wifibtnKhamosh = (Button) findViewById(R.id.KhamoshButton);

در مرحله بعدی باید یک رویداد برای دکمه ی روشن بنویسیم. تا وقتی بر روی آن زده شود، شبکه Wifi، روشن شود.

wifibtnRoshan.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
                wifi.setWifiEnabled(true);
                Toast.makeText(MainActivity.this, "شبکه وای فای روشن شد", Toast.LENGTH_LONG).show();
            }
        });

در مرحله سوم باید یک رویداد برای دکمه ی خاموش بنویسیم. تا وقتی بر روی آن زده شود، شبکه Wifi، خاموش شود.

wifibtnKhamosh.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                WifiManager wifi1 = (WifiManager) getSystemService(Context.WIFI_SERVICE);
                wifi1.setWifiEnabled(false);
                Toast.makeText(MainActivity.this, "شبکه وای فای خاموش شد", Toast.LENGTH_LONG).show();
            }
        });

کد کامل MainActivity

package com.gsm_developers.wifi_gsm;

import android.content.Context;
import android.net.wifi.WifiManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button wifibtnRoshan = (Button) findViewById(R.id.RoshanButton);
        Button wifibtnKhamosh = (Button) findViewById(R.id.KhamoshButton);

        wifibtnRoshan.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
                wifi.setWifiEnabled(true);
                Toast.makeText(MainActivity.this, "شبکه وای فای روشن شد", Toast.LENGTH_LONG).show();
            }
        });

        wifibtnKhamosh.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                WifiManager wifi1 = (WifiManager) getSystemService(Context.WIFI_SERVICE);
                wifi1.setWifiEnabled(false);
                Toast.makeText(MainActivity.this, "شبکه وای فای خاموش شد", Toast.LENGTH_LONG).show();
            }
        });
    }
}

مشاهده می کنید که در قسمتی که کد روشن و یا خاموش شدن WiFi را نوشته اید، اشکال پیش آمده است.

این خطا به این دلیل است که اپلیکیشن ما با این کدهایی که تا اینجا برای آن نوشتیم، دسترسی به شبکه وای فای را ندارد.

برای دادن دسترسی به اپلیکیشن مورد نظر، مسیر app -> manifests -> AndroidManifest.xml را بروید.

سپس کدهای زیر را قبل از تگ <application بنویسید.

کد های زیر دسترسی برنامه به وضعیت WiFi، به اینترنت و دسترسی به تغییر وضعیت WiFi را می دهند.

<uses-permission  android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission  android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

کد کامل AndroidManifests

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gsm_developers.wifi_gsm">
    <uses-permission  android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission  android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

خروجی به این شکل است.

با خاموش و یا روشن کردن وای فای، از طریق Toast به کاربر اطلاع داده می شود. و چون کد Toast بعد از کد روشن و خاموش کردن وای فای نوشته شده است، پس اگر در دستگاه شبیه ساز آن را تست می کنید می توانید مطمئن باشید که اپلیکیشن شما به درستی کار می کند.