FMUSER Wirless edastab videot ja heli lihtsamalt!

[meiliga kaitstud] WhatsApp + 8618078869184
Keel

    Ringhäälingu üksikasjalik selgitus Androidis

     

    Ringhääling on jagatud kahte erinevat tüüpi: "Tavalised ülekanded" ja "Tellitud ülekanded". Tavaline ringhääling on täiesti asünkroonne ja seda saavad kõik saated vastuvõtjad vastu võtta korraga (loogiliselt). Sõnumi edastamise efektiivsus on suhteliselt kõrge, kuid puuduseks on see, et vastuvõtja ei saa töötlustulemust järgmisele vastuvõtjale edastada ja seda ei saa lõpetada. Ringhäälingukavatsuse levitamine; tellitud saade põhineb aga vastuvõtja poolt deklareeritud prioriteedil (deklareeritud kavatsusfiltri elemendi android: prioriteedi atribuudil, mida suurem on number, seda suurem on prioriteet, väärtusvahemik: -1000 kuni 1000 võimalik Helistage objekti IntentFilter setPriority () seadistamiseks) ja saaja saab saate kordamööda. Näiteks kui A tase on kõrgem kui B ja B tase on kõrgem kui C, siis edastatakse saade kõigepealt A-le, seejärel B-le ja lõpuks C-le. Kui A on saate edastanud, edastatakse see saab eetrisse andmeid salvestada. Kui saade saadetakse B-le, saab B saada ringhäälingust A salvestatud andmed.

     

    Context.sendBroadcast ()

       Saadetav on tavaline saade ja kõigil tellijatel on võimalus see hankida ja töödelda.

     

    Context.sendOrderedBroadcast ()

       Saatmine on korrapärane ülekanne. Süsteem täidab vastuvõtjaid ükshaaval vastavalt vastuvõtja deklareeritud prioriteedile. Eelmisel vastuvõtjal on õigus ülekanne katkestada (BroadcastReceiver.abortBroadcast ()). Kui ülekande lõpetab eelmine vastuvõtja, ei saa viimane vastuvõtjat enam ülekannet saada. Tellitud ülekande jaoks võib eelmine vastuvõtja töötlustulemuse salvestada ülekande kavatsusse ja seejärel edastada see järgmisele vastuvõtjale.

     
    Ringhäälinguvastuvõtjat (BroadcastReceiver) kasutatakse ringhäälingukavatsuse vastuvõtmiseks ja ringhäälingukavatsuse saatmine realiseeritakse kutsudes Context.sendBroadcast () ja Context.sendOrderedBroadcast (). Tavaliselt võivad ülekandekavatsuse vastu võtta mitu selle kavatsusega liitunud ringhäälinguvastuvõtjat. See funktsioon sarnaneb JMS-i Topic sõnumivastuvõtjatega. Saate vastuvõtja meetodi rakendamine on järgmine:

     

    Esimene samm: määrake ringhäälinguvastuvõtja, pärige BroadcastReceiver ja kirjutage meetod onReceive () ümber.

    avalik klass IncomingSMSReceiver laiendabBroadcastReceiver {
      @Orride public void onReceive (kontekstikontekst, Intentintent) {
      }
    }

     

    2. samm: tellige levitamise huvipakkumine, on kaks tellimisviisi:

    Esimene tüüp: tellimiseks kasutage koodi (dünaamiline tellimus)

    IntentFilteri filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    IncomingSMSReceiver vastuvõtja = newIncomingSMSReceiver ();
    registerReceiver (vastuvõtja, filter);

     

    Teine tüüp: tellige sõlm failis AndroidManifest.xml (staatiline tellimus)


      
           
      


    Vaatame erinevust dünaamilise leviedastuse ja staatilise levitamise tellimuse vahel:
    Staatilist tellimusringhäälingut nimetatakse ka: residentsaade. Kui teie rakendus on suletud, võib ringhäälingusõnumi olemasolu korral selle vastu võtta ka teie kirjutatud ringhäälinguvastuvõtja. Selle registreerimismeetod on teie rakenduses AndroidManifast. .xml tellimiseks.

     

    Dünaamilist tellimusringhäälingut nimetatakse ka mitteresidentide ülekandeks. Kui rakendus lõpeb, kaob saade loomulikult. Näiteks tellite ülekande teenuses onCreate või onResume ja peate onDestory või onPause levitamise tellimuse tühistama. Vastasel juhul teatatakse erandist, nii et teie saate vastuvõtja on mitteresident.

     

    Siin on veel üks detail, mis on kaks tellimisviisi. Ülekannete saatmisel peate tähelepanu pöörama: Dünaamiliseks registreerimiseks kasutatakse kaudse kavatsuse meetodit, seega peate ülekannete saatmisel kasutama kaudset kavatsust saatmiseks. , Vastasel juhul ei saa ringhäälingu vastuvõtja ülekannet vastu võtta. Pöörake sellele punktile tähelepanu. Staatiliselt tellides, kuna see on tellitud saidil AndroidMainfest.xml, on ülekannete saatmisel võimalik kasutada kuva Intent ja implicit Intent (muidugi on see ainult meie enda määratletud ringhäälinguvastuvõtjate jaoks), nii et igaks juhuks kasutame tavaliselt implicit Kavatsus ülekande saatmiseks.

     

    Vaatame näidet:

    Heitke pilk projekti struktuurile:

     

    Heitke pilk staatilise tellimuse ülekandele:
    pakett com.broadcast.demo;

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

    import com.example.androidbroadcastdemo.R;

    / **
     * Staatiline tellimusülekanne
     * @autor weijiang204321
     *
     */
    avalik klass StaticRegisterBroadcastActivity laiendab tegevust {

    @Üle
    kaitstud void onCreate (kimp salvestatudInstanceState) {
    super.onCreate (salvestatudInstanceState);
    setContentView (R.layout.activity_main);
    Nupp btn = (nupp) findViewById (R.id.btn);
    Et
    btn.setOnClickListener (uus OnClickListener () {
    @Üle
    avalik void onClick (vaade v) {
    // Kasutage ülekande registreerimiseks staatilist viisi, saate ülekande saatmiseks kasutada kuvamise kavatsust
    Kavatsusülekanne = uus kavatsus ("com.broadcast.set.broadcast");
    sendBroadcast (saade, null);
    }
    Et
    });
    }
    Et
    }


    Telli teenus AndroidMainfest.xml:



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

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

        <rakendus
            android: allowBackup = "true"
            android: ikoon = "@ drawable / ic_launcher"
            android: label = "@ string / rakenduse_nimi"
            android: theme = "@ style / AppTheme">
            <tegevus
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    Ärge muretsege praegu muu sisu pärast, nagu me sellest hiljem räägime, siin keskendume ainult staatiliste ülekannete registreerimisele


          
               
                   
               
           


    Heidame pilgu ülekande vastuvõtjale:

    pakett com.broadcast.receiver;

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

    / **
     * Ringhäälingu vastuvõtja
     * @autor weijiang204321
     *
     */
    avalik klass UnSortBroadcastReceiver laiendab BroadcastReceiver {

    @Üle
    public void onReceive (konteksti kontekst, kavatsuse kavatsus) {
    Logi e ("Intent_Action:", intent.getAction () + "");
    }

    }
    Ringhäälinguvastuvõtjas onReceive-meetodi loogika on toimingu sisu printimiseks väga lihtne.
    Käivitage programm, tulemus on väga lihtne, siin pole pilti.

     

    Vaatame dünaamilisi tellimusi:


    pakett com.broadcast.demo;

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

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

    / **
     * Kasutage dünaamilist viisi saate registreerimiseks
     * @autor weijiang204321
     *
     */
    avalik klass DynamicRegisterBroadcastActivity laiendab tegevust {
    Et
    avalik staatiline lõplik string String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    kaitstud vastuvõtja UnSortBroadcastReceiver;
    Et
    @Üle
    kaitstud void onCreate (kimp salvestatudInstanceState) {
    super.onCreate (salvestatudInstanceState);
    setContentView (R.layout.activity_main);
    Nupp btn0 = (nupp) findViewById (R.id.btn);
    btn0.setOnClickListener (uus OnClickListener () {
    avalik void onClick (vaade v) {
    // Saate saatmine
    Kavatsus see = uus kavatsus (NEW_LIFEFORM_DETECTED);
    sendBroadcast (see);
    }
    });
    }

    @Üle
    kaitstud void onResume () {
    super.onResume ();
    // Registreeru eetrisse
    IntentFilter counterActionFilter = uus IntentFilter (NEW_LIFEFORM_DETECTED);
    vastuvõtja = uus UnSortBroadcastReceiver ();
    registerReceiver (vastuvõtja, counterActionFilter);
    }

    @Üle
    kaitstud void onPause () {
    super.onPause ();
    // Tühista ülekanne
    unregisterReceiver (vastuvõtja);
    }
    }
    Tellime siin onResume'is levitamise ja onPause'is levitamise tellimuse.
    Muutke rakenduses AndroidMainfest.xml käivitatud Activity väärtuseks DynamicRegisterBroadcastActivity. Muu sisu ei vaja muutmist. Käivitage programm ja printige tulemus väga lihtne, nii et ma ei näe siin pilti.

     

    Heidame pilgu tellitud ringhäälingule ja tellimata ringhäälingule

    Oleme seda juba alguses maininud, heidame pilgu korrapäratule ringhäälingule:

    Kõigepealt määratleme kaks ringhäälingu vastuvõtjat:

    Esimene ringhäälinguvastuvõtja:


    pakett com.broadcast.receiver;

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

    / **
     * Ringhäälinguvastuvõtja A
     * @autor weijiang204321
     *
     */
    avalik klass SortBroadcastReceiverA laiendab BroadcastReceiver {

    @Üle
    public void onReceive (konteksti kontekst, kavatsuse kavatsus) {
    Log.e ("Demo:", "ringhäälinguvastuvõtja A");
    }

    }
    Teine ringhäälinguvastuvõtja:

    pakett com.broadcast.receiver;

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

    / **
     * Ringhäälinguvastuvõtja B
     * @autor weijiang204321
     *
     */
    avalik klass SortBroadcastReceiverB laiendab BroadcastReceiver {

    @Üle
    public void onReceive (konteksti kontekst, kavatsuse kavatsus) {
    Log.e ("Demo:", "Saade B");
    }

    Et
    Et
    }


    Telli ülekanne saidil AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    operatsiooni tulemus:


    Jooksutulemus on natuke kummaline. Miks on vastuvõtja B ees ja vastuvõtja A taga? Põhjus on see, et kui tellime leviedastuse saidil AndroidMainfest.xml, määrasime kavatsuste filtrisse android: prioriteedi atribuudi väärtuse. Mida suurem on väärtus, seda suurem on prioriteet. , Vastuvõtja B prioriteet on 1000, vastuvõtja A prioriteet on 999, nii et B võtab kõigepealt vastu ringhäälingu ja siis A võtab selle vastu, kuid vastuvõtja B ja vastuvõtja A vahel pole ühendust ja ei saa olla interaktsioone Jah, kuna see on korrastamata ülekanne ja asünkroonne, saame katse teha, lisades koodi B meetodile onReceiver:

    abortBroadcast (); // Lõpeta selle saate edastamine

    operatsiooni tulemus:

     

    Näeme kiiret viga, see tähendab, et tellimata saade ei tohi ülekannet lõpetada. Tegelikult on lõpetamine kasutu, sest vastuvõtja A võtab saate ikkagi vastu.

     

    Vaatame korrapärast ringhäälingut, koodi tuleb muuta:

    Esimene on ülekande saatmisel:


    Kavatsusülekanne = uus kavatsus ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (saade, null);
    Seejärel lisage meetod vastuvõtja B edastuse lõpetamiseks:
    abortBroadcast ();

    Teist koodi pole vaja muuta, operatsiooni tulemus:

     

    Seal on ainult vastuvõtja B, vastuvõtja A ei saa ülekannet vastu, kuna ringhääling lõpeb vastuvõtjas B ja järgnevad vastuvõtjad ei saa seda vastu võtta.

    Muutke allolevat koodi:

    Saaja B:


    pakett com.broadcast.receiver;

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

    / **
     * Ringhäälinguvastuvõtja B
     * @autor weijiang204321
     *
     */
    avalik klass SortBroadcastReceiverB laiendab BroadcastReceiver {

    @Üle
    public void onReceive (konteksti kontekst, kavatsuse kavatsus) {
    Log.e ("Demo:", "ringhäälingu vastuvõtja B");
    Bundle bundle = uus komplekt ();
    bundle.putString ("järgmine_võtja", "järgmine ringhäälinguvastuvõtja");
    setResultExtras (kimp);
    }
    Et
    }
    Pärast seda, kui B on ülekande vastu võtnud, salvestab ta osa väärtusest ja edastab selle järgmisele vastuvõtjale.


    Vastuvõtja A kood:


    pakett com.broadcast.receive

     

     

     

     

    Vaata kõiki Küsimus

    hüüdnimi

    E-POST

    Küsimused

    Meie teise tootega:

    Professionaalne FM-raadiojaama varustuspakett

     



     

    Hotell IPTV lahendus

     


      Üllatuse saamiseks sisestage e-posti aadress

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> afrikaans
      sq.fmuser.org -> albaania keel
      ar.fmuser.org -> araabia
      hy.fmuser.org -> Armeenia
      az.fmuser.org -> aserbaidžaanlane
      eu.fmuser.org -> baski keel
      be.fmuser.org -> valgevenelane
      bg.fmuser.org -> Bulgaaria
      ca.fmuser.org -> katalaani keel
      zh-CN.fmuser.org -> hiina (lihtsustatud)
      zh-TW.fmuser.org -> Hiina (traditsiooniline)
      hr.fmuser.org -> horvaadi keel
      cs.fmuser.org -> tšehhi
      da.fmuser.org -> taani keel
      nl.fmuser.org -> Hollandi
      et.fmuser.org -> eesti keel
      tl.fmuser.org -> filipiinlane
      fi.fmuser.org -> soome keel
      fr.fmuser.org -> Prantsusmaa
      gl.fmuser.org -> galicia keel
      ka.fmuser.org -> gruusia keel
      de.fmuser.org -> saksa keel
      el.fmuser.org -> Kreeka
      ht.fmuser.org -> Haiti kreool
      iw.fmuser.org -> heebrea
      hi.fmuser.org -> hindi
      hu.fmuser.org -> Ungari
      is.fmuser.org -> islandi keel
      id.fmuser.org -> indoneesia keel
      ga.fmuser.org -> iiri keel
      it.fmuser.org -> Itaalia
      ja.fmuser.org -> jaapani keel
      ko.fmuser.org -> korea
      lv.fmuser.org -> läti keel
      lt.fmuser.org -> Leedu
      mk.fmuser.org -> makedoonia
      ms.fmuser.org -> malai
      mt.fmuser.org -> malta keel
      no.fmuser.org -> Norra
      fa.fmuser.org -> pärsia keel
      pl.fmuser.org -> poola keel
      pt.fmuser.org -> portugali keel
      ro.fmuser.org -> Rumeenia
      ru.fmuser.org -> vene keel
      sr.fmuser.org -> serbia
      sk.fmuser.org -> slovaki keel
      sl.fmuser.org -> Sloveenia
      es.fmuser.org -> hispaania keel
      sw.fmuser.org -> suahiili keel
      sv.fmuser.org -> rootsi keel
      th.fmuser.org -> Tai
      tr.fmuser.org -> türgi keel
      uk.fmuser.org -> ukrainlane
      ur.fmuser.org -> urdu
      vi.fmuser.org -> Vietnam
      cy.fmuser.org -> kõmri keel
      yi.fmuser.org -> Jidiši

       
  •  

    FMUSER Wirless edastab videot ja heli lihtsamalt!

  • Saada sõnum

    Aadress:
    Nr 305 tuba HuiLan Building No.273 Huanpu Road Guangzhou, Hiina 510620

    E-mail:
    [meiliga kaitstud]

    Tel / WhatApps:
    + 8618078869184

  • Kategooriad

  • Uudiskiri

    ESIMENE VÕI TÄIELIK NIMI

    E-mail

  • paypal lahendus  Western UnionBank of China
    E-mail:[meiliga kaitstud]   WhatsApp: +8618078869184 Skype: sky198710021 Vestle minuga
    Copyright 2006-2020 Powered By www.fmuser.org

    Võta meiega ühendust