هیچ دوره ای در سبد آموزش شما وجود ندارد
برنامه اتصال به شبکه اندروید
صفحه نخستاندروید به اپلیکیشن های شما اجازه می دهد تا به اینترنت یا هر شبکه ی عمومی دیگر متصل شده و عملکردهای مختلف شبکه انجام دهید.
یک دستگاه اندروید می تواند انواع مختلفی از اتصال شبکه را داشته باشد. این مقاله بر روی wi-fi و یا اتصال شبکه موبایل تمرکز می کند.
چک کردن اتصال شبکه در اندروید
قبل از اینکه شما عملکردی را در شبکه اجرا کنید ، باید چک کنید که آیا به شبکه و یا اینترنت متصل هستید یا نه. برای این کار اندروید کلاس ConnectivityManager را ارائه می دهد.
لازم است که یک آبجکت از این کلاس را با فراخوانی متد ()getSystemService به عنوان نمونه قرار دهید.
سینتکس آن مانند زیر می باشد :
ConnectivityManager check = (ConnectivityManager) this.context.getSystemService(Context.CONNECTIVITY_SERVICE);
زمانی که شما آبجکت کلاس ConnectivityManager را به عنوان نمونه قرار دادید، می توانید از متد getAllNetworkInfo برای گرفتن اطلاعات همه ی شبکه ها استفاده کنید. این متد آرایه ای از اطلاعات شبکه (Networkinfo) را گزارش می دهد.
بنابراین باید آن را به این شکل دریافت کنید :
NetworkInfo[] info = check.getAllNetworkInfo();
آخرین کاری که باید انجام دهید این است که Connected State (وضعیت اتصال) مربوط به شبکه را چک کنید، که سینتکس آن به این شکل می باشد :
for (int i = 0; i<info.length; i++){ if (info[i].getState() == NetworkInfo.State.CONNECTED){ Toast.makeText(context, "Internet is connected Toast.LENGTH_SHORT).show(); } }
انجام عملیات شبکه :
پس از اینکه وضعیت اتصال به اینترنت را بررسی کردید می توانید هر عملیات مربوط به شبکه را انجام دهید .
در اینجا کد html وبسایت را از URL استخراج می کنیم . کلاس HttpURLConnection و URL امکانات لازم برای انجام این عملیات را فراهم می کند.
شما باید با ایجاد لینک وبسایت ، یک شی از کلاس URL ایجاد کنید . سینتکس آن به صورت زیر است :
String link = "http://www.google.com"; URL url = new URL(link);
پس از آن ، باید از متد openConnection کلاس url را فراخوانی کنید و آن را در یک شی HttpURLConnection دریافت کنید . پس از آن نیاز به فراخوانی متد connect از کلاس HttpURLConnection خواهید داشت .
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect();
آخرین چیزی که نیاز است انجام دهید HTML را از سایت بگیرید .برای تحقق آن کلاس های InputStream وBufferedReader خواهید داشت .
InputStream is = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String webPage = "",data=""; while ((data = reader.readLine()) != null){ webPage += data + "\n"; }
چک کردن اتصال اپلیکیشن به اینترنت در اندروید
اندروید به اپلیکیشن های شما اجازه می دهد تا به اینترنت یا هر شبکه ی عمومی دیگر متصل شده و عملکردهای مختلف شبکه انجام دهید.
یک دستگاه اندروید می تواند انواع مختلفی از اتصال شبکه را داشته باشد. این مقاله بر روی wi-fi و یا اتصال شبکه موبایل تمرکز می کند.
چک کردن اتصال شبکه در اندروید:
قبل از اینکه شما عملکردی را در شبکه اجرا کنید ، باید چک کنید که آیا به شبکه و یا اینترنت متصل هستید یا نه. برای این کار اندروید کلاس ConnectivityManager را ارائه می دهد.
لازم است که یک آبجکت از این کلاس را با فراخوانی متد ()getSystemService به عنوان نمونه قرار دهید.
سینتکس آن مانند زیر می باشد :
ConnectivityManager check = (ConnectivityManager) this.context.getSystemService(Context.CONNECTIVITY_SERVICE);
زمانی که شما آبجکت کلاس ConnectivityManager را به عنوان نمونه قرار دادید، می توانید از متد getAllNetworkInfo برای گرفتن اطلاعات همه ی شبکه ها استفاده کنید. این متد آرایه ای از اطلاعات شبکه (Networkinfo) را گزارش می دهد.
بنابراین باید آن را به این شکل دریافت کنید :
NetworkInfo[] info = check.getAllNetworkInfo();
آخرین کاری که باید انجام دهید این است که Connected State (وضعیت اتصال) مربوط به شبکه را چک کنید، که سینتکس آن به این شکل می باشد :
for (int i = 0; i<info.length; i++){ if (info[i].getState() == NetworkInfo.State.CONNECTED){ Toast.makeText(context, "Internet is connected Toast.LENGTH_SHORT).show(); } }
انجام عملیات شبکه :
پس از اینکه وضعیت اتصال به اینترنت را بررسی کردید می توانید هر عملیات مربوط به شبکه را انجام دهید .
در اینجا کد html وبسایت را از URL استخراج می کنیم . کلاس HttpURLConnection و URL امکانات لازم برای انجام این عملیات را فراهم می کند.
شما باید با ایجاد لینک وبسایت ، یک شی از کلاس URL ایجاد کنید . سینتکس آن به صورت زیر است :
String link = "http://www.google.com"; URL url = new URL(link);
پس از آن ، باید از متد openConnection کلاس url را فراخوانی کنید و آن را در یک شی HttpURLConnection دریافت کنید . پس از آن نیاز به فراخوانی متد connect از کلاس HttpURLConnection خواهید داشت .
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect();
آخرین چیزی که نیاز است انجام دهید HTML را از سایت بگیرید .برای تحقق آن کلاس های InputStream وBufferedReader خواهید داشت.
InputStream is = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String webPage = "",data=""; while ((data = reader.readLine()) != null){ webPage += data + "\n"; }
علاوه بر این متد ها , متد های دیگری نیز برای کلاس HttpURLConnection در دسترس است که به شرح زیر است :
شماره | متد و توضیحات |
1 | ()disconnect
این متد اتصال را آزاد می کند تا منابع بتوانند دوباره استفاده شوند یا اینکه در نهایت بسته شوند. |
2 | ()getRequestMethod
این متد ، متد درخواستی را که برای اتصال به سرور remote HTTP مورد استفاده می سازد مشخص می کند. |
3 | ()getResponseCode
این متد پاسخی که توسط سرور HTTP ارسال می شود را return می کند. |
4 | (setRequestMethod(String method
این متد دستور (command) درخواست ، که به سرور HTTP راه دور ارسال میشود را تنظیم می کند. |
5 | ()usingProxy
این متد نشان می دهد که آیا اتصال از یک پروکسی سرور استفاده می کند یا خیر . |
مثال
مثال زیر نحوه ی استفاده از کلاس HttpURLConnection را تبیین می کند. این اپلیکیشن به شما اجازه می دهد کد HTML را از وبسایت استخراج کنید .
این مثال را باید روی یک دستگاه واقعی که به اینترنت متصل است تست کنید .
مرحله | توضیحات |
1 | مراحل ایجاد برنامه در اندروید استدیو را طبق بخش های قبلی تحت عنوان پکیج com.example.Connection.myapplication دنبال کنید. |
2 | به محتوای فایل src/MainActivity.java کد Activity را اضافه کنید. |
4 | طراحی مناسب با این برنامه را به res/layout/activity_main اضافه کنید. |
6 | مجوز های لازم را در فایل AndroidManifest.xml تعریف کنید. |
7 | برنامه را اجرا کنید تا دستگاه اندروید شما نتیجه را نمایش دهد. |
محتوای فایل src/MainActivity.java :
package com.tutorialspoint.myapplication; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.ConnectivityManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.Toast; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class MainActivity extends ActionBarActivity { private ProgressDialog progressDialog; private Bitmap bitmap = null; Button b1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b1 = (Button) findViewById(R.id.button); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { checkInternetConenction(); downloadImage("http://www.tutorialspoint.com/green/images/logo.png"); } }); } private void downloadImage(String urlStr) { progressDialog = ProgressDialog.show(this, "", "Downloading Image from " + urlStr); final String url = urlStr; new Thread() { public void run() { InputStream in = null; Message msg = Message.obtain(); msg.what = 1; try { in = openHttpConnection(url); bitmap = BitmapFactory.decodeStream(in); Bundle b = new Bundle(); b.putParcelable("bitmap", bitmap); msg.setData(b); in.close(); }catch (IOException e1) { e1.printStackTrace(); } messageHandler.sendMessage(msg); } }.start(); } private InputStream openHttpConnection(String urlStr) { InputStream in = null; int resCode = -1; try { URL url = new URL(urlStr); URLConnection urlConn = url.openConnection(); if (!(urlConn instanceof HttpURLConnection)) { throw new IOException("URL is not an Http URL"); } HttpURLConnection httpConn = (HttpURLConnection) urlConn; httpConn.setAllowUserInteraction(false); httpConn.setInstanceFollowRedirects(true); httpConn.setRequestMethod("GET"); httpConn.connect(); resCode = httpConn.getResponseCode(); if (resCode == HttpURLConnection.HTTP_OK) { in = httpConn.getInputStream(); } }catch (MalformedURLException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } return in; } private Handler messageHandler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); ImageView img = (ImageView) findViewById(R.id.imageView); img.setImageBitmap((Bitmap) (msg.getData().getParcelable("bitmap"))); progressDialog.dismiss(); } }; private boolean checkInternetConenction() { // get Connectivity Manager object to check connection ConnectivityManager connec =(ConnectivityManager)getSystemService(getBaseContext().CONNECTIVITY_SERVICE); // Check for network connections if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED || connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING || connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING || connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) { Toast.makeText(this, " Connected ", Toast.LENGTH_LONG).show(); return true; }else if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED ) { Toast.makeText(this, " Not Connected ", Toast.LENGTH_LONG).show(); return false; } return false; } }
محتوای فایل activity_main.xml :
<?xml version="1.0" encoding="utf-8"?> <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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="UI Animator Viewer" android:id="@+id/textView" android:textSize="25sp" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point" android:id="@+id/textView2" android:layout_below="@+id/textView" android:layout_alignRight="@+id/textView" android:layout_alignEnd="@+id/textView" android:textColor="#ff36ff15" android:textIsSelectable="false" android:textSize="35dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:layout_below="@+id/textView2" android:layout_centerHorizontal="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:id="@+id/button" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:layout_marginTop="76dp" /> </RelativeLayout>
محتوای فایل Strings.xml :
<resources> <string name="app_name">My Application</string> </resources>
محتوای فایل AndroidManifest.xml :
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tutorialspoint.myapplication" > <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".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> </application> </manifest>
می خواهیم اپلیکیشن را اجرا کنیم . فرض می کنیم که دستگاه شما به کامپیوتر متصل است. برای اجرای اپلیکیشن از اندروید استودیو استفاده کنید و پروژه ی اصلی اکتیویتی را باز کنید . روی آیکون Run از نوار ابزار کلیک کنید .
قبل از شروع اپلیکیشن در اندروید استودیو ، پنجره ی زیر برای تعیین محل اجرای اپلیکیشن نمایش داده خواهد شد:
از پنجره ی فوق دستگاه موبایل خود را انتخاب نمائید تا صفحه زیر را مشاهده کنید:
حالا روی دکمه button کلیک کنید تا ابتدا اتصال اینترنت چک شده و تصویر مربوطه از آدرس مشخص شده دانلود شود:
در نهایت خروجی به شرح زیر است و تصویر از اینترنت دریافت می شود: