Broadcast Receivers در اندروید – آموزش Android

  • پنجشنبه ۱۴ اسفند ۱۳۹۹
  • بازدید ۱۷۸ نفر

broadcast receivers in android 2286 تصویر

Broadcast Receivers در اندروید

به طور ساده Broadcast Receiver ها به پیام های انتشار یافته از طرف سیستم عامل یا سایر برنامه های کاربردی پاسخ می دهند. این پیغام ها گاهی اوقات رویداد یا اهداف هستند. برای مثال یک برنامه می تواند هنگامی که دانلود یک فایل به اتمام رسید یک پیغام منتشر کند تا سایر برنامه ها متوجه اتمام دانلود شده و بتوانند از آن فایل استفاده کنند.

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

  • ایجاد یک Broadcast Receiver.
  • ثبت Broadcast Receiver ایجاد شده.

ایجاد یک Broadcast Receiver

یک broadcast receiver به عنوان یک کلاس مشتق شده از کلاس BroadcastReceiver پیاده سازی می شود که متد onReceiver() در آن برای دریافت پیام ها بازنویسی شده است. پیغام ها به عنوان پارامتر Intent به این تابع ارسال می شوند.

ثبت Broadcast Receiver

برای این که برنامه بتواند به پیام های منتشر شده سراسری واکنش دهد باید در فایل AndroidManifest.xml یک Broadcast Receiver ثبت کنید. فرض کنید می خواهیم MyReceiver را برای رویداد ACTION_BOOT_COMPLETED که توسط سیستم تولید شده است، ثبت کنیم تا زمانی که فرآیند بوت سیستم کامل شد، برنامه ما واکنش دهد.

حال هر زمان که دستگاه اندرویدی شما بوت شود، برنامه توسط دریافت کننده MyReceiver از آن مطلع می گردد و کد های نوشته شده درون متد onReceive() اجرا می گردند.

در کلاس Intent چندین فیلد استاتیک برای رویداد های سیستم تعریف شده است. در جدول زیر رویداد های مهم سیستم را مشاهده می کنید:

ردیفرویداد و توضیحات
۱android.intent.action.BATTERY_CHANGED

اطلاع از وضعیت باتری مانند کاهش میزان باتری و سایر اطلاعات.

۲android.intent.action.BATTERY_LOW

اطلاع از زمانی که شارژ باتری کم است.

۳android.intent.action.BATTERY_OKAY

زمانی که باتری بعد از وضعیت بحرانی به حالت مناسب می رسد.

۴android.intent.action.BOOT_COMPLETED

زمانی که بوت سیستم عامل به پایان برسد یک پیام منتشر می کند.

۵android.intent.action.BUG_REPORT

نمایش activity برای گزارش یک باگ.

۶android.intent.action.CALL

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

۷android.intent.action.CALL_BUTTON

برای زمانی که کاربر دکمه تماس را فشار دهد.

۸android.intent.action.DATE_CHANGED

برای تغییر تاریخ.

۹android.intent.action.REBOOT

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

ارسال پیغام های سفارشی

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

حال اگر برنامه دیگری یک دریافت کننده برای پیغام بالا ثبت کرده باشد، می تواند در هنگام انتشار پیام در سیستم از آن اطلاع پیدا کند.

مثال

این مثال نحوه ایجاد یک Broadcast Receiver برای ردیابی پیام های سفارشی را نشان می دهد. زمانی که با نحوه دریافت پیام های سفارشی آشنا شوید دیگر برای دریافت پیام های منتشر شده از طرف سیستم مشکلی نخواهید داشت. بنابراین اجازه دهید برنامه Hello World ایجاد شده در فصول قبل را برای ایجاد یک Broadcast Recevier تغییر دهیم:

مرحلهتوضیحات
۱ایجاد یک برنامه اندرویدی با نام My Application و بسته com.example.tutorialspoint7.myapplication در Android Studio.
۲ویرایش فایل MainActivity.java برای افزودن متد broadcastIntent() به آن.
۳ایجاد یک فایل جدید با نام MyReceiver.java تحت بسته com.example.tutorialspoint7.myapplication برای تعریف Broadcast Receiver.
۴یک برنامه می تواند یک یا چند دریافت کننده بدون محدودیت برای دریافت پیام های سیستم و سایر برنامه ها ایجاد کند. هر دریافت کننده ای که قصد ایجاد آن را دارید باید در فایل AndroidManifest.xml با استفاده از تگ  <receiver…/> ثبت شود.
۵ویرایش محتویات پیش فرض فایل res/layout/activity_main.xml به منظور افزودن یک دکمه برای انتشار پیام.
۶نیازی به تغییر محتویات فایل string.xml نمی باشد.
۷اجرای برنامه ایجاد شده درون شبیه سازی اندروید برای مشاهده نتیجه کار.

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

کد زیر محتویات فایل MyReceiver.java را نشان می دهد:

همچنین محتویات اصلاح شده فایل AndroidManifest.xml را در زیر مشاهده می کنید. که با استفاده از تگ <receiver…/> یک دریافت کننده ثبت کرده ایم:

کد زیر مربوط به فایل res/layout/activity_main.xml می باشد که یک دکمه جدید برای انتشار پیام سفارشی به آن اضافه کرده ایم:

خوب حالا برنامه ای که ایجاد کرده ایم را اجرا می کنیم. ما فرض می کنیم شما AVD (Android Virtual Device) خود را حین تنظیم محیط برنامه نویسی اندروید ایجاد کرده اید. به منظور اجرای برنامه در اندروید استودیو، یکی از فایل های activity برنامه را باز کنید سپس بر روی نماد اجرا () کلیک کنید. اندروید استودیو این برنامه را در AVD نصب کرده و آن را اجرا می کند و اگر همه چیز به درستی تنظیم شده باشد، یک پنجره شبیه ساز مانند شکل زیر نمایش داده خواهد شد:

بعد از اجرا شدن برنامه یک دکمه با نام BROADCAST INTENT را مشاهده می کنید که با کلیک بر روی آن یک پیام با ثابت “com.tutorialspoint.CUSTOM_INTENT” در سیستم منتشر می شود و اگر برنامه ای برای این پیام دریافت کننده ای ثبت کرده باشد می تواند به آن واکنش دهد.

شما می توانید دریافت کننده های دیگری به منظور پاسخ به پیام های سیستم مانند بوت شدن سیستم، تغییر در تاریخ و غیره ایجاد کنید.

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است