FMUSER بی سیم ویدئو و صدا را راحت تر انتقال می دهد!

[ایمیل محافظت شده] WhatsApp + 8618078869184
زبان

    توضیحات دقیق پخش در اندروید

     

    پخش به دو نوع مختلف تقسیم می شود: "پخش عادی" و "پخش منظم". پخش عادی کاملاً ناهمزمان است و همه گیرنده های پخش همزمان می توانند آن را دریافت کنند (به طور منطقی). کارایی ارسال پیام نسبتاً زیاد است ، اما عیب آن این است که گیرنده نمی تواند نتیجه پردازش را به گیرنده بعدی منتقل کند ، و نمی توان آن را خاتمه داد. پخش قصد انتشار؛ با این حال ، پخش سفارش شده براساس اولویت اعلام شده توسط گیرنده است (اعلام شده در android: ویژگی اولویت عنصر فیلتر هدف ، هرچه عدد بزرگتر باشد ، اولویت بالاتر ، محدوده مقدار: 1000 تا 1000 است. همچنین ممکن است setPriority () شی IntentFilter را برای تنظیم فراخوانی کنید) ، و گیرنده به نوبت پخش را دریافت می کند. به عنوان مثال ، اگر سطح A بالاتر از B باشد ، و سطح B بالاتر از C باشد ، سپس پخش ابتدا به A ، سپس به B منتقل می شود ، و در نهایت به C. بعد از اینکه A پخش را دریافت می کند ، می تواند داده ها را در پخش ذخیره کند. هنگامی که پخش به B ارسال می شود ، B می تواند داده های ذخیره شده توسط A را از پخش دریافت کند.

     

    Context.sendBroadcast ()

       آنچه ارسال می شود یک پخش معمولی است و همه مشترکان این فرصت را دارند که آن را بدست آورند و پردازش کنند.

     

    Context.sendOr کردBroadcast ()

       ارسال یک پخش منظم است. سیستم با توجه به اولویت اعلام شده توسط گیرنده ، گیرنده ها را یکی یکی اجرا می کند. گیرنده قبلی حق خاتمه پخش دارد (BroadcastReceiver.abortBroadcast ()). اگر پخش توسط گیرنده قبلی خاتمه یابد ، گیرنده دوم دیگر نمی تواند پخش را دریافت کند. برای پخش سفارش داده شده ، گیرنده قبلی می تواند نتیجه پردازش را در Intent پخش ذخیره کند و سپس آن را به گیرنده بعدی منتقل کند.

     
    گیرنده پخش (BroadcastReceiver) برای دریافت Intent پخش استفاده می شود و ارسال برنامه Intent با فراخوانی Context.sendBroadcast () و Context.sendOrppedBroadcast () انجام می شود. معمولاً یک گیرنده پخش می تواند توسط چندین گیرنده پخش مشترک مشترک در این هدف دریافت شود. این ویژگی مشابه گیرنده پیام Topic در JMS است. برای اجرای روش گیرنده پخش به شرح زیر است:

     

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

    گیرنده کلاس عمومی IncomeSMSReceiver extendsBroadcastReceiver {
      Orride void public onReceive (Contextcontext، Intentintent) {
      }
    }

     

    مرحله 2: مشترک شدن در پخش هدف مورد علاقه ، دو روش اشتراک وجود دارد:

    نوع اول: از کد برای اشتراک استفاده کنید (اشتراک پویا)

    فیلتر IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED")؛
    گیرنده IncomingSMSReceiver = newInomingSMSReceiver ()؛
    RegisterReceiver (گیرنده ، فیلتر) ؛

     

    نوع دوم: مشترک شدن در گره در پرونده AndroidManifest.xml (اشتراک ثابت)


      
           
      


    بیایید نگاهی به تفاوت اشتراک پخش پویا و اشتراک پخش ثابت بیاندازیم:
    به پخش اشتراکی اشتراکی نیز می گویند: پخش ساکن. وقتی برنامه شما بسته است ، در صورت وجود پیام پخش ، گیرنده پخش که نوشتید نیز می تواند آن را دریافت کند. روش ثبت آن AndroidManifast در برنامه شما است. .xml برای اشتراک.

     

    پخش اشتراک پویا همچنین نامیده می شود: پخش غیر مقیم. وقتی برنامه به پایان رسید ، پخش به طور طبیعی از بین می رود. به عنوان مثال ، شما در پخش در onCreate یا onResume در فعالیت مشترک می شوید و باید اشتراک پخش در onDestory یا onPause را لغو کنید. در غیر این صورت ، یک استثنا گزارش می شود ، بنابراین گیرنده پخش شما غیر مقیم خواهد بود.

     

    در اینجا یک جزئیات دیگر وجود دارد که دو روش اشتراک است. هنگام ارسال پخش ، باید توجه داشته باشید: از روش ضمنی قصد برای ثبت پویا استفاده می شود ، بنابراین هنگام ارسال پخش باید از قصد ضمنی برای ارسال استفاده کنید. ، در غیر این صورت گیرنده پخش نمی تواند پخش را دریافت کند. به این نکته توجه کنید. اما هنگام اشتراک بصورت استاتیک ، زیرا در AndroidMainfest.xml مشترک است ، می توان هنگام ارسال پخش از Intent و Intent ضمنی استفاده کرد (البته این فقط برای گیرنده های پخش است که توسط خود ما تعریف شده است) ، بنابراین در هر صورت ، ما به طور کلی از ضمنی استفاده می کنیم قصد ارسال پخش.

     

    بیایید به یک مثال نگاه کنیم:

    نگاهی به ساختار پروژه بیندازید:

     

    به اشتراک اشتراکی پخش شده نگاهی بیندازید:
    بسته com.broadcast.demo؛

    android.app.Activity را وارد کنید
    وارد کردن android.content.Intent؛
    وارد کردن android.os.Bundle؛
    وارد کردن android.view.View؛
    وارد کردن android.view.View.OnClickListener؛
    وارد کردن android.widget.Button؛

    واردات com.example.androidbroadcastdemo.R؛

    / **
     * پخش اشتراک ثابت
     * نویسنده weijiang204321
     *
     */
    کلاس عمومی StaticRegisterBroadcastActivity فعالیت را گسترش می دهد {

    Override
    void protection onCreate (Bundle savedInstanceState) {
    super.onCreate (SaveInstanceState)؛
    setContentView (R.layout.activity_main)؛
    دکمه btn = (دکمه) findViewById (R.id.btn)؛
    به
    btn.setOnClickListener (OnClickListener جدید () {
    Override
    خلا v عمومی در کلیک کنید (مشاهده v) {
    // از یک روش ثابت برای ثبت پخش استفاده کنید ، می توانید از هدف نمایش برای ارسال پخش استفاده کنید
    پخش قصد = هدف جدید ("com.broadcast.set.broadcast")؛
    sendBroadcast (پخش ، تهی)
    }
    به
    })؛
    }
    به
    }


    مشترک شدن در AndroidMainfest.xml:



    <manifest xmlns:android="
    http://schemas.android.com/apk/res/android"
        بسته = "com.example.androidbroadcastdemo"
        android: versionCode = "1"
        android: versionName = "1.0">

        <uses-sdk
            android: minSdkVersion = "8"
            android: targetSdkVersion = "18" />
       
       
       
       
       
       

        <برنامه
            android: allowBackup = "درست"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ string / app_name"
            android: theme = "@ style / AppTheme">
            <فعالیت
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    در حال حاضر در مورد سایر مطالب نگران نباشید ، زیرا بعداً در مورد آن صحبت خواهیم کرد ، در اینجا ما فقط روی ثبت پخش های ایستا تمرکز می کنیم


          
               
                   
               
           


    بیایید نگاهی به گیرنده پخش بیندازیم:

    بسته com.broadcast.receiver؛

    وارد کردن android.content.BroadcastReceiver؛
    وارد کردن android.content.Context؛
    وارد کردن android.content.Intent؛
    وارد کردن android.util.Log ؛

    / **
     * گیرنده پخش
     * نویسنده weijiang204321
     *
     */
    UnsortBroadcastReceiver کلاس عمومی BroadcastReceiver را گسترش می دهد {

    Override
    خلا v عمومی onReceive (زمینه متن ، قصد قصد) {
    Log.e ("Intent_Action:"، intent.getAction () + "")؛
    }

    }
    منطق روش onReceive در گیرنده پخش بسیار ساده است که چاپ محتوای Action است.
    برنامه را اجرا کنید ، نتیجه کار بسیار ساده است ، اینجا تصویر نیست.

     

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


    بسته com.broadcast.demo؛

    android.app.Activity را وارد کنید
    وارد کردن android.content.Intent؛
    وارد کردن android.content.IntentFilter؛
    وارد کردن android.os.Bundle؛
    وارد کردن android.view.View؛
    وارد کردن android.view.View.OnClickListener؛
    وارد کردن android.widget.Button؛

    واردات com.broadcast.receiver.UnSortBroadcastReceiver؛
    واردات com.example.androidbroadcastdemo.R؛

    / **
     * از روش پویا برای ثبت پخش استفاده کنید
     * نویسنده weijiang204321
     *
     */
    کلاس عمومی DynamicRegisterBroadcastActivity فعالیت را گسترش می دهد {
    به
    رشته استاتیک عمومی رشته NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM"؛
    گیرنده محافظت شده UnSortBroadcastReceiver؛
    به
    Override
    void protection onCreate (Bundle savedInstanceState) {
    super.onCreate (SaveInstanceState)؛
    setContentView (R.layout.activity_main)؛
    دکمه btn0 = (دکمه) findViewById (R.id.btn)؛
    btn0.setOnClickListener (OnClickListener جدید () {
    خلا v عمومی در کلیک کنید (مشاهده v) {
    // ارسال پخش
    Intent it = قصد جدید (NEW_LIFEFORM_DETECTED)؛
    sendBroadcast (آن) ؛
    }
    })؛
    }

    Override
    خلا v محافظت شده در Resume () {
    super.onResume ()؛
    // برای پخش ثبت نام کنید
    IntentFilter counterActionFilter = جدید IntentFilter (NEW_LIFEFORM_DETECTED)؛
    گیرنده = UnSortBroadcastReceiver جدید ()؛
    RegisterReceiver (گیرنده ، counterActionFilter) ؛
    }

    Override
    خلا v محافظت شده onPause () {
    super.onPause ()؛
    // لغو پخش
    unregisterReceiver (گیرنده) ؛
    }
    }
    در اینجا ما در حال اشتراک در پخش در Resume هستیم و اشتراک در پخش در مکث را لغو می کنیم.
    فعالیت راه اندازی شده را به DynamicRegisterBroadcastActivity در AndroidMainfest.xml تغییر دهید. محتوای دیگر نیازی به اصلاح نیست. برنامه را اجرا کرده و نتیجه چاپ بسیار ساده است ، بنابراین من تصویر را در اینجا نمی بینم.

     

    بیایید نگاهی به پخش سفارش یافته و پخش بی نظیر بیندازیم

    ما قبلاً در ابتدا به این موضوع اشاره کردیم ، بیایید نگاهی به پخش بی نظیر بیندازیم:

    ابتدا دو گیرنده پخش تعریف می کنیم:

    اولین گیرنده پخش:


    بسته com.broadcast.receiver؛

    وارد کردن android.content.BroadcastReceiver؛
    وارد کردن android.content.Context؛
    وارد کردن android.content.Intent؛
    وارد کردن android.util.Log ؛

    / **
     * گیرنده پخش A
     * نویسنده weijiang204321
     *
     */
    کلاس عمومی SortBroadcastReceiverA BroadcastReceiver را گسترش می دهد {

    Override
    خلا v عمومی onReceive (زمینه متن ، قصد قصد) {
    Log.e ("نسخه ی نمایشی:" ، "گیرنده پخش A") ؛
    }

    }
    گیرنده پخش دوم:

    بسته com.broadcast.receiver؛

    وارد کردن android.content.BroadcastReceiver؛
    وارد کردن android.content.Context؛
    وارد کردن android.content.Intent؛
    وارد کردن android.util.Log ؛

    / **
     * گیرنده پخش B
     * نویسنده weijiang204321
     *
     */
    کلاس عمومی SortBroadcastReceiverB BroadcastReceiver را گسترش می دهد {

    Override
    خلا v عمومی onReceive (زمینه متن ، قصد قصد) {
    Log.e ("نسخه ی نمایشی:" ، "پخش B") ؛
    }

    به
    به
    }


    برای پخش در AndroidMainfest.xml مشترک شوید


     
               
                   
               

           

               
                   
               

    نتیجه عملیات:


    نتیجه دویدن کمی عجیب است. چرا گیرنده B در جلو و گیرنده A در عقب قرار دارد؟ دلیل این امر این است که وقتی عضو پخش در AndroidMainfest.xml می شویم ، مقدار صفت android: priority را در فیلتر intent تنظیم می کنیم. هرچه مقدار بزرگتر باشد ، اولویت بالاتر است. ، اولویت گیرنده B 1000 است ، اولویت گیرنده A 999 است ، بنابراین B ​​ابتدا پخش را دریافت می کند ، و سپس A آن را دریافت می کند ، اما هیچ ارتباطی بین گیرنده B و گیرنده A وجود ندارد ، و هیچ تعاملی وجود ندارد بله ، از آنجا که این یک پخش خارج از سفارش و ناهمزمان است ، ما می توانیم با افزودن کد به روش onReceiver در B آزمایشی انجام دهیم:

    abortBroadcast ()؛ // انتقال این پخش را خاتمه دهید

    نتیجه عملیات:

     

    ما می توانیم خطای سریع را ببینیم ، یعنی پخش غیر سفارش شده مجاز به پایان دادن به پخش نیست. در واقع ، پایان کار بی فایده است ، زیرا گیرنده A هنوز پخش را دریافت می کند.

     

    بیایید نگاهی به پخش منظم بیندازیم ، کد باید اصلاح شود:

    اولین مورد هنگام ارسال پخش است:


    پخش قصد = هدف جدید ("com.broadcast.set.broadcast")؛
    sendOrdedBroadcast (پخش ، تهی)
    سپس روشی را برای خاتمه دادن به پخش کننده در گیرنده B اضافه کنید:
    abortBroadcast ()؛

    کد دیگر نیازی به اصلاح نیست ، نتیجه عملیات:

     

    فقط گیرنده B وجود دارد ، گیرنده A پخش را دریافت نمی کند ، زیرا پخش در گیرنده B خاتمه می یابد و گیرنده های بعدی نمی توانند آن را بپذیرند.

    کد زیر را اصلاح کنید:

    گیرنده B:


    بسته com.broadcast.receiver؛

    وارد کردن android.content.BroadcastReceiver؛
    وارد کردن android.content.Context؛
    وارد کردن android.content.Intent؛
    وارد کردن android.os.Bundle؛
    وارد کردن android.util.Log ؛

    / **
     * گیرنده پخش B
     * نویسنده weijiang204321
     *
     */
    کلاس عمومی SortBroadcastReceiverB BroadcastReceiver را گسترش می دهد {

    Override
    خلا v عمومی onReceive (زمینه متن ، قصد قصد) {
    Log.e ("نسخه ی نمایشی:" ، "گیرنده پخش B") ؛
    بسته نرم افزاری = بسته نرم افزاری جدید ()؛
    bundle.putString ("گیرنده بعدی" ، "گیرنده بعدی پخش")؛
    setResultExtras (بسته نرم افزاری) ؛
    }
    به
    }
    بعد از اینکه B پخش را دریافت کرد ، مقداری از ارزش را ذخیره کرده و آن را به گیرنده بعدی منتقل می کند.


    کد گیرنده A:


    com com.broadcast.receive

     

     

     

     

    لیست همه سوال

    کنیه

    پست الکترونیک (ایمیل)

    سوالات

    محصول دیگر ما:

    بسته تجهیزات حرفه ای ایستگاه رادیویی FM

     



     

    راه حل IPTV هتل

     


      ایمیل را وارد کنید تا غافلگیر شوید

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> آفریقایی
      sq.fmuser.org -> آلبانیایی
      ar.fmuser.org -> عربی
      hy.fmuser.org -> ارمنی
      az.fmuser.org -> آذربایجانی
      eu.fmuser.org -> باسک
      be.fmuser.org -> بلاروسی
      bg.fmuser.org -> بلغاری
      ca.fmuser.org -> کاتالان
      zh-CN.fmuser.org -> چینی (ساده شده)
      zh-TW.fmuser.org -> چینی (سنتی)
      hr.fmuser.org -> کرواتی
      cs.fmuser.org -> چکی
      da.fmuser.org -> دانمارکی
      nl.fmuser.org -> هلندی
      et.fmuser.org -> استونیایی
      tl.fmuser.org -> فیلیپینی
      fi.fmuser.org -> فنلاندی
      fr.fmuser.org -> فرانسوی
      gl.fmuser.org -> گالیسیایی
      ka.fmuser.org -> گرجی
      de.fmuser.org -> آلمانی
      el.fmuser.org -> یونانی
      ht.fmuser.org -> کریول هائیتی
      iw.fmuser.org -> عبری
      hi.fmuser.org -> هندی
      hu.fmuser.org -> مجارستانی
      is.fmuser.org -> ایسلندی
      id.fmuser.org -> اندونزیایی
      ga.fmuser.org -> ایرلندی
      it.fmuser.org -> ایتالیایی
      ja.fmuser.org -> ژاپنی
      ko.fmuser.org -> کره ای
      lv.fmuser.org -> لتونیایی
      lt.fmuser.org -> لیتوانیایی
      mk.fmuser.org -> مقدونی
      ms.fmuser.org -> مالایی
      mt.fmuser.org -> مالتیایی
      no.fmuser.org -> نروژی
      fa.fmuser.org -> فارسی
      pl.fmuser.org -> لهستانی
      pt.fmuser.org -> پرتغالی
      ro.fmuser.org -> رومانیایی
      ru.fmuser.org -> روسی
      sr.fmuser.org -> صربی
      sk.fmuser.org -> اسلواکی
      sl.fmuser.org -> اسلوونیایی
      es.fmuser.org -> اسپانیایی
      sw.fmuser.org -> سواحیلی
      sv.fmuser.org -> سوئدی
      th.fmuser.org -> تایلندی
      tr.fmuser.org -> ترکی
      uk.fmuser.org -> اوکراینی
      ur.fmuser.org -> اردو
      vi.fmuser.org -> ویتنامی
      cy.fmuser.org -> ولزی
      yi.fmuser.org -> ییدیش

       
  •  

    FMUSER بی سیم ویدئو و صدا را راحت تر انتقال می دهد!

  • تماس با ما

    نشانی:
    شماره 305 اتاق HuiLan ساختمان شماره 273 Huanpu Road گوانگژو چین 510620

    پست الکترونیک:
    [ایمیل محافظت شده]

    تلفن / WhatApps:
    + 8618078869184

  • دسته بندی ها

  • عضویت در خبرنامه

    نام اول یا کامل

    پست الکترونیک

  • راه حل پی پال  وسترن یونیونبانک چین
    پست الکترونیک:[ایمیل محافظت شده]   واتس اپ: +8618078869184 + Skype: sky198710021 با من چت کن
    کپی رایت 2006-2020 شده توسط www.fmuser.org

    تماس با ما