tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            آموزش اندروید فصل پنجم قسمت اول – SMS,Thread,HTTP

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • آموزش اندروید فصل پنجم قسمت اول – SMS,Thread,HTTP
            کانال تلگرام تجاری اپ
            کانال تلگرام تجاری اپ
            21 مهر 1395
            آموزش اندروید فصل پنجم قسمت اول – SMS,Thread,HTTP
            آموزش اندروید فصل پنجم قسمت دوم – انتشار برنامه اندروید
            7 آبان 1395
            منتشر شده توسط خانم منطق
            آموزش اندروید فصل پنجم قسمت اول – SMS,Thread,HTTP

            آموزش اندروید فصل پنجم قسمت اول – SMS,Thread,HTTP

            در قسمت اول فصل پنجم آموزش اندروید ما سه مبحث SMS ها و اجرای Thread ها در پس زمینه و اتصال برنامه به اینترنت را درون یک پروژه قرار میدهیم و نحوه کارشان را بررسی میکنیم

            آموزش اندروید فصل پنجم قسمت اول – SMS,Thread,HTTP

            توجه : برای مشاهده تصاویر در سایز اصلی برروی آنها کلیک کنید.

            Sms , Thread , Http

            در این قسمت یک پروژه حاوی سه Button که هرکدام عملیاتی در مباحث Sms , Thread , Http انجام میدهند ایجاد کرده ایم تا بیشتر با این مباحث کاربردی آشنا شویم.

            پس شروع میکنیم و یک پروژه با نام دلخواه که ما از Utility استفاده کردیم ایجاد میکنیم

            و در فایل activity_main.xml سه دکمه ایجاد میکنیم

            .

             

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Click to send sms"
                android:id="@+id/btnsms"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="77dp" />
            
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="click to fake thread"
                android:id="@+id/btnthread"
                android:layout_below="@+id/btnsms"
                android:layout_centerHorizontal="true" />
            
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="click to download an image"
                android:id="@+id/btndownloadimage"
                android:layout_below="@+id/btnthread"
                android:layout_centerHorizontal="true" />
            

            (مثل تمرین های قبل به صورت گرافیکی دکمه هارا ایجاد کنید و زحمت کدنویسی رو نکشید)حال به ترتیب برای هردکمه عملیاتش را تعریف میکنیم ابتدا دکمه SMS :

            برای این دکمه یک اکتیویتی و یک فایل xml ایجاد میکنیم فایل xml شامل اجزا زیر است

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/txtphonenumber"
                android:layout_below="@+id/textView2"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />
            
            <Button
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Send Sms with Intent"
                android:id="@+id/sendsms"
                android:nestedScrollingEnabled="false"
                android:layout_gravity="center_horizontal"
                android:layout_below="@+id/txtsendwithintent"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="46dp" />
            
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Back"
                android:id="@+id/btnback"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true" />
            
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Phone Number"
                    android:id="@+id/edittext"
                    android:layout_alignParentTop="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_toLeftOf="@+id/sendsms"
                    android:layout_toStartOf="@+id/sendsms" />
            
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Text of SMS"
                    android:id="@+id/textView"
                    android:layout_below="@+id/txtphonenumber"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true" />
            
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/txtsmstext"
                    android:layout_below="@+id/textView"
                    android:layout_toRightOf="@+id/edittext"
                    android:layout_toEndOf="@+id/edittext" />
            
                <Button
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Send Sms without Intent"
                    android:id="@+id/btnsendwithoutintent"
                    android:nestedScrollingEnabled="false"
                    android:layout_gravity="center_horizontal"
                    android:layout_below="@+id/sendsms"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true" />
            
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Phone Number"
                    android:id="@+id/textView2"
                    android:layout_alignParentTop="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true" />
            

            و  فایل جاوا برنامه نیز از دونوع ارسال Sms استفاده میکند (یکی با استفاده از اینتنت ها  و دیگری بدون استفاده از اینتنت)

            .

             

            package com.tejariapp.utility;
            
            
            import android.app.Activity;
            import android.content.Intent;
            import android.net.Uri;
            import android.os.Bundle;
            import android.telephony.SmsManager;
            import android.view.View;
            import android.widget.Button;
            import android.widget.EditText;
            import android.widget.Toast;
            
            public class SendSms extends Activity {
                public String fillnumber() {
                    EditText edtphone = (EditText) findViewById(R.id.txtphonenumber);
                    String phonenumber = edtphone.getText().toString();
                    return phonenumber;
                }
                public String filltext() {
                    EditText edttext = (EditText) findViewById(R.id.txtsmstext);
                    String text = edttext.getText().toString();
                    return text;
                }
                    @Override
                    protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        setContentView(R.layout.sms_layout);
            
                        Button  btn = (Button) findViewById(R.id.btnsendwithintent);
                        btn.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                Intent sms = new Intent(Intent.ACTION_VIEW);
                                sms.setData(Uri.parse("smsto:"));
                                sms.setType("vnd.android-dir/mms-sms");
                                sms.putExtra("address", fillnumber());
                                sms.putExtra("sms_body",filltext());
                                try {
                                    startActivity(sms);
                                    finish();
                                    Toast.makeText(SendSms.this, "Sms has been Send", Toast.LENGTH_SHORT).show();
            
                                } catch (android.content.ActivityNotFoundException ex) {
                                    Toast.makeText(SendSms.this, "Faild to Send Sms", Toast.LENGTH_SHORT).show();
                                }
                            }
                        });
            
                        Button btnsintent=(Button)findViewById(R.id.btnsendwithoutintent);
                        btnsintent.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                SmsManager sms=SmsManager.getDefault();
                                sms.sendTextMessage(fillnumber(),null,filltext(),null,null);
                                Toast.makeText(SendSms.this,
             "Sms has been Send Check Messages", Toast.LENGTH_SHORT).show();
                            }
                        });
            
            
                        Button btnback=(Button)findViewById(R.id.btnback);
                        btnback.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                Intent intent = new Intent(SendSms.this, MainActivity.class);
                                startActivity(intent);
                            }
                        });
            
            
                    }
            }
            

            همانگونه که مشخص است در روش ارسال  پیام با اینتنت از یک شی اینتنت و از putExtra برای مشخص کردن متن و شماره استفاده شده و در نتیجه نیز برنامه Sms درون دستگاه اندروید با مشخصاتی که در این برنامه(درون EditText ها) مشخص میشود نمایش داده میشود

            .

            آموزش اندروید فصل پنجم-قسمت اول

            و در روش ارسال بدون اینتنت , خود برنامه پیام را ارسال میکند و دیگر از برنامه sms درون دستگاه استفاده نمیکن(بهتر است از یک دستگاه اندرورید به جای شبیه ساز های کامپیوتر استفاده کنید)

            آموزش اندروید فصل پنجم-قسمت اول

            فراموش نکنید که در فایل manifest برنامه نیز باید این کلاس جاوا و همچنین مجوز استفاده از برنامه Sms درون دستگاه را تعریف کنیم بدین صورت

            <uses-permission android:name="android.permission.SEND_SMS" />
            
            <activity android:name=".SendSms"
                android:label="@string/app_name" />
            

            دکمه دوم در فایل xml اصلی مربوط به یک Thread ساختگی یا fake میباشد و هدف تنها آشنایی بیشتر با این سیستم است.نکته اصلی در استفاده از سرویس ها پشتیبانی کلاس جاوا از کلاس Service است و همچنین نحوه مشخص  کردن این کلاس در manifest برنامه است که بدین صورت نوشته میشود

            <service android:name=".Thread"/>
            

             ودرون کلاس این سرویس نیز که هدف اصلی آن اجرای سرویس در پس زمینه میباشد چنین کدنویسی میکنیم

            .

             

            package com.tejariapp.utility;
            
            
            import android.app.Service;
            import android.content.Intent;
            import android.os.AsyncTask;
            import android.os.IBinder;
            import android.widget.Toast;
            
            import java.net.MalformedURLException;
            import java.net.URL;
            
            import static android.widget.Toast.LENGTH_SHORT;
            
            public class Thread extends Service {
            
                @Override
                public IBinder onBind(Intent intent) {
                    return null;
                }
            
            
                @Override
                public int onStartCommand(Intent intent, int flags,int startId){
                   /* int result=DownloadFile();
                    Toast.makeText(Thread.this, "Doenload" + result + "byte", Toast.LENGTH_SHORT).show();*/
                    try{
                        new DoBackgroundTask().execute(
                                new URL("http://www.amazon.com/file.pdf"),
                                new URL("http://www.amazon.com/file.pdf"),
                                new URL("http://www.amazon.com/file.pdf"),
                                new URL("http://www.amazon.com/file.pdf")
                        );
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    }
                    return START_STICKY;
                }
               private int DownloadFile(URL url) {
                   try {
                       java.lang.Thread.sleep(5000);
                   } catch (InterruptedException e) {
                       e.printStackTrace();
                   }
                   return 100;
               }
            
                private class DoBackgroundTask extends AsyncTask<URL,Integer,Long>{
                    protected Long doInBackground(URL... urls){
                        int count=urls.length;
                        long totalByteDownload=0;
                        for(int i=0;i<count;i++){
                            totalByteDownload +=DownloadFile(urls[i]);
                            publishProgress((int) (((i+1)/(float)count)*100));
                        }
                        return totalByteDownload;
                    }
                    protected void onProgressUpdate(Integer... progress){
                        Toast.makeText(Thread.this,
             String.valueOf(progress[0]) + "% downloaded", Toast.LENGTH_SHORT).show();
                    }
                    protected void onPostExecute(Long result){
                        Toast.makeText(Thread.this, "Doenload" + result + "byte", Toast.LENGTH_SHORT).show();
                        stopSelf();
                    }
                }
                @Override
                public void onDestroy(){
                    super.onDestroy();
                    Toast.makeText(Thread.this, "Servic Destroy", LENGTH_SHORT).show();
                }
            }
            

            همانگونه که مشاهده میکنید ما از یک کلاس درونی که از AsyncTask پشتیبانی میکند استفاده کرده ایم تا قابلیت اجرای سرویس در پس زمینه بدون کنترل مستقیم کاربر را به ما بدهد و سه ژنریک URL ,Integer , Long که نوع های داده های مورد استفاده در سه متد را مشخص میکنند.

            برای توضیح هر متد میتوان کوتاه گفت متد doInBackground براساس تعداد Url هایی که دریافت میکند عملیات زمان بری را اجرا میکند در این بخش از متد publishProgress استفاده شده که برای گزارش پیشرفت استفاده میشود و همچنین در ادامه متد onProgressUpdate را فراخوانی میکند.

            متد onProgressUpdate که توسط متد publishProgress فراخوانی میگردد برای نمایش پیشرفت سرویس به کار بکار میرود.

            متد onPostExecute زمانی اجرا میشود که متد doInBackground کارش تمام شده باشد مقدار بایتی که دانلود شده را در انتها به کاربر نمایش میدهد.

            و در انتها نیز متد onDestroy اجرا میشود.

            (این بخش نیازی به فایل xml نداشت چون نتایح بصورت پیغام Toast به کاربر نمایش داده شد)

            .

            115

            و کلید اخر که کلید دانلود تصویر میباشد و هدف وارد کردن یک url تصویر و دیدن تصویر در یک ImageView میباشد.پس یک فایل جاوا و یک xml ایجاد میکنیم و درون فایل xml ابزارهای زیر را ایجاد میکنیم

            .

             

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Enter an Url"
                android:id="@+id/textView3"
                android:layout_gravity="left|center_horizontal" />
            
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/txturl" />
            
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="show image"
                android:id="@+id/btnshow" />
            
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/img1"/>
            

            و در فایل جاوا نیز چنین کدنویسی میکنیم

            package com.tejariapp.utility;
            
            
            import android.app.Activity;
            import android.graphics.Bitmap;
            import android.graphics.BitmapFactory;
            import android.os.AsyncTask;
            import android.os.Bundle;
            import android.view.View;
            import android.widget.Button;
            import android.widget.EditText;
            import android.widget.ImageView;
            import android.widget.Toast;
            
            import java.io.IOException;
            import java.io.InputStream;
            import java.net.HttpURLConnection;
            import java.net.URL;
            import java.net.URLConnection;
            
            public class DownloadImage extends Activity {
                ImageView img;
            
                private InputStream OpenHttpConnection(String urlstring)throws IOException{
                    InputStream in=null;
                    int response=-1;
            
                    URL url=new URL(urlstring);
                    URLConnection con=url.openConnection();
            
                    if(!(con instanceof HttpURLConnection)){
                        throw new IOException("Not a Http Connection");
                    }
                    try{
                        HttpURLConnection httpcon=(HttpURLConnection) con;
                        httpcon.setAllowUserInteraction(false);
                        httpcon.setInstanceFollowRedirects(true);
                        httpcon.setRequestMethod("GET");
                        httpcon.connect();
                        response=httpcon.getResponseCode();
                        if(response == HttpURLConnection.HTTP_OK){
                            in=httpcon.getInputStream();
                        }
                    }catch (Exception e){
                        throw new IOException("Error Connectiong");
                    }
                    return in;
                }
            
            
                private Bitmap Download(String url){
                    Bitmap bitmap=null;
                    InputStream in=null;
                    try{
                        in = OpenHttpConnection(url);
                        bitmap= BitmapFactory.decodeStream(in);
                        in.close();
                    } catch (IOException e) {
                        e.getLocalizedMessage();
                    }
                    return  bitmap;
                }
            
                private class DownloadImageTask extends AsyncTask<String, Void,Bitmap>{
                    protected Bitmap doInBackground(String... urls){
                        return Download(urls[0]);
                    }
                    protected void onPostExecute(Bitmap result){
                        img=(ImageView)findViewById(R.id.img1);
                        img.setImageBitmap(result);
                    }
                }
            
                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.download_layout);
            
                    Button btn=(Button)findViewById(R.id.btnshow);
                    btn.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            EditText url=(EditText)findViewById(R.id.txturl);
                            new DownloadImageTask().execute(url.getText().toString());
                        }
                    });
            
                }
                }
            

            متد openHttpConnection که یک ورودی Url نیز دارد اقدام به برقراری ارتباط با سرور میکند  و یک شی InputStream را برمیگرداند.

            در ادامه متد Download که از متد openHttpConnection برای برقراری ارتباط استفاده میکند را مشاهده میکنید.همچنین در این متد از یک شی Bitmap که برای تبدیل اطلاعات دانلود شده به bitmap از متدdecodeStream  استفاده میکند در نهایت این شی را به خروجی ارسال میکند.

            .

            همانگونه که مشاهده میکنید دراین بخش نیز از کلاس AsyncTask استفاده شده.این کلاس این قابلیت را به ما میدهد تا یک کار را در یک Thread دیگر انجام میدهد و نتیجه را به thread رابط کاربری ارسال میکند.که شامل دو متد است  که عملیاتی که باید به صورت غیرهمزمان اجرا شود درون متد doInBackground قرار گرفته و زمان اتمام عملیات نتیجه ازطریق متد onPostExecute برگردانده میشود.

            برای فراخوانی متد DownloadImageTask نیز هنگام فشردن کلید show باید یک شی ازنوع کلاس مربوطه ایجاد کرده و متد execute را نیز فراخوانی میکنیم و url را ارسال میکنیم تا تصویر را درون imageView نمایش دهد.

            .

            فراموش نکنید که در فایل manifest برنامه باید مجوز استفاده از اینترنت و اکتیویتی را بدین صورت تعریف کنیم

            <uses-permission android:name="android.permission.INTERNET" />
            <activity android:name=".DownloadImage>
              <android:label="@string/app_name" />
            

            آموزش اندروید فصل پنجم-قسمت اول

            مدرس : خانم مهندس داودی نژاد

            آموزش اندروید فصل چهارم قسمت پنجم

            آموزش اندروید فصل پنجم قسمت دوم

            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            دیدگاهتان را بنویسید لغو پاسخ

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

            ساخت اپلیکیشن های موبایل

            • ساخت اپلیکیشن فروشگاهی
            • ساخت اپلیکشن ابزاری و خدماتی
            • ساخت اپلیکیشن آموزشی
            • و هزاران موضوع دیگر

             
            کلیک کنید

            آخرین دیدگاه ها

            • 9 اسفند 1401

              مهری اصغری نظر در پیاده سازی اولین پروژه با فلاتر Flutter

            • 26 آبان 1401

              سجاد نظر در پروژه مدیریت سیستم مدرسه با سی شارپ و sql server

            • 7 خرداد 1401

              داودی نظر در آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج