FMUSER- ը անթերի փոխանցում է տեսանյութն ու աուդիոն ավելի հեշտ:
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 -> Հայերեն
Հեռարձակումը բաժանված է երկու տարբեր տիպի. «Նորմալ հեռարձակում» և «Պատվիրված հեռարձակում»: Սովորական հեռարձակումը միանգամայն ասինխրոն է և միաժամանակ կարող է ստացվել բոլոր հեռարձակող ստացողները (տրամաբանորեն): Հաղորդագրությունների առաքման արդյունավետությունը համեմատաբար բարձր է, բայց թերությունն այն է, որ ստացողը չի կարող մշակման արդյունքը փոխանցել հաջորդ ստացողին, և այն չի կարող դադարեցվել: Հեռարձակում դիտավորյալ տարածում; այնուամենայնիվ, պատվիրված հեռարձակումը հիմնված է ստացողի կողմից հայտարարված առաջնահերթության վրա (հայտարարված է 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 ռադիոկայանի սարքավորումների փաթեթ
|
||
|
Անակնկալ ստանալու համար մուտքագրեք էլ
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
Կատեգորիաներ
Տեղեկագիր