FMUSER Wirless pārraida video un audio vieglāk!

[e-pasts aizsargāts] WhatsApp 8618078869184
Valoda

    Detalizēts apraides Android ierīcē skaidrojums

     

    Apraide ir sadalīta divos dažādos veidos: "Parastas apraides" un "Pasūtītas apraides". Parastā apraide ir pilnīgi asinhrona, un to var uztvert visi apraides uztvērēji vienlaikus (loģiski). Ziņu piegādes efektivitāte ir salīdzinoši augsta, taču trūkums ir tāds, ka uztvērējs nevar nodot apstrādes rezultātu nākamajam uztvērējam un to nevar pārtraukt. Broadcast Intent izplatīšana; tomēr pasūtīta apraide tiek balstīta uz uztvērēja deklarēto prioritāti (deklarēta nolūka-filter elementa android: prioritātes atribūtā, jo lielāks skaitlis, jo augstāka prioritāte, vērtību diapazons: -1000 līdz 1000. Tas ir arī iespējams, izsauciet iestatāmā objekta IntentFilter setPriority (), un saņēmējs saņem apraidi pēc kārtas. Piemēram, ja A līmenis ir augstāks nekā B līmenis un B līmenis ir augstāks par C, tad apraide vispirms tiek pārsūtīta uz A, tad uz B un visbeidzot uz C. Pēc tam, kad A saņem apraidi, tā var saglabāt datus apraidē. Kad apraide tiek nosūtīta B, B no apraides var iegūt A saglabātos datus.

     

    Context.sendBroadcast ()

       Tiek sūtīts parasts raidījums, un visiem abonentiem ir iespēja to iegūt un apstrādāt.

     

    Context.sendOrderedBroadcast ()

       Sūtīšana ir kārtīga apraide. Sistēma izpildīs uztvērējus pa vienam atbilstoši uztvērēja deklarētajai prioritātei. Iepriekšējam uztvērējam ir tiesības pārtraukt apraidi (BroadcastReceiver.abortBroadcast ()). Ja apraidi pārtrauc iepriekšējais uztvērējs, pēdējais uztvērējs vairs nevar saņemt apraidi. Lai pasūtītu apraidi, iepriekšējais uztvērējs var saglabāt apstrādes rezultātu apraides nodomā un pēc tam nodot to nākamajam uztvērējam.

     
    Apraides uztvērējs (BroadcastReceiver) tiek izmantots apraides nodoma saņemšanai, un apraides nodoma nosūtīšana tiek veikta, izsaucot Context.sendBroadcast () un Context.sendOrderedBroadcast (). Parasti apraides nodomu var saņemt vairāki apraides uztvērēji, kas abonējuši šo nodomu. Šī funkcija ir līdzīga tēmu ziņojumu uztvērējiem JMS. Apraides uztvērēja metodes ieviešana ir šāda:

     

    Pirmais solis: definējiet apraides uztvērēju, pārmantojiet BroadcastReceiver un pārrakstiet metodi onReceive ().

    publiskā klase IncomingSMSReceiver paplašinaBroadcastReceiver {
      @Orride public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    2. darbība. Abonējiet apraides interesējošo nodomu. Ir divas abonēšanas metodes:

    Pirmais veids: abonēšanai izmantojiet kodu (dinamisks abonements)

    IntentFilter filtrs = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    IncomingSMSReceiver uztvērējs = newIncomingSMSReceiver ();
    registerReceiver (uztvērējs, filtrs);

     

    Otrais veids: Abonējiet mezgls failā AndroidManifest.xml (statisks abonements)


      
           
      


    Apskatīsim dinamiskās apraides un statiskās apraides abonēšanas atšķirību:
    Statisko abonēšanas apraidi sauc arī par rezidentu apraidi. Ja jūsu programma ir aizvērta, ja ir apraides ziņojums, to var saņemt arī jūsu rakstītais apraides uztvērējs. Tās reģistrācijas metode ir AndroidManifast jūsu lietojumprogrammā. .xml abonēšanai.

     

    Dinamisko abonēšanas apraidi sauc arī: nerezidentu apraide. Kad lietojumprogramma beigsies, apraide dabiski izzudīs. Piemēram, jūs abonējat apraidi aktivitātē onCreate vai onResume, un jums ir jāatceļ apraides abonēšana vietnē OnDestory vai onPause. Pretējā gadījumā tiks ziņots par izņēmumu, tāpēc jūsu apraides uztvērējs būs nerezidents.

     

    Šeit ir vēl viena detaļa, kas ir divas abonēšanas metodes. Sūtot apraides, jums jāpievērš uzmanība: Dinamiskai reģistrācijai tiek izmantota netiešā nodoma metode, tāpēc sūtot apraides, jums jāizmanto netiešais nodoms sūtīt. , Pretējā gadījumā apraides uztvērējs nevarēs saņemt apraidi. Pievērsiet uzmanību šim punktam. Bet, abonējot statiski, jo tas ir abonēts vietnē AndroidMainfest.xml, sūtot apraides, ir iespējams izmantot displeja Intent un implicit Intent (protams, tas attiecas tikai uz mūsu pašu definētiem apraides uztvērējiem), tāpēc katram gadījumam mēs parasti izmantojam implicit Nodoms nosūtīt apraidi.

     

    Apskatīsim piemēru:

    Apskatiet projekta struktūru:

     

    Apskatiet statisko abonēšanas apraidi:
    pakete com.broadcast.demo;

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

    importēt com.example.androidbroadcastdemo.R;

    / **
     * Statiska abonēšanas apraide
     * @autors weijiang204321
     *
     */
    public class StaticRegisterBroadcastActivity paplašina darbību {

    @ Pārvarēt
    aizsargāts void onCreate (pakete savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Poga btn = (Poga) findViewById (R.id.btn);
    Uz
    btn.setOnClickListener (jauns OnClickListener () {
    @ Pārvarēt
    public void onClick (skats v) {
    // Izmantojiet statisku veidu, kā reģistrēt apraidi, varat izmantot displeja nolūku raidījuma nosūtīšanai
    Nodomu pārraide = new Intent ("com.broadcast.set.broadcast");
    sendBroadcast (apraide, nulle);
    }
    Uz
    });
    }
    Uz
    }


    Abonējiet vietni 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" />
       
       
       
       
       
       

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

    Pašlaik neuztraucieties par citu saturu, par ko mēs runāsim vēlāk, šeit mēs koncentrējamies tikai uz statisko raidījumu reģistrēšanu


          
               
                   
               
           


    Apskatīsim apraides uztvērēju:

    pakete com.broadcast.receiver;

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

    / **
     * Apraides uztvērējs
     * @autors weijiang204321
     *
     */
    publiskā klase UnSortBroadcastReceiver paplašina BroadcastReceiver {

    @ Pārvarēt
    public void onReceive (konteksta konteksts, nodoma nolūks) {
    Log.e ("Intent_Action:", intent.getAction () + "");
    }

    }
    Apraides uztvērēja metodes onReceive loģika ir ļoti vienkārša, proti, izdrukāt darbības saturu.
    Palaidiet programmu, rezultāts ir ļoti vienkāršs, šeit nav attēla.

     

    Apskatīsim dinamiskos abonementus:


    pakete com.broadcast.demo;

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

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

    / **
     * Izmantojiet dinamisku veidu, kā reģistrēt apraidi
     * @autors weijiang204321
     *
     */
    publiskā klase DynamicRegisterBroadcastActivity paplašina darbību {
    Uz
    publiskā statiskā galīgā virkne NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    aizsargāts uztvērējs UnSortBroadcastReceiver;
    Uz
    @ Pārvarēt
    aizsargāts void onCreate (pakete savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Poga btn0 = (Poga) findViewById (R.id.btn);
    btn0.setOnClickListener (jauns OnClickListener () {
    public void onClick (skats v) {
    // Sūtīt apraidi
    Intent it = jauns nodoms (NEW_LIFEFORM_DETECTED);
    sendBroadcast (it);
    }
    });
    }

    @ Pārvarēt
    aizsargāts spēkā neesošs onResume () {
    super.onResume ();
    // Reģistrējieties apraidei
    IntentFilter counterActionFilter = jauns IntentFilter (NEW_LIFEFORM_DETECTED);
    uztvērējs = jauns UnSortBroadcastReceiver ();
    registerReceiver (uztvērējs, counterActionFilter);
    }

    @ Pārvarēt
    aizsargāts void onPause () {
    super.onPause ();
    // Atcelt apraidi
    unregisterReceiver (uztvērējs);
    }
    }
    Šeit mēs abonējam apraidi vietnē onResume un pārtraucam abonēšanu apraidei vietnē onPause.
    Mainiet uzsākto darbību uz DynamicRegisterBroadcastActivity vietnē AndroidMainfest.xml. Pārējais saturs nav jāmaina. Palaidiet programmu un izdrukājiet rezultātu ļoti vienkārši, tāpēc es šeit neredzēšu attēlu.

     

    Apskatīsim pasūtīto apraidi un nepārkārtoto apraidi

    Mēs to jau minējām sākumā, apskatīsim nesakārtoto apraidi:

    Vispirms mēs definējam divus apraides uztvērējus:

    Pirmais apraides uztvērējs:


    pakete com.broadcast.receiver;

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

    / **
     * Apraides uztvērējs A
     * @autors weijiang204321
     *
     */
    public class SortBroadcastReceiverA paplašina BroadcastReceiver {

    @ Pārvarēt
    public void onReceive (konteksta konteksts, nodoma nolūks) {
    Log.e ("Demo:", "apraides uztvērējs A");
    }

    }
    Otrais apraides uztvērējs:

    pakete com.broadcast.receiver;

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

    / **
     * Apraides uztvērējs B
     * @autors weijiang204321
     *
     */
    publiskā klase SortBroadcastReceiverB paplašina BroadcastReceiver {

    @ Pārvarēt
    public void onReceive (konteksta konteksts, nodoma nolūks) {
    Log.e ("Demo:", "Broadcast B");
    }

    Uz
    Uz
    }


    Abonējiet apraidi vietnē AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    darbības rezultāts:


    Skriešanas rezultāts ir mazliet dīvains. Kāpēc uztvērējs B atrodas priekšā un uztvērējs A aizmugurē? Iemesls ir tāds, ka, abonējot apraidi vietnē AndroidMainfest.xml, nodoma filtrā iestatām atribūta android: prioritāti. Jo lielāka vērtība, jo augstāka prioritāte. , Uztvērēja B prioritāte ir 1000, uztvērēja A prioritāte ir 999, tāpēc B vispirms uztver apraidi un pēc tam A to saņem, bet starp uztvērēju B un uztvērēju A nav savienojuma, un nevar būt mijiedarbība Jā, Tā kā šī ir ārpus kārtas pārraide un asinhrona, mēs varam veikt eksperimentu, pievienojot kodu onReceiver metodei B:

    abortBroadcast (); // Pārtrauciet šīs apraides pārraidi

    darbības rezultāts:

     

    Mēs varam redzēt ātru kļūdu, tas ir, nav pasūtīta apraide, lai pārtrauktu apraidi. Faktiski izbeigšana ir bezjēdzīga, jo uztvērējs A joprojām saņem apraidi.

     

    Apskatīsim kārtīgu apraidi, kods ir jāmaina:

    Pirmais ir sūtot apraidi:


    Nodomu pārraide = new Intent ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (apraide, nulle);
    Pēc tam pievienojiet metodi, kā pārtraukt apraidi uztvērējā B:
    abortBroadcast ();

    Pārējais kods nav jāmaina, darbības rezultāts:

     

    Ir tikai uztvērējs B, uztvērējs A nesaņem apraidi, jo apraide tiek pārtraukta uztvērējā B, un nākamie uztvērēji to nevar pieņemt.

    Mainiet zemāk esošo kodu:

    B saņēmējs:


    pakete com.broadcast.receiver;

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

    / **
     * Apraides uztvērējs B
     * @autors weijiang204321
     *
     */
    publiskā klase SortBroadcastReceiverB paplašina BroadcastReceiver {

    @ Pārvarēt
    public void onReceive (konteksta konteksts, nodoma nolūks) {
    Log.e ("Demo:", "apraides uztvērējs B");
    Komplekta pakete = new Bundle ();
    bundle.putString ("next_receiver", "nākamais apraides uztvērējs");
    setResultExtras (saišķis);
    }
    Uz
    }
    Pēc tam, kad B saņem apraidi, tā saglabā kādu vērtību un nodod to nākamajam uztvērējam.


    Uztvērēja A kods:


    pakete com.broadcast.receive

     

     

     

     

    Uzskaitīt visu jautājumu

    iesauka

    E-pasts

    Jautājumi

    citu mūsu produktu:

    Profesionālu FM radiostaciju aprīkojuma komplekts

     



     

    Viesnīcas IPTV risinājums

     


      Ievadiet e-pastu, lai saņemtu pārsteigumu

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> afrikands
      sq.fmuser.org -> albāņu
      ar.fmuser.org -> arābu
      hy.fmuser.org -> armēņu
      az.fmuser.org -> azerbaidžāņu
      eu.fmuser.org -> basku valoda
      be.fmuser.org -> baltkrievu
      bg.fmuser.org -> bulgāru valoda
      ca.fmuser.org -> katalāņu
      zh-CN.fmuser.org -> ķīniešu (vienkāršotā)
      zh-TW.fmuser.org -> ķīniešu (tradicionālā)
      hr.fmuser.org -> horvātu
      cs.fmuser.org -> čehu
      da.fmuser.org -> dāņu
      nl.fmuser.org -> holandiešu
      et.fmuser.org -> igauņu
      tl.fmuser.org -> filipīniešu
      fi.fmuser.org -> somu
      fr.fmuser.org -> franču valoda
      gl.fmuser.org -> galisiešu valoda
      ka.fmuser.org -> gruzīnu
      de.fmuser.org -> vācu
      el.fmuser.org -> grieķu
      ht.fmuser.org -> Haiti kreolu
      iw.fmuser.org -> ebreju
      hi.fmuser.org -> hindi
      hu.fmuser.org -> ungāru valoda
      is.fmuser.org -> islandiešu
      id.fmuser.org -> indonēziešu
      ga.fmuser.org -> īru
      it.fmuser.org -> itāļu
      ja.fmuser.org -> japāņu
      ko.fmuser.org -> korejiešu
      lv.fmuser.org -> latviski
      lt.fmuser.org -> lietuviešu
      mk.fmuser.org -> maķedoniešu
      ms.fmuser.org -> malajiešu
      mt.fmuser.org -> maltiešu
      no.fmuser.org -> norvēģu
      fa.fmuser.org -> persiešu
      pl.fmuser.org -> poļu
      pt.fmuser.org -> portugāļu
      ro.fmuser.org -> rumāņu
      ru.fmuser.org -> krievu valoda
      sr.fmuser.org -> serbu
      sk.fmuser.org -> slovāku
      sl.fmuser.org -> slovēņu
      es.fmuser.org -> spāņu
      sw.fmuser.org -> svahili
      sv.fmuser.org -> zviedru
      th.fmuser.org -> taizemiešu
      tr.fmuser.org -> turku
      uk.fmuser.org -> ukraiņu
      ur.fmuser.org -> urdu valoda
      vi.fmuser.org -> vjetnamiešu
      cy.fmuser.org -> velsiešu
      yi.fmuser.org -> jidišs

       
  •  

    FMUSER Wirless pārraida video un audio vieglāk!

  • Kontakti

    Adrese:
    Nr. 305 istaba HuiLan ēka Nr.273 Huanpu Road Guangzhou, Ķīna 510620

    E-pasts:
    [e-pasts aizsargāts]

    Tālr. / WhatApps:
    +8618078869184

  • Kategorijas

  • Saņemt jaunumus

    PIRMAIS VAI PILNAIS VĀRDS

    E-pasts

  • paypal risinājums  Rietumu savienībaBank of China
    E-pasts:[e-pasts aizsargāts]   WhatsApp: +8618078869184 Skype: sky198710021 Tērzēt ar mani
    Copyright 2006-2020 Powered By www.fmuser.org

    Sazinies ar mums