بررسی اتصال به وایفا / دیتا در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به بررسی اتصال به وایفا / دیتا در برنامه نویسی اندروید می پردازیم یعنی تشخیص می دهیم که کاربر به شبکه موبایلی خود (Mobile Data) متصل است یا به شبکه Wifi در ادامه با ما همراه باشید.
برای اینکه این بررسی ها انجام بشود نیاز به سه دسترسی داریم
پس وارد فایل AndroidManifest.xml شده و دسترسی های زیر را اضافه کنید.
1 2 3 | <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> |
بعد از اضافه کردن دسترسی ها وارد layout خود شده در اینجا نام آن برابر با activity_main.xml است و کد زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <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" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="177dp" android:text="Connected NetWork Show Here" android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="25dp" android:text="Check It !" /> </RelativeLayout> |
در بالا یک دکمه برای انجام عمل و یک TextView برای نمایش اینکه به چه نوع از شبکه وصل شده (که یا wifi و یا Data)
پس وارد اکتیویتی خودتان شده در اینجا نام آن برابر با MainActivity.java است و کد زیر را قرار دهید.
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 | package ir.programchi; import android.app.Activity; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { Button btn; TextView txtview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.button1); txtview = (TextView)findViewById(R.id.textView1); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ConnectivityManager connectivitymanager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] networkInfo = connectivitymanager.getAllNetworkInfo(); for (NetworkInfo netInfo : networkInfo) { if (netInfo.getTypeName().equalsIgnoreCase("WIFI")) if (netInfo.isConnected()) txtview.setText("Connected to WiFi"); if (netInfo.getTypeName().equalsIgnoreCase("MOBILE")) if (netInfo.isConnected()) txtview.setText("Connected to Mobile Data"); } } }); } } |
از ConnectivityManager برای به دست آوردن نوع شبکه استفاده کردیم البته خود ConnectivityManager به تنهایی چیزی را به ما نمی دهد باید از آن یک Instance گرفته و سپس از ویزگی های آن استفاده کنیم در اینجا از ویژگی getAllNetworkInfo برای دیافت تمامی اطلاعات مربوط به network استفاده کردیم و با استفاده از یک حلقه بررسی کردیم که آیا نوع آن برابر با Wifi است یا Data .
این آموزش هم به پایان رسید.
موفق باشید.
سلام اگه بخوام یک چیزی شبیه listener ایجاد کنم که همیشه گوش به زنگ باشه تا اینترنت قطع شد کد هاش اجرا بشه؟؟؟
روش چک کردن هر ثانیه هم که بهینه نیست :/
سلام باید از سرویس استفاده کنید. از لینک زیر استفاده کنید.
https://programchi.ir/2017/08/09/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b3%d8%b1%d9%88%db%8c%d8%b3-service-%d8%af%d8%b1-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%a7%d9%86%d8%af%d8%b1%d9%88%db%8c%d8%af/
موفق باشید.