FMUSER- ը անթերի փոխանցում է տեսանյութն ու աուդիոն ավելի հեշտ:

[էլեկտրոնային փոստով պաշտպանված] WhatsApp + 8618078869184
Լեզու

    Android- ում հեռարձակման մանրամասն բացատրություն

     

    Հեռարձակումը բաժանված է երկու տարբեր տիպի. «Նորմալ հեռարձակում» և «Պատվիրված հեռարձակում»: Սովորական հեռարձակումը միանգամայն ասինխրոն է և միաժամանակ կարող է ստացվել բոլոր հեռարձակող ստացողները (տրամաբանորեն): Հաղորդագրությունների առաքման արդյունավետությունը համեմատաբար բարձր է, բայց թերությունն այն է, որ ստացողը չի կարող մշակման արդյունքը փոխանցել հաջորդ ստացողին, և այն չի կարող դադարեցվել: Հեռարձակում դիտավորյալ տարածում; այնուամենայնիվ, պատվիրված հեռարձակումը հիմնված է ստացողի կողմից հայտարարված առաջնահերթության վրա (հայտարարված է android- ում. intent-filter տարրի առաջնային հատկանիշ, որքան մեծ է թիվը, այնքան մեծ է առաջնահերթությունը, արժեքի տիրույթը ՝ -1000-ից 1000: Այն նաև հնարավոր է զանգահարել սահմանել IntentFilter օբյեկտի setPriority (), և ստացողը հերթով ստանում է հեռարձակումը: Օրինակ, եթե A- ի մակարդակն ավելի բարձր է, քան B- ինը, իսկ B- ն `C- ից բարձր, ապա հեռարձակումը նախ փոխանցվում է A, ապա B և վերջում C: կարող է տվյալները պահել հեռարձակման մեջ: Երբ հեռարձակումը ուղարկվում է B, B- ն կարող է հեռարձակումից ստանալ A- ի պահած տվյալները:

     

    Context.sendBroadcast ()

       Ուղարկվածը սովորական հեռարձակում է, և բոլոր բաժանորդները հնարավորություն ունեն ձեռք բերել և մշակել այն:

     

    Context.sendOrowedBroadcast ()

       Ուղարկելը կանոնավոր հեռարձակում է: Համակարգը մեկ առ մեկ կկատարի ընդունիչները `ըստ ստացողի հայտարարած առաջնահերթության: Նախորդ ստացողն իրավունք ունի դադարեցնել հեռարձակումը (BroadcastReceiver.abortBroadcast ()): Եթե ​​հեռարձակումը դադարեցվում է նախորդ ստացողի կողմից, վերջինս Ստացողն այլևս չի կարող ստանալ հեռարձակումը: Պատվիրված հեռարձակման համար նախորդ ստացողը կարող է պահպանել մշակման արդյունքը հեռարձակման Intent- ում և այն այն փոխանցել հաջորդ ստացողին:

     
    Հեռարձակման ստացողը (BroadcastReceiver) օգտագործվում է հեռարձակման Նպատակը ստանալու համար, իսկ հեռարձակման Նպատակը ուղարկվում է `զանգահարելով Context.sendBroadcast () և Context.sendOruledBroadcast (): Սովորաբար հեռարձակվող Նպատակը կարող է ստացվել սույն Նպատակին բաժանորդագրված բազմաթիվ հեռարձակող ստացողների կողմից: Այս հատկությունը նման է JMS- ի Թեմա հաղորդագրության ստացողներին: Հեռարձակման ստացողի մեթոդը իրականացնելու համար հետևյալն է.

     

    Առաջին քայլը. Սահմանել հեռարձակման ընդունիչը, ժառանգել BroadcastReceiver- ը և վերաշարադրել onReceive () մեթոդը:

    հանրային դասի IncomingSMSReceiver extendsBroadcastReceiver {
      @Orride հանրային դատարկությունը onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Քայլ 2. Բաժանորդագրվել հեռարձակմանը Հետաքրքրության նպատակ, բաժանորդագրության երկու եղանակ կա.

    Առաջին տեսակը. Բաժանորդագրվելու համար օգտագործեք կոդ (դինամիկ բաժանորդագրություն)

    IntentFilter ֆիլտր = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    IncomingSMSReceiver ընդունիչ = newInomingSMSReceiver ();
    RegisterReceiver (ընդունիչ, զտիչ);

     

    Երկրորդ տեսակը. Բաժանորդագրվել հանգույց AndroidManifest.xml ֆայլում (ստատիկ բաժանորդագրություն)


      
           
      


    Եկեք նայենք դինամիկ հեռարձակման բաժանորդագրության և ստատիկ հեռարձակման բաժանորդագրության միջև եղած տարբերությանը.
    Ստատիկ բաժանորդագրության հեռարձակումը կոչվում է նաև. Ռեզիդենտ հեռարձակում: Երբ ձեր դիմումը փակ է, եթե կա հեռարձակման հաղորդագրություն, ձեր գրած հեռարձակման ստացողը նույնպես կարող է այն ստանալ: Դրա գրանցման մեթոդը AndroidManifast- ն է ձեր դիմումում: .xml բաժանորդագրության համար:

     

    Դինամիկ բաժանորդային հեռարձակումը կոչվում է նաև. Ոչ ռեզիդենտ հեռարձակում: Երբ դիմումն ավարտվում է, հեռարձակումը, բնականաբար, կվերանա: Օրինակ, դուք բաժանորդագրվում եք հեռարձակմանը onCreate կամ onResume գործունեության մեջ և պետք է չեղարկեք հեռարձակման բաժանորդագրությունը onDestory- ում կամ onPause- ում: Հակառակ դեպքում, բացառության մասին կտեղեկացվի, ուստի ձեր հեռարձակողի ստացողը կլինի ոչ ռեզիդենտ:

     

    Այստեղ կա ևս մեկ մանրամասն, որը բաժանորդագրության երկու եղանակն է: Հաղորդումներ ուղարկելիս հարկավոր է ուշադրություն դարձնել. , Հակառակ դեպքում հեռարձակողը չի կարողանա ստանալ հեռարձակումը: Ուշադրություն դարձրեք այս կետին: Բայց երբ բաժանորդագրվում ենք ստատիկորեն, քանի որ բաժանորդագրված է AndroidMainfest.xml- ում, հեռարձակումներ ուղարկելիս հնարավոր է օգտագործել ցուցադրվող Նպատակը և անուղղակի Նպատակը (իհարկե սա միայն մեր կողմից սահմանված հեռարձակման ստացողների համար է), այնպես որ ամեն դեպքում, Մենք, ընդհանուր առմամբ, օգտագործում ենք անուղղակի Հեռարձակում ուղարկելու մտադրություն:

     

    Եկեք տեսնենք մի օրինակ.

    Նայեք ծրագրի կառուցվածքին.

     

    Նայեք ստատիկ բաժանորդագրության հեռարձակմանը.
    փաթեթ 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;

    / **
     * Ստատիկ բաժանորդագրության հեռարձակում
     * @ հեղինակ weijiang204321
     *
     */
    StaticRegisterBroadcastActivity հանրային դասը տարածում է գործունեությունը {

    @ Override
    պաշտպանված դատարկությունը onCreate (փաթեթը պահպանված է InststanceState) {
    super.onCreate (saveInstanceState);
    setContentView (R.layout.activity_main);
    Կոճակ btn = (կոճակ) findViewById (R.id.btn);
    Դեպի
    btn.setOnClickListener (նոր OnClickListener () {
    @ Override
    public void onClick (Դիտել v) {
    // Հեռարձակումը գրանցելու ստատիկ եղանակ օգտագործեք, հեռարձակումը ուղարկելու համար կարող եք օգտագործել ցուցադրման մտադրությունը
    Դիտավորյալ հեռարձակում = նոր մտադրություն ("com.broadcast.set.broadcast");
    sendBroadcast (հեռարձակում, զրոյական);
    }
    Դեպի
    });
    }
    Դեպի
    }


    Բաժանորդագրվեք AndroidMainfest.xml- ում ՝



    <manifest 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;

    / **
     * Հեռարձակման ընդունիչ
     * @ հեղինակ weijiang204321
     *
     */
    UnSortBroadcastReceiver հանրային դասը տարածում է BroadcastReceiver- ը {

    @ Override
    հանրային դատարկություն onReceive (Համատեքստի համատեքստ, Նպատակի դիտավորություն) {
    Log.e ("Նպատակը_Գործողություն.", Intent.getAction () + "");
    }

    }
    Հեռարձակման ստացողի վրա onReceive մեթոդի տրամաբանությունը շատ պարզ է, այն է `գործողության բովանդակությունը տպել:
    Գործարկել ծրագիրը, արդյունքը շատ պարզ է, այստեղ նկարը չկա:

     

    Եկեք նայենք դինամիկ բաժանորդագրություններին.


    փաթեթ 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;

    / **
     * Օգտագործեք հեռարձակումը գրանցելու դինամիկ եղանակ
     * @ հեղինակ weijiang204321
     *
     */
    հանրային դասի DynamicRegisterBroadcastActivity- ն ընդլայնում է գործունեությունը {
    Դեպի
    public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    պաշտպանված UnSortBroadcastReceiver ընդունիչ;
    Դեպի
    @ Override
    պաշտպանված դատարկությունը onCreate (փաթեթը պահպանված է InststanceState) {
    super.onCreate (saveInstanceState);
    setContentView (R.layout.activity_main);
    Կոճակ btn0 = (կոճակ) findViewById (R.id.btn);
    btn0.setOnClickListener (նոր OnClickListener () {
    public void onClick (Դիտել v) {
    // Ուղարկել հեռարձակում
    Նպատակը = նոր մտադրություն (NEW_LIFEFORM_DETECTED);
    sendBroadcast (it);
    }
    });
    }

    @ Override
    պաշտպանված անվավեր onResume () {
    super.onResume ();
    // Գրանցվել հեռարձակման համար
    IntentFilter counterActionFilter = նոր IntentFilter (NEW_LIFEFORM_DETECTED);
    ընդունիչ = նոր UnSortBroadcastReceiver ();
    RegisterReceiver (ստացող, counterActionFilter);
    }

    @ Override
    պաշտպանված անվավեր onPause () {
    super.onPause ();
    // Չեղարկել հեռարձակումը
    unregisterReceiver (ստացող);
    }
    }
    Այստեղ մենք բաժանորդագրվում ենք վերսկսել ռադիոհեռարձակմանը և դադարեցնում բաժանորդագրությունը դադարում:
    Գործարկված գործողությունը փոխեք DynamicRegisterBroadcastActivity- ին AndroidMainfest.xml- ում: Մյուս բովանդակությունը փոփոխման կարիք չունի: Գործարկել ծրագիրը և տպել արդյունքը շատ պարզ է, այնպես որ ես այստեղ նկարը չեմ տեսնի:

     

    Եկեք նայենք պատվիրված հեռարձակմանը և անկարգությունների հեռարձակմանը

    Այս մասին մենք արդեն նշել ենք սկզբում, եկեք նայենք խանգարված հեռարձակմանը.

    Սկզբում մենք սահմանում ենք հեռարձակման երկու ընդունիչ.

    Հեռարձակման առաջին ստացողը.


    փաթեթ com.broadcast.receiver;

    ներմուծել android.content.BroadcastReceiver;
    ներմուծել android.content.Context;
    ներմուծել android.content.Intent;
    ներմուծել android.util.Log;

    / **
     * Հեռարձակման ընդունիչ Ա
     * @ հեղինակ weijiang204321
     *
     */
    հանրային դասի SortBroadcastReceiverA- ն ընդլայնում է BroadcastReceiver- ը {

    @ Override
    հանրային դատարկություն onReceive (Համատեքստի համատեքստ, Նպատակի դիտավորություն) {
    Log.e ("Դեմո.", "Հեռարձակման ընդունիչ A");
    }

    }
    Երկրորդ հեռարձակման ընդունիչ.

    փաթեթ com.broadcast.receiver;

    ներմուծել android.content.BroadcastReceiver;
    ներմուծել android.content.Context;
    ներմուծել android.content.Intent;
    ներմուծել android.util.Log;

    / **
     * Հեռարձակման ընդունիչ Բ
     * @ հեղինակ weijiang204321
     *
     */
    հանրային դասի SortBroadcastReceiverB- ն ընդլայնում է BroadcastReceiver- ը {

    @ Override
    հանրային դատարկություն onReceive (Համատեքստի համատեքստ, Նպատակի դիտավորություն) {
    Log.e («Դեմո.», «Հեռարձակում B»);
    }

    Դեպի
    Դեպի
    }


    Բաժանորդագրվեք AndroidMainfest.xml- ում հեռարձակմանը


     
               
                   
               

           

               
                   
               

    շահագործման արդյունքը.


    Վազքի արդյունքը մի փոքր տարօրինակ է: Ինչու է առջևում B ընդունիչը, իսկ հետևում A ընդունիչը: Պատճառն այն է, որ երբ մենք բաժանորդագրվում ենք հեռարձակմանը AndroidMainfest.xml- ում, մենք intent-filter- ում տեղադրում ենք android: Որքան մեծ է արժեքը, այնքան բարձր է առաջնահերթությունը: , B ստացողի առաջնահերթությունը 1000 է, A ստացողի առաջնահերթությունը 999 է, ուստի B- ն նախ ստանում է հեռարձակումը, իսկ հետո A- ն այն ստանում է, բայց ստացող B- ի և ստացողի միջև կապ չկա, և փոխազդեցություն չի կարող լինել Այո, քանի որ սա անսարք է և ասինխրոն է, մենք կարող ենք փորձ կատարել ՝ ավելացնելով կոդ onReceiver մեթոդին B- ում.

    abortBroadcast (); // Դադարեցնել այս հեռարձակման փոխանցումը

    շահագործման արդյունքը.

     

    Մենք կարող ենք տեսնել արագ սխալը, այսինքն ՝ չպատվիրված հեռարձակումը թույլատրված չէ դադարեցնել հեռարձակումը: Իրականում դադարեցումն անօգուտ է, քանի որ A ստացողը դեռ ստանում է հեռարձակումը:

     

    Եկեք նայենք կարգի հեռարձակմանը, ծածկագիրը պետք է փոփոխվի.

    Առաջինը հեռարձակում ուղարկելիս է.


    Դիտավորյալ հեռարձակում = նոր մտադրություն ("com.broadcast.set.broadcast");
    sendOruledBroadcast (հեռարձակում, զրոյական);
    Դրանից հետո ավելացրեք մեթոդ `B ընդունիչում հեռարձակումը դադարեցնելու համար.
    abortBroadcast ();

    Մյուս ծածկագիրը փոփոխման կարիք չունի, գործողության արդյունքը ՝

     

    Կա միայն B ստացող, A ստացողը չի ստանում հեռարձակում, քանի որ հեռարձակումը դադարեցվում է B ընդունիչում, և հետագա ստացողները չեն կարող այն ընդունել:

    Փոփոխեք ներքևի կոդը.

    Ստացող B:


    փաթեթ com.broadcast.receiver;

    ներմուծել android.content.BroadcastReceiver;
    ներմուծել android.content.Context;
    ներմուծել android.content.Intent;
    ներմուծել android.os.Bundle;
    ներմուծել android.util.Log;

    / **
     * Հեռարձակման ընդունիչ Բ
     * @ հեղինակ weijiang204321
     *
     */
    հանրային դասի SortBroadcastReceiverB- ն ընդլայնում է BroadcastReceiver- ը {

    @ Override
    հանրային դատարկություն onReceive (Համատեքստի համատեքստ, Նպատակի դիտավորություն) {
    Log.e («Դեմո.», «Հեռարձակման ստացող B»);
    Փնջի կապոց = նոր Փնջ ();
    bundle.putString («հաջորդ_ընդունիչ», «հաջորդ հաղորդման ստացող»);
    setResultExtras (փաթեթ);
    }
    Դեպի
    }
    B- ն հեռարձակումը ստանալուց հետո այն պահում է որոշակի արժեք և փոխանցում այն ​​հաջորդ ստացողին:


    Ստացողի A կոդը ՝


    փաթեթ com.broadcast.receive

     

     

     

     

    Նշեցէք բոլոր Հարց

    մականուն

    Էլ. փոստի հասցե

    հարցեր

    Մեր մյուս արտադրանքը:

    Պրոֆեսիոնալ 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 -> Chinese (Traditional)
      hr.fmuser.org -> խորվաթերեն
      cs.fmuser.org -> չեխերեն
      da.fmuser.org -> դանիերեն
      nl.fmuser.org -> Dutch
      et.fmuser.org -> էստոնական
      tl.fmuser.org -> ֆիլիպիներեն
      fi.fmuser.org -> ֆիններեն
      fr.fmuser.org -> French
      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 -> Italian
      ja.fmuser.org -> ճապոներեն
      ko.fmuser.org -> կորեերեն
      lv.fmuser.org -> լատվիերեն
      lt.fmuser.org -> Լիտվայի
      mk.fmuser.org -> մակեդոներեն
      ms.fmuser.org -> մալայերեն
      mt.fmuser.org -> մալթերեն
      no.fmuser.org -> Norwegian
      fa.fmuser.org -> պարսկերեն
      pl.fmuser.org -> լեհերեն
      pt.fmuser.org -> Պորտուգալերեն
      ro.fmuser.org -> Romanian
      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 Guangzhou China 510620

    E-mail:
    [էլեկտրոնային փոստով պաշտպանված]

    Հեռ / WhatApps:
    +8618078869184

  • Կատեգորիաներ

  • Տեղեկագիր

    ԱՌԱԻՆ ԿԱՄ ԱՆՎԱՐ

    E-mail

  • paypal լուծումը  Western UnionBank of China
    E-mail:[էլեկտրոնային փոստով պաշտպանված]   WhatsApp ՝ +8618078869184 Skype ՝ sky198710021 Զրուցել ինձ հետ
    Հեղինակային իրավունք 2006-2020 Powered By www.fmuser.org

    Հետադարձ Կապ