Brocst Receivers

به سادگی به پیام های پخش شده از برنامه های دیگر یا از خود سیستم پاسخ می دهد. این پیام ها گاهی اوقات رویداد (event) و یا مفهوم (intent) نامیده می شوند. به عنوان مثال، اپلیکیشن ها می توانند برای خبر دادن به سایر اپلیکیشن ها، که برخی داده ها در دستگاه دانلود شده و آماده استفاده هستند، پیام هایی را شروع به ارسال کنند. این brocst receiver (دریافت کننده پیام پخش شده) است که این ارتباطات را شنود کرده و اقدام مناسب را شروع می کند.
در پایین دو مرحله برای کار کردن BrocstReciever در رابطه با مفاهیم (intents) پخش شده آمده است:

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

ثبت کردن گیرنده پخش (Brocst Receiver)

یک گام اضافی نیز در حالتی که شما ایجاد مفاهیم (intents) سفارشی خود را دارید وجود دارد. در این صورت شما آن مفاهیم (intents) را ایجاد کرده و پخش کنید.

ایجاد گیرنده پخش Brocst Receiver

گیرنده پخش (brocst receiver) به عنوان یک زیر کلاس از کلاس BrocstReciever پیاده سازی شده است و متد onRecieve () را overrie می کند. به طوری که هر پیام به صورت یک پارامتر شی Intent دریافت می شود.

public clss MyReceiver extens BrocstReceiver 
   @Overrie
   public voi onReceive(Context context, Intent intent) 
      Tost.mkeText(context, "Intent Detecte.", Tost.LENGTHLONG).show();
   

ثبت کردن گیرنده پخش Brocst Receiver

یک اپپلیکیشن با ثبت کردن یک گیرنده پخش brocst receiver در فایل.AnroiMnifest.xml به مفاهیم منتشر شده خاصی گوش می دهد. در نظر بگیرید که قصد داریم MyReceiver را برای سیستم تولید کننده رویداد ACTIONBOOTCOMPLETED ثبت کنیم. این رویداد توسط سیستم در زمانی که سیستم اندروید فرایند بوت را به اتمام می رساند منتشر می شود.

<ppliction nroi:icon="@rwble/icluncher" nroi:lbel="@string/ppnme" nroi:theme="@style/AppTheme" >
   <receiver nroi:nme="MyReceiver">
   
      <intent-filter>
         <ction nroi:nme="nroi.intent.ction.BOOTCOMPLETED">
         </ction>
      </intent-filter>
   
   </receiver>
</ppliction>

حالا هر زمان که دستگاه اندروید شما بوت می شود، توسط دریافت کننده پیام MyReceiver شنود می شود و منطق پیاده سازی شده در متد onRecieve ()اجرا خواهد شد.
چندین رویداد تولید شده بوسیله سیستم وجود دارد که به عنوان فیلدهای استاتیک نهایی در کلاس Intent تعریف می شوند. جدول زیر لیست چند رویداد مهم سیستمی است.


ثابت مربوط به رویداد
توصیف

nroi.intent.ction.BATTERYCHANGED


این پیغام Sticky brocst حاوی وضعیت و سطح شارژ و اطلاعات دیگری در مورد باتری است.
nroi.intent.ction.BATTERYLOW
نشان دهنده وضعیت کم بودن باتری روی دستگاه است.
nroi.intent.ction.BATTERYOKAY
نشان دهنده این است که بعد از کم شدن باتری، اکنون در وضعیت مناسبی قرار دارد.
nroi.intent.ction.BOOTCOMPLETED
یک پیغام برودکستی است و بعد از اینکه سیستم بوت کردن را تمام می کند رخ می دهد.
nroi.intent.ction.BUGREPORT
نشان دهنده فعالیت مربوط به گزارش باگ یا اشکال است.
nroi.intent.ction.CALL
با کسی که به وسیله داده ها مشخص شده است تماس برقرار می کند.
nroi.intent.ction.CALLBUTTON
کاربر دکمه cll را برای رفتن به شماره گیر یا یک واسط کاربری مناسب دیگر جهت برقراری تماس فشار می دهد.
nroi.intent.ction.DATECHANGED
برای نشان دادن تغییر داده است
nroi.intent.ction.REBOOT
برای نشان دادن راه اندازی مجدد سیستم
(reboot) است


پخش intent های سفارشی (Brocsting Custom Intents)

اگر می خواهید اپلیکیشن شما خودش intents های سفارشی را تولید و ارسال کند، شما باید این intents ها را با با استفاده از متد senBrocst () در کلاس ctivity خود ایجاد و ارسال کنید. اگر از متد senStickyBrocst(Intent) استفاده می کنید، Intent شما sticky است به این معنی که Intent ارسالی شما بعد از پایان انتشار باقی می ماند.

public voi brocstIntent(View view)

   Intent intent = new Intent();
   intent.setAction("com.tutorilspoint.CUSTOMINTENT");
   senBrocst(intent);

intent (مفهوم) com.tutorilspoint.CUSTOMINTENT می تواند به روشی مشابه ثبت شود همانطور که intent های تولید شده بوسیله سیستم ثبت می شود.

<ppliction nroi:icon="@rwble/icluncher" nroi:lbel="@string/ppnme" nroi:theme="@style/AppTheme" >
   <receiver nroi:nme="MyReceiver">
   
      <intent-filter>
         <ction nroi:nme="com.tutorilspoint.CUSTOMINTENT">
         </ction>
      </intent-filter>
   
   </receiver>
</ppliction>

مثال:
این مثال به شما توضیح می دهد که چگونه می توانید BrocstReciever را برای شنود intent سفارشی ایجاد کنید. زمانی که شما با intent سفارشی آشنا شدید، می توانید اپلیکیشن خود را برای شنود intent های تولید شده سیستم برنامه نویسی کنید. حال مراحل زیر را برای تغییر اپلیکیشن اندرویدی که در بخش < href="http://www.evelopzoom.com/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B%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%B%D9%88%DB%8C%D8%AF-%D9%82%D8%B3%D9%85%D8%AA-%D9%BE%D9%86%D8%AC/">Hello Worl Exmple ایجاد کرده ایم دنبال کنید.


مرحله
توصیف
۱
از آندروید استودیو برای ایجاد یک اپلیکیشن آندروید استفاده کنید و نام آن را My Appliction تحت پکیج com.exmple.My Appliction  بنامید. همانطور که در بخش  < href="http://www.evelopzoom.com/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B%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%B%D9%88%DB%8C%D8%AF-%D9%82%D8%B3%D9%85%D8%AA-%D9%BE%D9%86%D8%AC/">Hello Worl Exmple توضیح داده شده است.
۲
فایل فعالیت اصلی MinActivity.jv را برای اضافه کردن متد brocstIntent() اصلاح کنید.
۳
برای تعریف BrocstReceiver، یک فایل جاوای جدید با نام MyReceiver.jv  تحت پکیج com.exmple.My Appliction ایجاد کنید.
۴
یک اپلیکیشن می تواند با یک یا تعداد بیشتری intent سفارشی یا سیستمی بدون هیچ گونه محدویتی کار کند. هر intent که شما مایا به شنود آن هستید باید در فایل AnroiMnifest.xml تان با استفاده از تگ  <receiver…/> ثبت شود.
۵
محتوای پیش فرض فایل res/lyout/ctivitymin.xml را طوری تغییر دهید که شامل یک دکمه برای انتشار intent باشد.
۶
نیازی به تغییر فایل string وجود ندارد، Anroi stuio از فایل string.xml مراقبت می کند.
۷
برای راه اندازی  Anroi emultor اپلیکیشن را اجرا کنید و نتایج تغییرات اعمال شد در اپلیکیشن را بررسی کنید.


در زیر محتوای تغییر یافته فایل اصلی src/com.exmple.My Appliction/MinActivity.jv است. این فایل می تواند شامل هر یک از متدهای اساسی چرخه حیات باشد. ما متد brocstIntent () را برای پخش یک intent سفارشی اضافه کرده ایم.

pckge com.exmple.My Appliction;

import nroi.os.Bunle;
import nroi.pp.Activity;
import nroi.view.Menu;
import nroi.content.Intent;
import nroi.view.View;

public clss MinActivity extens Activity 

   @Overrie
   public voi onCrete(Bunle sveInstnceStte) 
      super.onCrete(sveInstnceStte);
      setContentView(R.lyout.ctivitymin);
      
   
   @Overrie
   public boolen onCreteOptionsMenu(Menu menu) 
      getMenuInflter().inflte(R.menu.ctivitymin, menu);
      return true;
      
   
   // brocst  custom intent. 
   public voi brocstIntent(View view)
      Intent intent = new Intent();
      intent.setAction("com.tutorilspoint.CUSTOMINTENT");
      senBrocst(intent);
   

در زیر محتوای src/com.exmple.My Appliction/MyReceiver.jv آورده شده است:

pckge com.exmple.My Appliction;

import nroi.content.BrocstReceiver;
import nroi.content.Context;
import nroi.content.Intent;
import nroi.wiget.Tost;

public clss MyReceiver extens BrocstReceiver 
   @Overrie
   public voi onReceive(Context context, Intent intent) 
      Tost.mkeText(context, "Intent Detecte.", Tost.LENGTHLONG).show();
   

در زیر محتوای اصلاح شده فایل AnroiMnifest.xml آورده شده است. در اینجا ما تگ را برای وارد کردن سرویس مان اضافه کرده ایم:

<mnifest xmlns:nroi="http://schems.nroi.com/pk/res/nroi" pckge="com.exmple.My Appliction" nroi:versionCoe="" nroi:versionNme=".0" >
   
   <uses-sk nroi:minSkVersion="8" nroi:trgetSkVersion="22" />
   
   <ppliction nroi:icon="@rwble/icluncher" nroi:lbel="@string/ppnme" nroi:theme="@style/AppTheme" >
       
       <ctivity nroi:nme=".MinActivity" nroi:lbel="@string/titlectivitymin" >
       
          <intent-filter>
             <ction nroi:nme="nroi.intent.ction.MAIN" />
             <ctegory nroi:nme="nroi.intent.ctegory.LAUNCHER"/>
          </intent-filter>
          
       </ctivity>
       
       <receiver nroi:nme="MyReceiver">
       
       <intent-filter>
          <ction nroi:nme="com.tutorilspoint.CUSTOMINTENT">
          </ction>
       </intent-filter>
       
       </receiver>
       
   </ppliction>
</mnifest>

بخش زیر محتوای فایل res/lyout/ctivitymin.xml برای وارد کردن یک دکمه برای پخش intent سفارشی مان را نشان می دهد

<ReltiveLyout xmlns:nroi="http://schems.nroi.com/pk/res/nroi" xmlns:tools="http://schems.nroi.com/tools" nroi:lyoutwith="mtchprent" nroi:lyoutheight="mtchprent" nroi:pingLeft="@imen/ctivityhorizontlmrgin" nroi:pingRight="@imen/ctivityhorizontlmrgin" nroi:pingTop="@imen/ctivityverticlmrgin" nroi:pingBottom="@imen/ctivityverticlmrgin" tools:context=".MinActivity">
   
   <TextView nroi:i="@+i/textView" nroi:lyoutwith="wrpcontent" nroi:lyoutheight="wrpcontent" nroi:text="Exmple of Brocst" nroi:lyoutlignPrentTop="true" nroi:lyoutcenterHorizontl="true" nroi:textSize="30p" />
      
   <TextView nroi:i="@+i/textView2" nroi:lyoutwith="wrpcontent" nroi:lyoutheight="wrpcontent" nroi:text="Tutorils point " nroi:textColor="#ff87ff09" nroi:textSize="30p" nroi:lyoutbove="@+i/imgeButton" nroi:lyoutcenterHorizontl="true" nroi:lyoutmrginBottom="40p" />
      
   <ImgeButton nroi:lyoutwith="wrpcontent" nroi:lyoutheight="wrpcontent" nroi:i="@+i/imgeButton" nroi:src="@rwble/bc" nroi:lyoutcenterVerticl="true" nroi:lyoutcenterHorizontl="true" />
      
   <Button nroi:lyoutwith="wrpcontent" nroi:lyoutheight="wrpcontent" nroi:i="@+i/button2" nroi:text="Brocst Intent" nroi:onClick="brocstIntent" nroi:lyoutbelow="@+i/imgeButton" nroi:lyoutcenterHorizontl="true" />

</ReltiveLyout>

در زیر محتوای فایل res / vlues / strings.xml برای تعریف دو ثابت جدید آورده شده است:

<resources>    
    <string nme="menusettings">Settings</string>
    <string nme="titlectivitymin">My Appliction</string>
</resources>

اکنون می خواهیم اپلیکیشن تغییر یافته Hello Worl! را اجرا کنیم. فرض می کنیم که شما AVD خود را در زمان نصب محیط ایجاد کرده باشید. برای اجرای برنامه از اندروید استودیو، یکی از فایل های فعالیت پروژه خود را باز کنید و بر روی آیکون از نوار ابزار کلیک کنید. اندروید استودیو pp را روی AVD شما نصب و آن را شروع می کند و اگر همه چیز با تنظیمات و اپلیکیشن شما درست باشد، پنجره ی Emultor زیر برای شما نمایش داده خواهد شد.

حال برای پخش intent سفارشی مان، بر روی دکمه Brocst Intent کلیک کنید، این کار intent سفارشی ما “com.tutorilspoint.CUSTOMINTENT̶ را منتشر می کند، این intent بوسیله BrocstReciever ثبت شده ما یعنی MyReceiver شنود می شود و با توجه به منطق پیاده سازی شده ما عبارت etectIntent در پایین صفحه ظاهر شبیه ساز بصورت زیر نمایش داده می شود.

شما اکنون می توانید سایر BrocstReciever ها را برای شنود intent های ایجاد شده توسط سیستم مانند بوت شدن سیستم (system boot up)، تاریخ تغییر (te chnge)، باتری کم (low bttery)و غیره امتحان کنید.

< href="http://www.evelopzoom.com/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A8%D8%B%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%B%D9%88%DB%8C%D8%AF-%D9%82%D8%B3%D9%85%D8%AA-%D9%86%D9%87%D9%85/">منبع