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

جلسه چهارم آموزش اندروید - Broadcast Receivers چیست؟


فرستنده های رادیو (Broadcast Receivers) به سادگی به پیام های برنامه های دیگر یا به پیام های سیستم خود پاسخ می دهند. 
این پیام ها بعد ها به نام رویداد (event) یا هدف (intent) نامگذاری و معرفی می شوند. مثلا ، اپلیکیشن ها می توانند پخش (broadcast) را شروع کنند تا اپلیکیشن های دیگر بدانند که برخی از داده ها توسط دستگاه بارگیری شده اند و برای آن ها در دسترس هستند ، بنابراین این گیرنده پخش است که این ارتباط را رهگیری می کند و اقدام مناسب را آغاز می کند.

تامین کنندگان محتوا به شما اجازه می دهند که محتوای مورد نیاز را در یک جا متمرکز کنید و اپلیکیشن های بسیاری بتوانند در صورت نیاز به آن دسترسی داشته باشند. رفتار یک تامین کننده­ ی محتوا بسیار شبیه به یک پایگاه داده است که شما می توانید با استفاده از متدهای ()query()،update() ، insert و ()delete بر روی آن پرس و جو ایجاد کنید، محتوای آن را ویرایش کنید و همچنین محتوای آن را اضافه یا حذف کنید.

یک مولفه تامین کننده­ ی محتوا (content providers)، در صورت درخواست، داده های یک اپلیکیشن را به سایر اپلیکیشن ها ارائه می دهد. این درخواست ها به وسیله­ ی متد هایی از کلاس ContentResolver اداره می شوند. یک تامین کننده ­ی محتوا می تواند از روش های مختلفی برای ذخیره ­ی داده های خود استفاده کند و داده می تواند در یک پایگاه داده، در فایل ها یا حتی بر روی یک شبکه ذخیره شود.

دو مرحله مهم برای ایجاد BroadcastReceiver وجود دارد :

  • ایجاد گیرنده پخش (Broadcast Receiver)

  • ثبت گیرنده پخش (Broadcast Receiver)

 

ایجاد گیرنده پخش (Broadcast Receiver) :

یک گیرنده پخش به عنوان یک زیر کلاس ، از کلاس BroadcastReceiver اجرا می شود و  متد ()onReceive ،  هر پیام را به عنوان پارامتر Intent object دریافت می کند. (یک ایجادکننده ی پخش باید مجموعه­ ی استانداردی از API ها را پیاده سازی کند که سایر اپلیکیشن ها را قادر به اجرای تراکنش ها می کند )

public class MyReceiver extends BroadcastReceiver {
   @Override
   public void onReceive(Context context, Intent intent) {
      Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
   }
}

 

ثبت گیرنده پخش (Registering Broadcast Receiver):

یک برنامه broadcast intent خاص با ثبت یک گیرنده پخش (Registering Broadcast Receiver)  ، فایل AndroidManifest.xml را می پذیرد. در نظر داشته باشید ما قصد داریم MyReceiver را برای رویداد تولید شده ACTION_BOOT_COMPLETED ثبت کنیم که بعد از اینکه سیستم Android فرآیند بوت را انجام داد، توسط سیستم خاتمه یابد .

 

 

<application
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@style/AppTheme" >
   <receiver android:name="MyReceiver">
   
      <intent-filter>
         <action android:name="android.intent.action.BOOT_COMPLETED">
         </action>
      </intent-filter>
   
   </receiver>
</application>

 

در حال حاضر هر زمان که دستگاه Android شما بوت می شود، توسط BroadcastReceiverMyReceiver متوقف می شود و متد ()inReceive  اجرا می شود.

چندين event به عنوان پايگاه هاي استاتيک نهایی وجود دارد که در Intent class تعریف می شود . جدول زیر چند رویداد (event) مهم سیستم را لیست می کند :

1) android.intent.action.BATTERY_CHANGED :

broadcast ،اطلاعات باتری از جمله وضعیت شارژ و سایر اطلاعات مربوط به باتری است.

2) android.intent.action.BATTERY_LOW :

وضعیت باتری را در شرایطی که شارژ آن در پایین ترین سطح است نشان میدهد.

3)android.intent.action.BATTERY_OKAY

نشان می دهد باتری در حال حاضر از لحاظ وضعیت شارژی خوب است ( این وضعیت پس از وضعیتی است که شارژ باتری به پایین ترین سطح رسیده )

4) android.intent.action.BOOT_COMPLETED :

این broadcast بعد از بوت شدن صورت می گیرد.

5)android.intent.action.BUG_REPORT

نمایش activity برای گزارش یک اشکال (bug)

6) android.intent.action.CALL

تماس با کسی که توسط داده ها مشخص شده باشد.

7)android.intent.action.CALL_BUTTON

کاربر بر روی دکمه "تماس" فشار میدهد تا به شماره گیر (dialer)  تماس برقرار کند.

8)android.intent.action.DATE_CHANGED

تاریخ تغییر کرده است.

9) android.intent.action.REBOOT

دستگاه را راه اندازی مجدد کنید.

 

Broadcasting Intents به صورت سفارشی :

 

اگر می خواهید خودتان اپلیکیشن خود را تولید و ارسال  کنید، باید با استفاده از متد ()sendBroadcast  در داخل کلاس activity خود، این اهداف را ایجاد و ارسال کنید. اگر از روش:

 sendStickyBroadcast (Intent) 

استفاده کنید، Intent باقی می ماند ، به این معنی که Intent ارسالی شما بعد از پخش باقی میماند.

public void broadcastIntent(View view) {
   Intent intent = new Intent();
   intent.setAction("com.clicksite.CUSTOM_INTENT");
   sendBroadcast(intent);
}

 

این intent :

 com.clicksite.CUSTOM_INTENT

 را نیز می توان با روش مشابه ثبت کرد :

<application
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@style/AppTheme" >
   <receiver android:name="MyReceiver">
   
      <intent-filter>
         <action android:name="com.clicksite.CUSTOM_INTENT">
         </action>
      </intent-filter>
   
   </receiver>
</application>

 

مثال : این مثال به شما توضیح می دهد که چگونه BroadcastReceiver را برای ردیابی intent سفارشی ایجاد کنید. 
هنگامی که با intent سفارشی آشنا هستید، می توانید درخواست خود را برای ردگیری intent های تولید شده سیستم ، برنامه ریزی کنید. بنابراین اجازه دهید از مراحل زیر برای تغییر برنامه Android که ما در مقاله مربوط به Hello World  ایجاد کردیم ، پیروی کنیم:

1) از Android studio برای ایجاد یک برنامه Android استفاده کنید و آن را به عنوان My Application تحت پکیج  com.example.tutorialspoint7.myapplication ایجاد کنید ( در مقاله Hello World Example توضیح داده شده است.)

2) فایل activity اصلی MainActivity.java را برای اضافه کردن به متد ()broadcastIntent تغییر دهید .

3) ایجاد یک فایل جاوا جدید به نام MyReceiver.java تحت پکیج com.example.clicksite7.myapplication برای تعریف BroadcastReceiver.

4) یک برنامه می تواند یک یا چند متد سفارشی و سیستمی را بدون هیچ محدودیتی اداره کند.هر intent ای که میخواهید رهگیری کنید باید در فایل AndroidManifest.xml با استفاده از تگ <receiver.../> ثبت شود.

5) تغییر محتویات پیش فرض فایل res / layout / activity_main.xml برای شامل شدن یک دکمه ی broadcast intent

6) نیاز به تغییر فایل های رشته ای نیست ، Android studio از فایل string.xml پشتیبانی می کند.

7) اپلیکیشن را اجرا کنید تا شبیه ساز آندروید راه اندازی شود و نتیجه تغییرات انجام شده در برنامه را ببینید و تأیید کنید.

 

در زیر ، محتوای اصلی فایل activity  اصلی MainActivity.java اصلاح شده است. این فایل می تواند شامل هر یک از متد های حیاتی باشد . ما روش ()broadcastIntent را برای پخش یک intent سفارشی (custom intent) اضافه کرده ایم.

package com.example.clicksite7.myapplication;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity {

   /** Called when the activity is first created. */
   @Override
   
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }


   // broadcast a custom intent.
      
   public void broadcastIntent(View view){
      Intent intent = new Intent();
      intent.setAction("com.clicksite.CUSTOM_INTENT"); sendBroadcast(intent);
   }
}

محتوای  MyReceiver.java :

package com.example.clicksite7.myapplication;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

/**
 * Created by clicksite7 .
 */
public class MyReceiver extends BroadcastReceiver{
   @Override
   public void onReceive(Context context, Intent intent) {
      Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
   }
}

محتوای FileManifest.xml اصلاح شده به شکل زیر خواهد بود. در اینجا ما تگ <receiver.../> را برای افزودن سرویس مان اضافه کردیم:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.tutorialspoint7.myapplication">

   <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>
   
      <receiver android:name="MyReceiver">
         <intent-filter>
            <action android:name="com.tutorialspoint.CUSTOM_INTENT">
            </action>
         </intent-filter>

      </receiver>
   </application>

</manifest>

بعد از این، محتویات فایل res / layout / activity_main.xml  شامل یک دکمه برای پخش intent ماست :

<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:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Example of Broadcast"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp" />
      
   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point "
      android:textColor="#ff87ff09"
      android:textSize="30dp"
      android:layout_above="@+id/imageButton"
      android:layout_centerHorizontal="true"
      android:layout_marginBottom="40dp" />
      
   <ImageButton
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageButton"
      android:src="@drawable/abc"
      android:layout_centerVertical="true"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/button2"
      android:text="Broadcast Intent"
      android:onClick="broadcastIntent"
      android:layout_below="@+id/imageButton"
      android:layout_centerHorizontal="true" />

</RelativeLayout>

 

بیایید سعی کنیم که Hello World را اصلاح کنیم. 

 فرض میکنم AVD خود را در حین انجام تنظیم محیط ایجاد کرده اید. برای اجرای برنامه از Android studio ، یکی از فایل های activity  پروژه خود را باز کنید و روی Run در نوار ابزار کلیک کنید

 آندروید استودیو این برنامه را در AVD خود نصب می کند و آن را اجرا می کند و اگر همه چیز با تنظیمات و برنامه شما خوب باشد، امولاتور (شبیه ساز) پنجره ی مورد نظر شما را پخش می کند.

فصلِ: 20 , تعداد قسمت ها: 238 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل رایگان مربوط به مفاهیم php و api نویسی …

توضیحات کلی مجموعه: دوره متخصص اندروید کلیک سایت کامل ترین دوره جامع برنامه نویسی اندروید(حتما دمو دوره را ببینید)   چرا دوره متخصص جایگزین دوره صفرتاصد اندروید شد؟ کلیک سایت تصمیم گرفت …
فصلِ: 30 , تعداد قسمت ها: 182 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ساخت اپلیکیشن علی بابا-آموزش کالبک ها-…

دوره "متخصص" جایگزین دوره صفرتاصد اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دوره صفرتاصد شده است؟چرا باید دوره متخص…
فصلِ: 11 , تعداد قسمت ها: 121 , سطح: صفر تا صد

این فصل در یک نگاه:

عملیات شبیه فیلتر-ساخت الرت دیالوگ وچیدمان براساس فروش-مرتب سازی-نحوه خطایابی-استفاده از bottom sheet در اندروید-سبد خری…

آموزش ساخت اپلیکیشن اندروید دیجی کالا  : ساخت برنامه اندروید یکی از پر طرفدارترین آموزش های کلیک سایت می باشد. با توجه به فراگیر شدن سیستم اندروید و آشنایی افراد با این سیستم ، برنامه های ک…
فصلِ: 3 , تعداد قسمت ها: 179 , سطح: صفر تا صد

این فصل در یک نگاه:

در این دوره آموزشی ، برنامه نویسی اندروید و ios را با استفاده از زامارین خواهیم آموخت. همچنین به صورت کاملا پروژه محور ، اپلیکیشن فروشگاهی مشابه دیجی کالا را پیاده سازی خواهیم کرد. در انته…
فصلِ: 2 , تعداد قسمت ها: 58 , سطح: صفر تا صد

این فصل در یک نگاه:

توضیحات کلی مجموعه: سرفصل های دوره آموزش ساخت اپلیکیشن فیلیمو معرفی اهداف دوره مقدمه و بررسی پیش نیازهای دوره بررسی جزئی و …
فصلِ: 1 , تعداد قسمت ها: 9 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ساخت api key-آموزش استفاده از GPS گوشی ونمایش مکان شخص برروی نقشه-متصل کردن چند نقطه برروی نقشه با خط-رسم چند ضلعی…

حتما دمو دوره رو ببینید اولین دوره کامل کار با نقشه گوگل ومسیریابی در نقشه گوگل(این اموزش مشابه فارسی ندارد) اموزش کار با نقشه گوگل در برنامه نویسی اندروید یکی از مهم ترین مباحث هست که …
فصلِ: 1 , تعداد قسمت ها: 14 , سطح: صفر تا صد

این فصل در یک نگاه:

ساخت انواع نوتیفیکیشن ها -کار با وب سرویس پوشه-ارسال نوتیفیکیشن با سرویس پوشه-ارسال نوتیفیکیشن با one signal-اموزش کار ب…

با این مجموعه همه چیز در مورد نوتیفیکیشن و فایربیس رو خواهید اموخت یکی از مواردی که در استخدام کاربران در شرکت های برنامه نویسی بسیار موثر هست مبحث کار با firebase هست که ما دراین دوره ام…
فصلِ: 1 , تعداد قسمت ها: 16 , سطح: صفر تا صد

این فصل در یک نگاه:

لیست کردن فایل های صوتی ویدیویی گوشی-طاحی متریال وزیبا-استفاده از تب بندی-حرکت سیک بار همراه با اهنگ وزمان-ست کردن زمان …

توضیحات کلی مجموعه: اموزش ساخت یک موزیک پلیر و ویدیو پلیر ح رفه ای که کاملا کاربردی است و قابلیت نصب روی گوشی های مختلف را دارد از جمله امکانات این اپلیکیشن: لیست کردن فایل های صوتی وید…
فصلِ: 1 , تعداد قسمت ها: 61 , سطح: صفر تا صد

این فصل در یک نگاه:

اموزش ساخت اپلیکیشن کافه بازار-اشتراک گذاری اپلیکیشن-کار با رتروفیت-کاربا ران تیم پرمیشن- کار با فرگمنت ها-کار با sqlite…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دو…
فصلِ: 1 , تعداد قسمت ها: 9 , سطح: صفر تا صد

این فصل در یک نگاه:

پرداخت درون برنامه ای بازار-اموزش فروش سکه-اموزش فروش اشتراک-اموزش فروش نسخه پولی-اموزش چک کردن خرید کردن کاربر-اموزش کا…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 1 , تعداد قسمت ها: 20 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش کامل پیکربندی mvp-اموزش اتصال با سرور با رتروفیت و rxjava-اموزش کار با دیتابیس-آموزش کار با bottom navigation-اموز…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 1 , تعداد قسمت ها: 35 , سطح: متوسط

این فصل در یک نگاه:

این آموزش در یک فصل شامل 35 جلسه آموزش تصویری به همراه سورس کد ارائه شده است.…

سرفصل ها مقدمه و معرفی متد آموزشی بررسی جزئی و خلاصه موارد موردنیاز پیش از آموزش شامل: کار با ویوها،  کار با کتابخانه های مختلف و ... …
فصلِ: 1 , تعداد قسمت ها: 1 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ارسال پیامک با سامانه مدیر پیامک-ارسال کد فعال سازی برنامه با پیامک-اعتبارسنجی کد فعال سازی-ثبت نام در اپلیکیشن با…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 2 , تعداد قسمت ها: 19 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ارسال توکن در اندروید -اموزش امنیت در برنامه نویسی اندروید-اموزش ارسال توکن در هدر در اندروید-اموزش ساخت token -ام…

توضیحات کلی مجموعه: دموی دوره را حتما ببینید دوره امنیت و دیزاین پترن در برنامه نویسی اندروید که شامل دو فصل هست. فصل اول شامل اموزش singletone design patern-builder design patern-command …
فصلِ: 2 , تعداد قسمت ها: 44 , سطح: صفر تا صد

این فصل در یک نگاه:

در فصل دوم این دوره بیشتر میپردازیم به کار با کتابخانه ها و موارد پیشرفته تر مانند دوربین ، ضبط صدا، دیتا بیس ، و .....…

توضیحات کلی مجموعه: سلام خدمت کلیک سایتی های عزیز مجموعه آموزشی صفر تا صد برنامه نویسی اندروید در محیط بیسیک 4 اندروید (basic 4 android) معرفی محیط بیسیک 4 اندروید محیط b4a  تحت کمپانی A…
فصلِ: 3 , تعداد قسمت ها: 61 , سطح: صفر تا صد

این فصل در یک نگاه:

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

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 5 , تعداد قسمت ها: 21 , سطح: متوسط

این فصل در یک نگاه:

نحوه ارورگیری-رفع ایراد-رفع مشکل-اشتراک گذاری مطالب-ساخت اکتیویتی تنظیمات-اشتراک گذاری مطالب-جستجو کردن…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 5 , تعداد قسمت ها: 128 , سطح: صفر تا صد

این فصل در یک نگاه:

پرداخت درون برنامه ای بازار با کاتلین…

دوره "متخصص" جایگزین دوره های اندروید شد. برای دیدن دوره متخصص اندروید بر روی لینک زیر کلیک کنید : https://b2n.ir/d36082 چرا دوره متخصص جایگزین دیگر دوره های اندروید شده است؟چرا باید دوره…
فصلِ: 8 , تعداد قسمت ها: 62 , سطح: صفر تا صد

این فصل در یک نگاه:

اپلود تصاویر روی سرور نود جی اس-کار با کانال در چت- ساخت کانال-ساخت گروه-تفاوت کانال و گروه-انلاین بودن-ارسال تصاویر در …

  توضیحات کلی مجموعه آموزش اندروید اپلیکیشن چت مشابه تلگرام( با استفاده از Socket IO ): دموی مجموعه را حتما ببینید دراین دوره سعی میشود بسیاری از اپشن هایی که اپلیکیشن موبوگرام داراست ر…
فصلِ: 6 , تعداد قسمت ها: 194 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل آپدیت های مربوط به دوره را قرار میدهیم…

با سلام و خسته نباشد خدمت کلیک سایتی های عزیز در ادامه با توضیحات مختصری درمورد دوره ی react native با ما همراه باشید: React Native چیست؟ قطعا یکی از آرزوهای برنامه نویسان این میباشد که ب…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید