FMUSER Bezdrôtové vysielanie videa a zvuku je jednoduchšie!

[chránené e-mailom] WhatsApp + 8618078869184
Jazyk

    Podrobné vysvetlenie vysielania v systéme Android

     

    Vysielanie je rozdelené do dvoch rôznych typov: „Normálne vysielanie“ a „Objednané vysielanie“. Bežné vysielanie je úplne asynchrónne a môžu ho prijímať všetky rozhlasové prijímače súčasne (logicky). Účinnosť doručovania správ je pomerne vysoká, nevýhodou však je, že prijímač nemôže odovzdať výsledok spracovania ďalšiemu prijímateľovi a nemožno ho ukončiť. Šírenie zámeru vysielania; usporiadané vysielanie je však založené na priorite deklarovanej prijímačom (deklarovaná v atribúte android: priority prvku filtra zámeru, čím väčšie číslo, tým vyššia priorita, rozsah hodnôt: -1000 až 1000 XNUMX. Je tiež možné Zavolajte setPriority () objektu IntentFilter, ktorý chcete nastaviť) a príjemca postupne dostane vysielanie. Napríklad, ak je úroveň A vyššia ako úroveň B a úroveň B je vyššia ako C, potom sa vysielanie najskôr prenesie do A, potom do B a nakoniec do C. Keď A získa vysielanie, môže ukladať dáta do vysielania. Keď sa vysielanie pošle do B, B môže získať dáta uložené A z vysielania.

     

    Context.sendBroadcast ()

       Posiela sa obyčajné vysielanie a všetci predplatitelia majú možnosť ich získať a spracovať.

     

    Context.sendOrderedBroadcast ()

       Odosielanie je usporiadané vysielanie. Systém vykoná prijímače jeden po druhom podľa priority deklarovanej prijímačom. Predchádzajúci príjemca má právo ukončiť vysielanie (BroadcastReceiver.abortBroadcast ()). Ak je vysielanie ukončené predchádzajúcim prijímačom, tým druhým prijímač už nemôže vysielať. Pri objednanom vysielaní môže predchádzajúci prijímač uložiť výsledok spracovania do vysielacieho zámeru a potom ho odovzdať ďalšiemu prijímaču.

     
    Prijímač vysielania (BroadcastReceiver) sa používa na príjem vysielaného zámeru a odoslanie vysielaného zámeru sa realizuje volaním Context.sendBroadcast () a Context.sendOrderedBroadcast (). Zvyčajne môžu byť vysielané zámery prijímané viacerými rozhlasovými prijímačmi prihlásenými na odber tohto zámeru. Táto funkcia je podobná prijímačom témových správ v JMS. Implementácia metódy prijímača vysielania je nasledovná:

     

    Prvý krok: definujte prijímač vysielania, dedte BroadcastReceiver a prepíšte metódu onReceive ().

    verejná trieda IncomingSMSReceiver extendsBroadcastReceiver {
      @Override public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Krok 2: Prihláste sa na odber požadovaného vysielacieho zámeru, existujú dva spôsoby prihlásenia:

    Prvý typ: na prihlásenie použite kód (dynamické predplatné)

    Filter IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    Prijímač IncomingSMSReceiver = newIncomingSMSReceiver ();
    registerReceiver (prijímač, filter);

     

    Druhý typ: Prihlásiť sa na odber v systéme Windows uzol v súbore AndroidManifest.xml (statické predplatné)


      
           
      


    Pozrime sa na rozdiel medzi predplatným dynamického vysielania a odberom statického vysielania:
    Statické predplatné sa tiež nazýva: miestne vysielanie. Ak je vaša aplikácia zatvorená, môže sa zobraziť aj rozhlasová správa, ktorú ste napísali. Spôsob registrácie je vo vašej aplikácii AndroidManifast. .xml na predplatné.

     

    Dynamické vysielanie predplatného sa tiež nazýva: nerezidentné vysielanie. Keď sa aplikácia skončí, vysielanie prirodzene zmizne. Napríklad si predplatíte vysielanie v rámci aktivity onCreate alebo onResume a musíte zrušiť predplatné vysielania v onDestory alebo onPause. V opačnom prípade bude hlásená výnimka, takže váš prijímač vysielania bude nerezidentom.

     

    Je tu ešte jeden detail, ktorým sú dve metódy predplatného. Pri odosielaní vysielania musíte venovať pozornosť: Metóda implicitného zámeru sa používa na dynamickú registráciu, takže pri odosielaní vysielania musíte použiť implicitný zámer. , V opačnom prípade nebude prijímač vysielania schopný prijímať vysielanie. Venujte pozornosť tomuto bodu. Ale pri statickom prihlásení na odber, pretože je prihlásený na odber AndroidMainfest.xml, je možné pri odosielaní vysielania použiť display Intent a implicit Intent (samozrejme je to iba pre nami definované prijímače vysielania), takže pre každý prípad všeobecne používame implicitné Zámer poslať vysielanie.

     

    Pozrime sa na príklad:

    Pozrite sa na štruktúru projektu:

     

    Pozrite sa na vysielanie statického predplatného:
    balíček com.broadcast.demo;

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

    importujte com.example.androidbroadcastdemo.R;

    / **
     * Vysielanie statického predplatného
     * @autor weijiang204321
     *
     */
    verejná trieda StaticRegisterBroadcastActivity rozširuje aktivitu {

    @ Override
    protected void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Tlačidlo btn = (Tlačidlo) findViewById (R.id.btn);
    na
    btn.setOnClickListener (nový OnClickListener () {
    @ Override
    public void onClick (Zobraziť v) {
    // Ak chcete zaregistrovať vysielanie, použite statický spôsob, ako vysielanie môžete použiť zámer zobrazenia
    Zámer vysielania = nový zámer ("com.broadcast.set.broadcast");
    sendBroadcast (broadcast, null);
    }
    na
    });
    }
    na
    }


    Prihláste sa na odber v súbore AndroidMainfest.xml:



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

        <používa-sdk
            android: minSdkVersion = "8"
            android: targetSdkVersion = "18" />
       
       
       
       
       
       

        <aplikácia
            android: allowBackup = "true"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ string / app_name"
            android: theme = "@ style / AppTheme">
            <činnosť
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ reťazec / názov_aplikácie">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    O ďalší obsah sa zatiaľ nebojte, o čom si ešte povieme neskôr, tu sa zameriavame iba na registráciu statického vysielania


          
               
                   
               
           


    Poďme sa pozrieť na prijímač vysielania:

    balíček com.broadcast.receiver;

    importovať android.content.BroadcastReceiver;
    importovať android.content.Context;
    importovať android.content.Intent;
    importovať android.util.Log;

    / **
     * Prijímač vysielania
     * @autor weijiang204321
     *
     */
    public class UnSortBroadcastReceiver rozširuje BroadcastReceiver {

    @ Override
    public void onReceive (kontextový kontext, zámerný zámer) {
    Log.e ("Intent_Action:", intent.getAction () + "");
    }

    }
    Logika metódy onReceive v prijímači vysielania je veľmi jednoduchá, čo znamená tlačiť obsah akcie.
    Spustite program, výsledok je veľmi jednoduchý, tu nie je obrázok.

     

    Pozrime sa na dynamické predplatné:


    balíček com.broadcast.demo;

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

    importovať com.broadcast.receiver.UnSortBroadcastReceiver;
    importujte com.example.androidbroadcastdemo.R;

    / **
     * Použite dynamický spôsob registrácie vysielania
     * @autor weijiang204321
     *
     */
    verejná trieda DynamicRegisterBroadcastActivity rozširuje aktivitu {
    na
    public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    chránený prijímač UnSortBroadcastReceiver;
    na
    @ Override
    protected void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Tlačidlo btn0 = (Tlačidlo) findViewById (R.id.btn);
    btn0.setOnClickListener (nový OnClickListener () {
    public void onClick (Zobraziť v) {
    // Odoslať vysielanie
    Intent it = nový zámer (NEW_LIFEFORM_DETECTED);
    sendBroadcast (it);
    }
    });
    }

    @ Override
    protected void onResume () {
    super.onResume ();
    // Zaregistrujte sa na vysielanie
    IntentFilter counterActionFilter = nový IntentFilter (NEW_LIFEFORM_DETECTED);
    prijímač = nový UnSortBroadcastReceiver ();
    registerReceiver (prijímač, counterActionFilter);
    }

    @ Override
    protected void onPause () {
    super.onPause ();
    // Zrušiť vysielanie
    unregisterReceiver (prijímač);
    }
    }
    Tu sa prihlasujeme na odber vysielania v službe onResume a odhlasujeme vysielanie v službe onPause.
    Zmeňte spustenú aktivitu na DynamicRegisterBroadcastActivity v súbore AndroidMainfest.xml. Ostatný obsah nie je potrebné upravovať. Spustite program a vytlačte výsledok je veľmi jednoduchý, takže tu neuvidím obrázok.

     

    Poďme sa pozrieť na objednané vysielanie a neusporiadané vysielanie

    Už sme to spomenuli na začiatku, poďme sa pozrieť na neusporiadané vysielanie:

    Najprv definujeme dva vysielacie prijímače:

    Prvý vysielací prijímač:


    balíček com.broadcast.receiver;

    importovať android.content.BroadcastReceiver;
    importovať android.content.Context;
    importovať android.content.Intent;
    importovať android.util.Log;

    / **
     * Prijímač vysielania A
     * @autor weijiang204321
     *
     */
    verejná trieda SortBroadcastReceiverA rozširuje BroadcastReceiver {

    @ Override
    public void onReceive (kontextový kontext, zámerný zámer) {
    Log.e („Ukážka:“, „vysielací prijímač A“);
    }

    }
    Druhý prijímač vysielania:

    balíček com.broadcast.receiver;

    importovať android.content.BroadcastReceiver;
    importovať android.content.Context;
    importovať android.content.Intent;
    importovať android.util.Log;

    / **
     * Prijímač vysielania B
     * @autor weijiang204321
     *
     */
    verejná trieda SortBroadcastReceiverB rozširuje BroadcastReceiver {

    @ Override
    public void onReceive (kontextový kontext, zámerný zámer) {
    Log.e („Ukážka:“, „Vysielanie B“);
    }

    na
    na
    }


    Prihláste sa na odber vysielania v súbore AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    výsledok operácie:


    Priebežný výsledok je trochu zvláštny. Prečo je prijímač B vpredu a prijímač A vzadu? Dôvod je ten, že keď sa prihlásime na odber vysielania v súbore AndroidMainfest.xml, nastavíme hodnotu atribútu android: priority vo filtri úmyslov. Čím vyššia je hodnota, tým vyššia je priorita. , Priorita prijímača B je 1000 999, priorita prijímača A je XNUMX, takže B prijíma najskôr vysielanie a potom ho prijíma A, ale medzi prijímačom B a prijímačom A nie je žiadne spojenie a nemôže dochádzať k interakcii. Áno, pretože toto je vysielanie mimo poradia a asynchrónne, môžeme urobiť experiment pridaním kódu k metóde onReceiver v B:

    abortBroadcast (); // Ukončí prenos tohto vysielania

    výsledok operácie:

     

    Vidíme rýchlu chybu, to znamená, že neobjednané vysielanie nemá povolené vysielanie ukončiť. Ukončenie je v skutočnosti zbytočné, pretože prijímač A stále prijíma vysielanie.

     

    Poďme sa pozrieť na usporiadané vysielanie, kód je potrebné upraviť:

    Prvý je pri odosielaní vysielania:


    Zámer vysielania = nový zámer ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (broadcast, null);
    Potom pridajte spôsob ukončenia vysielania v prijímači B:
    abortBroadcast ();

    Druhý kód nie je potrebné upravovať, výsledok operácie:

     

    Existuje iba prijímač B, prijímač A neprijíma vysielanie, pretože vysielanie je ukončené v prijímači B a nasledujúce prijímače ho nemôžu prijať.

    Upravte kód nižšie:

    Príjemca B:


    balíček com.broadcast.receiver;

    importovať android.content.BroadcastReceiver;
    importovať android.content.Context;
    importovať android.content.Intent;
    importovať android.os.Bundle;
    importovať android.util.Log;

    / **
     * Prijímač vysielania B
     * @autor weijiang204321
     *
     */
    verejná trieda SortBroadcastReceiverB rozširuje BroadcastReceiver {

    @ Override
    public void onReceive (kontextový kontext, zámerný zámer) {
    Log.e („Ukážka:“, „vysielací prijímač B“);
    Bundle bundle = nový Bundle ();
    bundle.putString ("next_receiver", "ďalší vysielací prijímač");
    setResultExtras (zväzok);
    }
    na
    }
    Po prijatí vysielania B uloží určitú hodnotu a odovzdá ju ďalšiemu prijímaču.


    Kód prijímača A:


    balík com.broadcast.receive

     

     

     

     

    Zoznamu Všetky Otázka

    prezývka

    E-mail

    otázky

    Náš ďalší produkt:

    Profesionálny balík vybavenia FM rádiovej stanice

     



     

    Hotelové IPTV riešenie

     


      Zadajte e-mail, aby ste dostali prekvapenie

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> afrikánčina
      sq.fmuser.org -> albánsky
      ar.fmuser.org -> arabčina
      hy.fmuser.org -> Arménsky
      az.fmuser.org -> azerbajdžanský
      eu.fmuser.org -> baskičtina
      be.fmuser.org -> bieloruský
      bg.fmuser.org -> Bulgarian
      ca.fmuser.org -> katalánčina
      zh-CN.fmuser.org -> čínština (zjednodušená)
      zh-TW.fmuser.org -> čínština (tradičná)
      hr.fmuser.org -> chorvátčina
      cs.fmuser.org -> čeština
      da.fmuser.org -> dánčina
      nl.fmuser.org -> Dutch
      et.fmuser.org -> estónčina
      tl.fmuser.org -> filipínsky
      fi.fmuser.org -> fínčina
      fr.fmuser.org -> French
      gl.fmuser.org -> galícijčina
      ka.fmuser.org -> gruzínsky
      de.fmuser.org -> nemčina
      el.fmuser.org -> Greek
      ht.fmuser.org -> haitská kreolčina
      iw.fmuser.org -> hebrejčina
      hi.fmuser.org -> hindčina
      hu.fmuser.org -> Hungarian
      is.fmuser.org -> islandský
      id.fmuser.org -> indonézština
      ga.fmuser.org -> írsky
      it.fmuser.org -> Italian
      ja.fmuser.org -> japončina
      ko.fmuser.org -> kórejčina
      lv.fmuser.org -> lotyšský
      lt.fmuser.org -> litovčina
      mk.fmuser.org -> macedónsky
      ms.fmuser.org -> malajčina
      mt.fmuser.org -> maltčina
      no.fmuser.org -> Norwegian
      fa.fmuser.org -> perzský
      pl.fmuser.org -> poľština
      pt.fmuser.org -> portugalčina
      ro.fmuser.org -> rumunčina
      ru.fmuser.org -> ruština
      sr.fmuser.org -> srbčina
      sk.fmuser.org -> slovenčina
      sl.fmuser.org -> slovinčina
      es.fmuser.org -> španielčina
      sw.fmuser.org -> svahilčina
      sv.fmuser.org -> švédčina
      th.fmuser.org -> Thai
      tr.fmuser.org -> turečtina
      uk.fmuser.org -> ukrajinčina
      ur.fmuser.org -> urdčina
      vi.fmuser.org -> Vietnamese
      cy.fmuser.org -> waleština
      yi.fmuser.org -> jidiš

       
  •  

    FMUSER Bezdrôtové vysielanie videa a zvuku je jednoduchšie!

  • Kontakt

    adresa:
    Budova č. 305 Izba HuiLan č. 273 Huanpu Road Kanton Čína 510620

    E-mail:
    [chránené e-mailom]

    Tel / Aké aplikácie:
    + 8618078869184

  • Kategórie

  • Prihlás sa na odber Newslettra

    PRVÉ ALEBO CELÉ NÁZOV

    E-mail

  • riešenie paypal  Western UnionBank of China
    E-mail:[chránené e-mailom]   WhatsApp: +8618078869184 Skype: sky198710021 Chat so mnou
    Copyright 2006 2020-Powered By www.fmuser.org

    Kontaktujte nás