اتصال به اینترنت در برنامه نویسی اندروید
اتصال به اینترنت در برنامه نویسی اندروید
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، در مورد اتصال به اینترنت در برنامه نویسی اندروید صحبت خواهیم کرد.
اندروید به شما امکان می دهد تا به اینترنت یا هر شبکه محلی دیگری متصل شود و به شما امکان می دهد عملیات شبکه را انجام دهید.
یک دستگاه می تواند انواع مختلفی از اتصالات شبکه را داشته باشد. این درس اتصال به اینترنت در برنامه نویسی اندروید بر استفاده از Wi-Fi یا اتصال شبکه تلفن همراه متمرکز است.
بررسی اتصال شبکه
قبل از انجام هرگونه عملیات شبکه، ابتدا باید بررسی کنید که به آن شبکه یا اینترنت متصل هستید. برای این اندروید کلاس ConnectivityManager را فراهم می کند. شما باید با فراخوانی متد ()getSystemService یک شی از این کلاس را نمونه سازی کنید. نحو آن در زیر آورده شده است:
1 2 |
ConnectivityManager check = (ConnectivityManager) this.context.getSystemService(Context.CONNECTIVITY_SERVICE); |
هنگامی که کلاس ConnectivityManager را پیاده سازی کردید، می توانید از متد getAllNetworkInfo برای به دست آوردن اطلاعات همه شبکه ها استفاده کنید.
این روش آرایه ای از NetworkInfo را برمی گرداند. بنابراین شما باید آن را اینگونه دریافت کنید.
1 |
NetworkInfo[] info = check.getAllNetworkInfo(); |
آخرین کاری که باید انجام دهید بررسی وضعیت اتصال شبکه است. نحو آن در زیر آورده شده است:
1 2 3 4 5 6 |
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(); } } |
به غیر از این حالت های اتصال، حالت های دیگری نیز وجود دارد که یک شبکه می تواند به آنها دست یابد. آنها در زیر ذکر شده اند:
شماره ردیف | حالت |
---|---|
1 | Connecting |
2 | Disconnected |
3 | Disconnecting |
4 | Suspended |
5 | Unknown |
انجام عملیات شبکه
پس از بررسی اتصال به اینترنت، می توانید هرگونه عملیات شبکه را انجام دهید. در اینجا ما html یک وب سایت را از یک url دریافت می کنیم.
اندروید برای مدیریت عملیات فوق کلاس HttpURLConnection و URL را فراهم می کند. شما باید با ارائه لینک وب سایت، یک شی از کلاس URL را پیاده سازی کنید. نحو آن به شرح زیر است:
1 2 |
String link = "http://www.google.com"; URL url = new URL(link); |
پس از آن شما باید با متد openConnection کلاس url را فراخوانی کرده و آن را در یک شی H HttpURLConnection دریافت کنید. بعد از آن شما باید متد اتصال کلاس HttpURLConnection را فراخوانی کنید.
1 2 |
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect(); |
1 2 3 4 5 6 7 |
InputStream is = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String webPage = "",data=""; while ((data = reader.readLine()) != null){ webPage += data + "\n"; } |
به غیر از این متد اتصال، در کلاس اتصال HttpURLC متد های دیگری نیز وجود دارد. آنها در زیر ذکر شده اند:
- ()disconnect
این متد این اتصال را قطع می کند تا منابع آن دوباره مورد استفاده قرار گیرند یا بسته شوند
- ()getRequestMethod
این متد روش درخواست را که برای درخواست به سرور HTTP remote استفاده می شود، برمی گرداند
- ()getResponseCode
این متد کد پاسخ بازگشت داده شده توسط سرور HTTP remote را برمی گرداند
- (setRequestMethod(String method
این متد دستور درخواست را که به سرور HTTP remote ارسال می شود را تنظیم می کند
- ()usingProxy
این متداز اینکه این اتصال از سرور پروکسی استفاده کند یا خیر را مشخص میکند
مثال
مثال زیر استفاده از کلاس اتصال HttpURLC را نشان می دهد. این برنامه به شما امکان می دهد HTML را از یک صفحه وب مشخص دانلود کنید.
برای آزمایش این مثال، باید این مورد را روی دستگاه واقعی که اینترنت wifi به آن متصل است، اجرا کنید.
شرح مراحل
1- شما برای ایجاد یک برنامه اندروید تحت یک پکیج com.tutorialspoint.myapplication از Android studio IDE استفاده خواهید کرد.
2- برای افزودن کد فعالیت، پرونده src / MainActivity.java را تغییر دهید.
4- تغییر طرح فایل XML res / layout / activity_main.xml در صورت لزوم ، هر جز GUI اضافه کنید.
6- برای افزودن مجوزهای لازم، AndroidManifest.xml را تغییر دهید.
7- برنامه را اجرا کنید و دستگاه اندرویدی در حال اجرا را انتخاب کنید و برنامه را روی آن نصب کنید و نتایج را بررسی کنید.
در اینجا محتوای src / 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 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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
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 است
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 |
<?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 وجود دارد.
1 2 3 |
<resources> <string name="app_name">My Application</string> </resources> |
در اینجا محتوای AndroidManifest.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 25 |
<?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> |
بیایید برنامه خود را اجرا کنیم! من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی کلیک کنید. Android Studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد، زیر پنجره شبیه ساز نمایش داده می شود.
دستگاه همراه خود را به عنوان گزینه انتخاب کنید و سپس دستگاه همراه خود را که در زیر صفحه نمایش داده می شود بررسی کنید
حالا فقط روی دکمه کلیک کنید ، این اتصال به اینترنت و همچنین دانلود تصویر را بررسی می کند
در نهایت خروجی به شرح زیر است و تصویر از اینترنت دریافت می شود
لیست جلسات قبل آموزش برنامه نویسی اندروید
- نگاهی کلی به برنامه نویسی اندروید
- تنظیمات محیط در برنامه نویسی اندروید
- معماری برنامه نویسی اندروید
- اجزای برنامه در برنامه نویسی اندروید
- Hello World در برنامه نویسی اندروید
- سازماندهی و دسترسی به منابع در برنامه نویسی اندروید
- فعالیت در برنامه نویسی اندروید
- سرویس در برنامه نویسی اندروید
- گیرنده های پخش در برنامه نویسی اندروید
- ارائه دهنده محتوا در برنامه نویسی اندروید
- قطعات در برنامه نویسی اندروید
- Intent و فیلتر در برنامه نویسی اندروید
- طرح بندی رابط کاربری در برنامه نویسی اندروید
- کنترل های رابط کاربری در برنامه نویسی اندروید
- مدیریت رویدادها در برنامه نویسی اندروید
- استایل و تم ها در برنامه نویسی اندروید
- اجزای سفارشی در برنامه نویسی اندروید
- کشیدن و رها کردن در برنامه نویسی اندروید
- نوتیفیکیشن ها در برنامه نویسی اندروید
- سرویس های مبتنی بر مکان در برنامه نویسی اندروید
- ارسال ایمیل در برنامه نویسی اندروید
- ارسال پیامک در برنامه نویسی اندروید
- تماس های تلفنی در برنامه نویسی اندروید
- انتشار برنامه اندروید
- آموزش Alert Dialog در برنامه نویسی اندروید
- انیمیشن در برنامه نویسی اندروید
- ضبط صدا در برنامه نویسی اندروید
- مدیریت صدا در برنامه نویسی اندروید
- آموزش Auto Complete در برنامه نویسی اندروید
- بهترین شیوه ها در برنامه نویسی اندروید
- بلوتوث در برنامه نویسی اندروید
- استفاده از دوربین در برنامه نویسی اندروید
- کلیپ بورد در برنامه نویسی اندروید
- فونت سفارشی در برنامه نویسی اندروید
- پشتیبان گیری از داده ها در برنامه نویسی اندروید
- ابزارهای توسعه دهنده در برنامه نویسی اندروید
- آموزش شبیه ساز در برنامه نویسی اندروید
- اتصال به فیس بوک در برنامه نویسی اندروید
- حرکات لمسی در برنامه نویسی اندروید
- آموزش گوگل مپ در برنامه نویسی اندروید
- افکت های تصویر در برنامه نویسی اندروید
- Image Switcher در برنامه نویسی اندروید
- حافظه داخلی در برنامه نویسی اندروید
- آموزش کار با JetPlayer در برنامه نویسی اندروید
- JSON Parser در برنامه نویسی اندروید
- ارتباط با LinkedIn در برنامه نویسی اندروید
- نوار پیشرفت Spinner در برنامه نویسی اندروید
- بومی سازی در برنامه نویسی اندروید
- صفحه Login در برنامه نویسی اندروید
- MediaPlayer در برنامه نویسی اندروید
- Multitouch در برنامه نویسی اندروید
- Navigation در برنامه نویسی اندروید
دیدگاه شما