FMUSER Wirless Transmit video și audio mai ușor!

[e-mail protejat] WhatsApp + 8618078869184
Limbă

    Explicație detaliată a emisiunii în Android

     

    Radiodifuziunea este împărțită în două tipuri diferite: „Difuzări normale” și „Difuzări comandate”. Difuzarea obișnuită este complet asincronă și poate fi recepționată de toți receptorii de difuzare în același timp (logic). Eficiența livrării mesajelor este relativ mare, dar dezavantajul este că receptorul nu poate transmite rezultatul procesării către următorul receptor și nu poate fi terminat. Propagarea intenției de difuzare; cu toate acestea, difuzarea ordonată se bazează pe prioritatea declarată de receptor (declarată în Android: atributul de prioritate al elementului de filtrare a intenției, cu cât numărul este mai mare, cu atât este mai mare prioritatea, intervalul de valori: -1000 până la 1000. De asemenea, este posibil Apelați setPriority () obiectului IntentFilter pentru setare), iar destinatarul primește pe rând difuzarea. De exemplu, dacă nivelul lui A este mai mare decât cel al lui B și nivelul lui B este mai mare decât C, atunci transmisia este transmisă mai întâi către A, apoi către B și, în cele din urmă, către C. După ce A primește difuzarea, poate stoca date în difuzare. Când transmisia este trimisă către B, B poate obține datele stocate de A de la difuzare.

     

    Context.sendBroadcast ()

       Ceea ce este trimis este o transmisie obișnuită, iar toți abonații au posibilitatea să o obțină și să o proceseze.

     

    Context.sendOrderedBroadcast ()

       Trimiterea este o transmisie ordonată. Sistemul va executa receptorii unul câte unul în funcție de prioritatea declarată de receptor. Receptorul anterior are dreptul de a încheia difuzarea (BroadcastReceiver.abortBroadcast ()). Dacă transmisia este terminată de receptorul anterior, acesta din urmă Receptorul nu mai poate obține difuzarea. Pentru difuzarea comandată, receptorul anterior poate stoca rezultatul procesării în intenția de difuzare, apoi îl poate transmite următorului receptor.

     
    Receptorul de difuzare (BroadcastReceiver) este utilizat pentru a primi intenția de difuzare, iar trimiterea intenției de difuzare se realizează apelând Context.sendBroadcast () și Context.sendOrderedBroadcast (). De obicei, o intenție de difuzare poate fi primită de mai mulți receptori de difuzare abonați la această intenție. Această caracteristică este similară cu receptorii de mesaje Subiect din JMS. Pentru a implementa o metodă de recepție de difuzare este după cum urmează:

     

    Primul pas: definiți receptorul de difuzare, moșteniți BroadcastReceiver și rescrieți metoda onReceive ().

    clasă publică IncomingSMSReceiver extinde BroadcastReceiver {
      @Override public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Pasul 2: Abonați-vă la emisiunea Intent de interes, există două metode de abonament:

    Primul tip: utilizați codul pentru a vă abona (abonament dinamic)

    Filtru IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    Receptor IncomingSMSReceiver = newIncomingSMSReceiver ();
    registerReceiver (receptor, filtru);

     

    Al doilea tip: Abonați-vă în nod în fișierul AndroidManifest.xml (abonament static)


      
           
      


    Să aruncăm o privire la diferența dintre abonamentul de difuzare dinamică și abonamentul de difuzare static:
    Difuzarea statică prin abonament se mai numește: difuzare rezidentă. Când aplicația dvs. este închisă, dacă există un mesaj difuzat, receptorul de difuzare pe care l-ați scris îl poate primi și el. Metoda sa de înregistrare este AndroidManifast în aplicația dvs. .xml pentru abonament.

     

    Difuzarea dinamică a abonamentului se mai numește: transmisie nerezidentă. Când aplicația se termină, difuzarea va dispărea în mod natural. De exemplu, vă abonați la difuzarea din onCreate sau onResume din activitate și trebuie să anulați abonamentul de difuzare în onDestory sau onPause. În caz contrar, va fi raportată o excepție, astfel încât receptorul dvs. de difuzare va fi un nerezident.

     

    Există încă un detaliu aici, care sunt cele două metode de abonament. Când trimiteți transmisii, trebuie să acordați atenție: Metodei intenției implicite este utilizată pentru înregistrarea dinamică, deci trebuie să utilizați intenția implicită pentru a trimite atunci când trimiteți transmisii. , În caz contrar, receptorul de difuzare nu va putea primi difuzarea. Fii atent la acest punct. Dar atunci când vă abonați static, deoarece este abonat în AndroidMainfest.xml, este posibil să utilizați afișarea Intent și implicit Intent atunci când trimiteți transmisii (desigur, acest lucru este doar pentru receptoarele de difuzare definite de noi înșine), deci, în caz că, în general, folosim implicit Intenția de a trimite difuzarea.

     

    Să vedem un exemplu:

    Aruncați o privire asupra structurii proiectului:

     

    Aruncați o privire asupra difuzării statice a abonamentului:
    pachet com.broadcast.demo;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    import com.example.androidbroadcastdemo.R;

    / **
     * Abonament static difuzat
     * @autor weijiang204321
     *
     */
    public class StaticRegisterBroadcastActivity extinde activitatea {

    @Trece peste
    void protejat onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Buton btn = (Buton) findViewById (R.id.btn);
    La
    btn.setOnClickListener (nou OnClickListener () {
    @Trece peste
    public void onClick (View v) {
    // Utilizați un mod static pentru a înregistra difuzarea, puteți utiliza intenția de afișare pentru a trimite difuzarea
    Intent broadcast = new Intent ("com.broadcast.set.broadcast");
    sendBroadcast (difuzat, nul);
    }
    La
    });
    }
    La
    }


    Abonați-vă în AndroidMainfest.xml:



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

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

        <aplicare
            android: allowBackup = "true"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ string / app_name"
            android: theme = "@ style / AppTheme">
            <activitate
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    Nu vă faceți griji pentru celelalte conținuturi pentru moment, așa cum vom vorbi mai târziu, aici ne concentrăm doar pe înregistrarea transmisiunilor statice


          
               
                   
               
           


    Să aruncăm o privire la receptorul difuzării:

    pachet com.broadcast.receiver;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;

    / **
     * Receptor de transmisie
     * @autor weijiang204321
     *
     */
    public class UnSortBroadcastReceiver extinde BroadcastReceiver {

    @Trece peste
    public void onReceive (context context, intenție intenționată) {
    Log.e ("Intent_Action:", intent.getAction () + "");
    }

    }
    Logica metodei onReceive în receptorul de difuzare este foarte simplă, adică imprimarea conținutului acțiunii.
    Rulați programul, rezultatul este foarte simplu, aici nu este imaginea.

     

    Să aruncăm o privire asupra abonamentelor dinamice:


    pachet com.broadcast.demo;

    import android.app.Activity;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    import com.broadcast.receiver.UnSortBroadcastReceiver;
    import com.example.androidbroadcastdemo.R;

    / **
     * Utilizați modul dinamic pentru a înregistra difuzarea
     * @autor weijiang204321
     *
     */
    public class DynamicRegisterBroadcastActivity extinde activitatea {
    La
    șir public final static NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    receptor UnSortBroadcastReceiver protejat;
    La
    @Trece peste
    void protejat onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Buton btn0 = (Buton) findViewById (R.id.btn);
    btn0.setOnClickListener (nou OnClickListener () {
    public void onClick (View v) {
    // Trimiteți difuzarea
    Intent it = intenție nouă (NEW_LIFEFORM_DETECTED);
    sendBroadcast (it);
    }
    });
    }

    @Trece peste
    void protejat onResume () {
    super.onResume ();
    // Înregistrați-vă pentru difuzare
    IntentFilter counterActionFilter = nou IntentFilter (NEW_LIFEFORM_DETECTED);
    receiver = new UnSortBroadcastReceiver ();
    registerReceiver (receptor, counterActionFilter);
    }

    @Trece peste
    nul protejat onPause () {
    super.onPause ();
    // Anulați difuzarea
    unregisterReceiver (receptor);
    }
    }
    Aici ne abonăm la difuzarea în onResume și ne dezabonăm la difuzarea în onPause.
    Schimbați activitatea lansată în DynamicRegisterBroadcastActivity în AndroidMainfest.xml. Celălalt conținut nu trebuie modificat. Rulați programul și imprimați rezultatul este foarte simplu, așa că nu voi vedea imaginea aici.

     

    Să aruncăm o privire la difuzarea ordonată și difuzarea neordonată

    Am menționat deja acest lucru la început, să aruncăm o privire asupra difuzării dezordonate:

    Mai întâi definim două receptoare de difuzare:

    Primul receptor de difuzare:


    pachet com.broadcast.receiver;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;

    / **
     * Receptor de transmisie A
     * @autor weijiang204321
     *
     */
    public class SortBroadcastReceiverA extinde BroadcastReceiver {

    @Trece peste
    public void onReceive (context context, intenție intenționată) {
    Log.e ("Demo:", "receptor de difuzare A");
    }

    }
    Al doilea receptor de difuzare:

    pachet com.broadcast.receiver;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;

    / **
     * Receptor de difuzare B
     * @autor weijiang204321
     *
     */
    public class SortBroadcastReceiverB extinde BroadcastReceiver {

    @Trece peste
    public void onReceive (context context, intenție intenționată) {
    Log.e („Demo:”, „Broadcast B”);
    }

    La
    La
    }


    Abonați-vă pentru a difuza în AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    rezultatul operației:


    Rezultatul alergării este cam ciudat. De ce este receptorul B în față și receptorul A în spate? Motivul este că atunci când ne abonăm la transmisia în AndroidMainfest.xml, setăm valoarea atributului android: prioritate în filtrul de intenție. Cu cât valoarea este mai mare, cu atât este mai mare prioritatea. , Prioritatea receptorului B este 1000, prioritatea receptorului A este 999, deci B primește difuzarea mai întâi, apoi A o primește, dar nu există nicio conexiune între receptorul B și receptorul A și nu poate exista interacțiune Da, deoarece aceasta este o difuzare în afara ordinii și asincronă, putem face un experiment adăugând cod la metoda onReceiver din B:

    abortBroadcast (); // Termină transmisia acestei difuzări

    rezultatul operației:

     

    Putem vedea eroarea promptă, adică difuzarea neordonată nu are voie să încheie difuzarea. De fapt, terminarea este inutilă, deoarece receptorul A primește în continuare difuzarea.

     

    Să aruncăm o privire la difuzarea ordonată, codul trebuie modificat:

    Primul este atunci când trimiteți o transmisie:


    Intent broadcast = new Intent ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (difuzat, nul);
    Apoi adăugați o metodă pentru a termina difuzarea în receptorul B:
    abortBroadcast ();

    Celălalt cod nu trebuie modificat, rezultatul operației:

     

    Există doar receptorul B, receptorul A nu primește transmisia, deoarece difuzarea este terminată în receptorul B, iar receptorii ulteriori nu o pot accepta.

    Modificați codul de mai jos:

    Destinatarul B:


    pachet com.broadcast.receiver;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;

    / **
     * Receptor de difuzare B
     * @autor weijiang204321
     *
     */
    public class SortBroadcastReceiverB extinde BroadcastReceiver {

    @Trece peste
    public void onReceive (context context, intenție intenționată) {
    Log.e ("Demo:", "receptor de difuzare B");
    Bundle bundle = pachet nou ();
    bundle.putString ("next_receiver", "next broadcast receiver");
    setResultExtras (pachet);
    }
    La
    }
    După ce B primește transmisia, stochează o anumită valoare și o transmite următorului receptor.


    Codul receptorului A:


    pachet com.broadcast.receive

     

     

     

     

    Lista de toate Întrebarea

    Poreclă

    E-mail

    Întrebări

    alt produs nostru:

    Pachet de echipamente profesionale pentru stația radio FM

     



     

    Soluție IPTV pentru hotel

     


      Introduceți adresa de e-mail pentru a primi o surpriză

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> Afrikaans
      sq.fmuser.org -> Albaneză
      ar.fmuser.org -> arabă
      hy.fmuser.org -> Armeană
      az.fmuser.org -> azeră
      eu.fmuser.org -> bască
      be.fmuser.org -> bielorusă
      bg.fmuser.org -> Bulgarian
      ca.fmuser.org -> catalană
      zh-CN.fmuser.org -> Chineză (simplificată)
      zh-TW.fmuser.org -> Chineză (tradițională)
      hr.fmuser.org -> croată
      cs.fmuser.org -> cehă
      da.fmuser.org -> Daneză
      nl.fmuser.org -> Dutch
      et.fmuser.org -> estonă
      tl.fmuser.org -> filipinez
      fi.fmuser.org -> finlandeză
      fr.fmuser.org -> Franceză
      gl.fmuser.org -> Galeză
      ka.fmuser.org -> Georgiană
      de.fmuser.org -> germană
      el.fmuser.org -> greacă
      ht.fmuser.org -> Creole haitian
      iw.fmuser.org -> ebraică
      hi.fmuser.org -> Hindi
      hu.fmuser.org -> Maghiară
      is.fmuser.org -> islandeză
      id.fmuser.org -> indoneziană
      ga.fmuser.org -> irlandeză
      it.fmuser.org -> Italiană
      ja.fmuser.org -> japoneză
      ko.fmuser.org -> coreeană
      lv.fmuser.org -> letonă
      lt.fmuser.org -> lituaniană
      mk.fmuser.org -> macedoneană
      ms.fmuser.org -> Malay
      mt.fmuser.org -> malteză
      no.fmuser.org -> norvegiană
      fa.fmuser.org -> persană
      pl.fmuser.org -> poloneză
      pt.fmuser.org -> portugheză
      ro.fmuser.org -> Română
      ru.fmuser.org -> rusă
      sr.fmuser.org -> sârbă
      sk.fmuser.org -> slovacă
      sl.fmuser.org -> Slovenă
      es.fmuser.org -> spaniolă
      sw.fmuser.org -> Swahili
      sv.fmuser.org -> suedeză
      th.fmuser.org -> Thai
      tr.fmuser.org -> turcă
      uk.fmuser.org -> ucraineană
      ur.fmuser.org -> Urdu
      vi.fmuser.org -> Vietnameză
      cy.fmuser.org -> galeză
      yi.fmuser.org -> idiș

       
  •  

    FMUSER Wirless Transmit video și audio mai ușor!

  • Contact

    Adresa:
    Nr. 305 Clădirea HuiLan nr. 273 Huanpu Road Guangzhou China 510620

    E-mail:
    [e-mail protejat]

    Tel/WhatApps:
    +8618078869184

  • Categorii

  • Stiri lunare via e-mail

    PRENUME SAU NUMELE COMPLET

    E-mail

  • soluţie paypal  Western UnionBanca Chinei
    E-mail:[e-mail protejat]   WhatsApp: +8618078869184 Skype: sky198710021 Vorbește cu mine
    Drepturile de autor 2006-2020 Powered By www.fmuser.org

    Contactați-ne