FMUSER Бесправадная перадача відэа і аўдыё лягчэй!

[электронная пошта абаронена] WhatsApp + 8618078869184
мова

    Падрабязнае тлумачэнне трансляцыі ў Android

     

    Вяшчанне падзяляецца на два розныя тыпы: "Нармальнае вяшчанне" і "Упарадкаванае вяшчанне". Звычайная трансляцыя цалкам асінхронная і можа быць прынята ўсімі транслятарамі адначасова (лагічна). Эфектыўнасць дастаўкі паведамленняў адносна высокая, але недахопам з'яўляецца тое, што атрымальнік не можа перадаць вынік апрацоўкі наступнаму прымачу, і ён не можа быць спынены. Распаўсюджванне намеру трансляцыі; аднак упарадкаваная трансляцыя грунтуецца на прыярытэце, заяўленым прымачом (заяўленым у андроідзе: атрыбут приоритета элемента фільтра намера, чым большая колькасць, тым вышэй прыярытэт, дыяпазон значэнняў: ад 1000 да 1000. магчыма Выклікаць setPriority () аб'екта IntentFilter, які трэба ўсталяваць), і атрымальнік атрымлівае трансляцыю па чарзе. Напрыклад, калі ўзровень A вышэйшы за ўзровень B, а ўзровень B вышэйшы за C, то трансляцыя спачатку перадаецца ў A, потым у B і, нарэшце, у C. Пасля таго, як A атрымлівае трансляцыю, можа захоўваць дадзеныя ў эфіры. Калі трансляцыя адпраўляецца на B, B можа атрымаць дадзеныя, якія захоўваюцца ў A, з трансляцыі.

     

    Context.sendBroadcast ()

       Дасланы звычайны эфір, і ўсе падпісчыкі маюць магчымасць атрымаць і апрацаваць яго.

     

    Context.sendOrderedBroadcast ()

       Адпраўка - гэта ўпарадкаваная трансляцыя. Сістэма будзе выконваць прымачы па адным у адпаведнасці з прыярытэтам, заяўленым прымачом. Папярэдні прымач мае права спыніць трансляцыю (BroadcastReceiver.abortBroadcast ()). Калі трансляцыя спыняецца папярэднім прымачом, апошні прымач больш не можа атрымаць трансляцыю. Для замоўленай трансляцыі папярэдні прымач можа захоўваць вынік апрацоўкі ў намеры трансляцыі, а затым перадаваць яго наступнаму прымачу.

     
    Прыёмнік вяшчання (BroadcastReceiver) выкарыстоўваецца для атрымання трансляцыі Intent, а адпраўка трансляцыі Intent рэалізуецца шляхам выкліку Context.sendBroadcast () і Context.sendOrderedBroadcast (). Звычайна шырокавяшчальны намер можа быць атрыманы некалькімі прымальнымі трансляцыямі, падпісанымі на гэты намер. Гэтая функцыя падобная на прымачы паведамленняў Topic у JMS. Рэалізаваць радыёвяшчальны метад можна наступным чынам:

     

    Першы крок: вызначце шырокавяшчальны прыёмнік, наследуйце BroadcastReceiver і перапішыце метад onReceive ().

    адкрыты клас IncomingSMSReceiver extendsBroadcastReceiver {
      @Override public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Крок 2: Падпішыцеся на эфір. Намер зацікавіць. Ёсць два спосабы падпіскі:

    Першы тып: выкарыстоўваць код для падпіскі (дынамічная падпіска)

    Фільтр IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    IncomingSMSReceiver приемник = newIncomingSMSReceiver ();
    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;

    / **
     * Статычная трансляцыя падпіскі
     * @author weijiang204321
     *
     */
    грамадскі клас StaticRegisterBroadcastActivity пашырае Activity {

    @Override
    абароненая пустэча onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Кнопка btn = (Кнопка) findViewById (R.id.btn);
    да
    btn.setOnClickListener (новы OnClickListener () {
    @Override
    public void onClick (View v) {
    // Выкарыстоўвайце статычны спосаб рэгістрацыі трансляцыі, вы можаце выкарыстоўваць намер адлюстравання для адпраўкі трансляцыі
    Намер трансляцыі = новы намер ("com.broadcast.set.broadcast");
    sendBroadcast (трансляцыя, нуль);
    }
    да
    });
    }
    да
    }


    Падпішыцеся на AndroidMainfest.xml:



    <маніфест 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;

    / **
     * Вяшчальны прыёмнік
     * @author weijiang204321
     *
     */
    адкрыты клас UnSortBroadcastReceiver пашырае BroadcastReceiver {

    @Override
    public void 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;

    / **
     * Выкарыстоўвайце дынамічны спосаб рэгістрацыі трансляцыі
     * @author weijiang204321
     *
     */
    грамадскі клас DynamicRegisterBroadcastActivity пашырае Activity {
    да
    публічны статычны фінальны радок NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    абаронены прыёмнік UnSortBroadcastReceiver;
    да
    @Override
    абароненая пустэча onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Кнопка btn0 = (Кнопка) findViewById (R.id.btn);
    btn0.setOnClickListener (новы OnClickListener () {
    public void onClick (View v) {
    // Адправіць трансляцыю
    Намер it = новы намер (NEW_LIFEFORM_DETECTED);
    sendBroadcast (гэта);
    }
    });
    }

    @Override
    абароненая пустэча onResume () {
    super.onResume ();
    // Зарэгістравацца для трансляцыі
    IntentFilter counterActionFilter = новы IntentFilter (NEW_LIFEFORM_DETECTED);
    прыёмнік = новы UnSortBroadcastReceiver ();
    registerReceiver (прыёмнік, counterActionFilter);
    }

    @Override
    абароненая пустэча onPause () {
    super.onPause ();
    // Адмяніць трансляцыю
    unregisterReceiver (прымач);
    }
    }
    Тут мы падпісваемся на трансляцыю ў onResume і адмаўляемся ад трансляцыі ў onPause.
    Зменіце запушчаны Activity на DynamicRegisterBroadcastActivity у AndroidMainfest.xml. Астатні змест не трэба мадыфікаваць. Запусціце праграму і раздрукуйце вынік вельмі проста, таму я не ўбачу малюнак тут.

     

    Давайце паглядзім на замоўленае вяшчанне і неўпарадкаванае вяшчанне

    Мы ўжо згадвалі пра гэта напачатку, давайце паглядзім на бязладнае вяшчанне:

    Спачатку вызначым два прымачы:

    Першы прыёмнік вяшчання:


    пакет com.broadcast.receiver;

    імпартаваць android.content.BroadcastReceiver;
    імпарт android.content.Context;
    імпарт android.content.Intent;
    імпартаваць android.util.Log;

    / **
     * Вяшчальны прыёмнік A
     * @author weijiang204321
     *
     */
    грамадскі клас SortBroadcastReceiverA пашырае BroadcastReceiver {

    @Override
    public void onReceive (кантэкст кантэксту, намер намеру) {
    Log.e ("Дэманстрацыя:", "вяшчальны прыёмнік A");
    }

    }
    Другі транслятар:

    пакет com.broadcast.receiver;

    імпартаваць android.content.BroadcastReceiver;
    імпарт android.content.Context;
    імпарт android.content.Intent;
    імпартаваць android.util.Log;

    / **
     * Вяшчальны прымач B
     * @author weijiang204321
     *
     */
    грамадскі клас SortBroadcastReceiverB пашырае BroadcastReceiver {

    @Override
    public void onReceive (кантэкст кантэксту, намер намеру) {
    Log.e ("Дэманстрацыя:", "Трансляцыя B");
    }

    да
    да
    }


    Падпішыцеся на трансляцыю ў AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    Вынік аперацыі:


    Вынік запуску трохі дзіўны. Чаму прымач B знаходзіцца спераду, а прымач A - ззаду? Прычына ў тым, што, калі мы падпісваемся на трансляцыю ў AndroidMainfest.xml, мы ўсталёўваем значэнне атрыбута android: priority у фільтры intent. Чым больш значэнне, тым вышэй прыярытэт. , Прыярытэт прымача B - 1000, прыярытэт прымача A - 999, таму B прымае трансляцыю спачатку, а потым A прымае яе, але сувязь паміж прымачом B і прымачом A адсутнічае, і ўзаемадзеяння не можа быць так, паколькі гэта няправільная трансляцыя і асінхронная, мы можам правесці эксперымент, дадаўшы код у метад onReceiver у B:

    abortBroadcast (); // Спыніць перадачу гэтай трансляцыі

    Вынік аперацыі:

     

    Мы можам заўважыць аператыўную памылку, гэта значыць, што неўпарадкаваная трансляцыя не мае права спыняць трансляцыю. На самай справе спыненне бескарысна, бо прымач А ўсё яшчэ прымае трансляцыю.

     

    Давайце паглядзім на ўпарадкаванае вяшчанне, код трэба змяніць:

    Першае - пры адпраўцы трансляцыі:


    Намер трансляцыі = новы намер ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (трансляцыя, нуль);
    Затым дадайце метад спынення трансляцыі ў прыёмніку 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
     * @author weijiang204321
     *
     */
    грамадскі клас SortBroadcastReceiverB пашырае BroadcastReceiver {

    @Override
    public void onReceive (кантэкст кантэксту, намер намеру) {
    Log.e ("Дэма:", "прымач B");
    Bundle bundle = новы Bundle ();
    bundle.putString ("наступны_атрымальнік", "наступны прыёмнік вяшчання");
    setResultExtras (камплект);
    }
    да
    }
    Пасля таго, як B прымае трансляцыю, ён захоўвае нейкае значэнне і перадае яго наступнаму прымачу.


    Код прыёмніка А:


    пакет com.broadcast.receive

     

     

     

     

    Спіс усіх Пытанне

    мянушка

    E-mail

    пытанняў

    Наш іншы прадукт:

    Прафесійны пакет абсталявання 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 Бесправадная перадача відэа і аўдыё лягчэй!

  • Кантакт

    Адрас:
    No.305 Нумар HuiLan Будынак No.273 Huanpu Road Гуанчжоу Кітай 510620

    Электронная пошта:
    [электронная пошта абаронена]

    Тэл / WhatApps:
    +8618078869184

  • катэгорыі

  • бюлетэнь

    ІМЯ ІМЯ

    Электронная пошта

  • рашэнне PayPal  Western Unionбанк Кітая
    Электронная пошта:[электронная пошта абаронена]   WhatsApp: +8618078869184 Skype: sky198710021 Чат са мной
    Copyright 2006-2020 Powered By www.fmuser.org

    кантакт