گیرنده های پخش در برنامه نویسی اندروید

4 سال پیش
گیرنده های پخش در برنامه نویسی اندروید

گیرنده های پخش در برنامه نویسی اندروید

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، با گیرنده های پخش در برنامه نویسی اندروید (broadcast receivers) آشنا خواهید شد.

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

برای ایجاد BroadcastReceiver برای اهداف پخش شده در سیستم، دو مرحله مهم وجود دارد –

  • ایجاد گیرنده پخش.
  • ثبت گیرنده پخش

در صورتی که قصد دارید اهداف دلخواه خود را پیاده سازی کنید، یک مرحله دیگر وجود دارد ، بنابراین باید این اهداف را ایجاد و پخش کنید.

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

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

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

ثبت گیرنده پخش در اندروید

برنامه ای با ثبت یک گیرنده پخش در پرونده AndroidManifest.xml به اهداف خاص پخش وجود دارد. در نظر بگیرید که ما قصد داریم MyReceiver را برای رویداد تولید شده در سیستم ACTION_BOOT_COMPLETED که پس از اتمام مراحل راه اندازی سیستم اندروید توسط سیستم اجرا می شود، ثبت کنیم.

 

گیرنده های پخش در برنامه نویسی اندروید

 

<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>

 

اکنون هر زمان دستگاه اندروید شما بوت شوذ، توسط BroadcastReceiver 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

گزارش یک اشکال

۶-android.intent.action.CALL

با شخصی که داده ها مشخص کرده اند تماس بگیرید.

۷-android.intent.action.CALL_BUTTON

کاربر دکمه “تماس” را فشار داده تا به شماره گیرنده یا رابط کاربری مناسب دیگر برای برقراری تماس مراجعه کند.

۸-android.intent.action.DATE_CHANGED

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

۹-android.intent.action.REBOOT

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

 

پخش اهداف دلخواه

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

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

این int. com.tutorialspoint.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.tutorialspoint.CUSTOM_INTENT">
         </action>
      </intent-filter>
   
   </receiver>
</application>

 

مثال

این مثال نحوه ایجاد BroadcastReceiver برای رهگیری از Intent سفارشی را به شما توضیح می دهد. هنگامی که با Intent سفارشی آشنا شدید، می توانید برنامه خود را برای رهگیری اهداف تولید شده در سیستم برنامه ریزی کنید.

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

در زیر محتوای پرونده فعالیت اصلی تغییر یافته MainActivity.java است. این پرونده می تواند شامل هر یک از روشهای اساسی حیات زندگی باشد. ما برای پخش یک هدف سفارشی روش () BroadIntent  را اضافه کرده ایم.

package com.example.tutorialspoint7.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.tutorialspoint.CUSTOM_INTENT"); sendBroadcast(intent);
   }
}

 

در زیر محتوای MyReceiver.java است:

package com.example.tutorialspoint7.myapplication;

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

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

در زیر محتوای اصلاح شده پرونده AndroidManifest.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 وجود دارد که شامل یک دکمه برای پخش هدف سفارشی ما است –

<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، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی Android StudioRun Icon کلیک کنید. Android Studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد، زیر پنجره شبیه ساز نمایش داده می شود.

 

اکنون برای پخش Intent سفارشی خود، بیایید بر روی دکمه Broadcast Intent کلیک کنیم ، این کار قصد ما “com.tutorialspoint.CUSTOM_INTENT” را پخش می کند که توسط BroadcastReceiver ثبت شده ما یعنی MyReceiver رهگیری می شود و طبق منطق پیاده سازی شده ما در پایین ظاهر می شود، شبیه ساز به شرح زیر است –

 

 

می توانید BroadcastReceiver دیگر را برای رهگیری اهداف تولید شده در سیستم مانند راه اندازی سیستم، تغییر تاریخ، کاهش شارژ باتری و غیره امتحان کنید.

منبع.

 

لیست جلسات قبل آموزش برنامه نویسی اندروید

  1. نگاهی کلی به برنامه نویسی اندروید
  2. تنظیمات محیط  در برنامه نویسی اندروید
  3. معماری برنامه نویسی اندروید
  4. اجزای برنامه در برنامه نویسی اندروید
  5. Hello World در برنامه نویسی اندروید
  6. سازماندهی و دسترسی به منابع در برنامه نویسی اندروید
  7. فعالیت در برنامه نویسی اندروید
  8. سرویس در برنامه نویسی اندروید
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه