„FMUSER Wirless“ perduoda vaizdo ir garso įrašus lengviau!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanų kalba
sq.fmuser.org -> albanų
ar.fmuser.org -> arabų
hy.fmuser.org -> armėnas
az.fmuser.org -> azerbaidžanietis
eu.fmuser.org -> baskų
be.fmuser.org -> baltarusių
bg.fmuser.org -> bulgarų
ca.fmuser.org -> katalonų
zh-CN.fmuser.org -> kinų (supaprastinta)
zh-TW.fmuser.org -> kinų (tradicinė)
hr.fmuser.org -> kroatų
cs.fmuser.org -> čekų
da.fmuser.org -> danų
nl.fmuser.org -> Olandų
et.fmuser.org -> estų
tl.fmuser.org -> filipinietis
fi.fmuser.org -> suomių
fr.fmuser.org -> prancūzų
gl.fmuser.org -> Galisų
ka.fmuser.org -> gruzinų
de.fmuser.org -> vokiečių kalba
el.fmuser.org -> graikų
ht.fmuser.org -> Haičio kreolis
iw.fmuser.org -> hebrajų
hi.fmuser.org -> hindi
hu.fmuser.org -> vengrų
is.fmuser.org -> islandų
id.fmuser.org -> indoneziečių
ga.fmuser.org -> airių
it.fmuser.org -> italų kalba
ja.fmuser.org -> japonų
ko.fmuser.org -> korėjiečių
lv.fmuser.org -> latvių
lt.fmuser.org -> lietuvis
mk.fmuser.org -> makedonų
ms.fmuser.org -> malajiečių
mt.fmuser.org -> maltiečių
no.fmuser.org -> norvegų
fa.fmuser.org -> persų
pl.fmuser.org -> lenkų
pt.fmuser.org -> portugalų
ro.fmuser.org -> rumunų
ru.fmuser.org -> rusų
sr.fmuser.org -> serbų
sk.fmuser.org -> slovakų
sl.fmuser.org -> slovėnų
es.fmuser.org -> ispanų
sw.fmuser.org -> svahili kalba
sv.fmuser.org -> švedų
th.fmuser.org -> Tailando
tr.fmuser.org -> turkų
uk.fmuser.org -> ukrainietis
ur.fmuser.org -> urdu
vi.fmuser.org -> vietnamiečių
cy.fmuser.org -> Valų kalba
yi.fmuser.org -> jidiš
Transliacija skirstoma į du skirtingus tipus: „Normalios transliacijos“ ir „Užsakytos transliacijos“. Įprasta transliacija yra visiškai asinchroninė ir ją gali priimti visi transliacijos imtuvai vienu metu (logiškai). Pranešimų pristatymo efektyvumas yra palyginti didelis, tačiau trūkumas yra tas, kad imtuvas negali perduoti apdorojimo rezultato kitam imtuvui ir jo negalima nutraukti. „Broadcast Intent“ sklaida; tačiau užsakyta transliacija yra pagrįsta imtuvo deklaruotu prioritetu (deklaruota „Android“: ketinimo filtro elemento atributas, kuo didesnis skaičius, tuo didesnis prioritetas, vertės diapazonas: -1000–1000. Taip pat įmanoma iškvieskite objekto „IntentFilter“ elementą „setPriority“ (), kad gavėjas paeiliui gautų transliaciją. Pvz., Jei A lygis yra didesnis nei B, o B lygis yra didesnis nei C, tada transliacija pirmiausia perduodama A, tada B ir galiausiai C. Po to, kai A gauna transliaciją, ji gali saugoti duomenis transliacijoje. Kai transliacija siunčiama B, B gali gauti A saugomus duomenis iš transliacijos.
Context.sendBroadcast ()
Tai, kas siunčiama, yra įprasta transliacija, ir visi abonentai turi galimybę ją gauti ir apdoroti.
Context.sendOrderedBroadcast ()
Siuntimas yra tvarkinga transliacija. Sistema imtuvus vykdys po vieną pagal imtuvo deklaruotą prioritetą. Ankstesnis imtuvas turi teisę nutraukti transliaciją (BroadcastReceiver.abortBroadcast ()). Jei transliaciją nutraukia ankstesnis imtuvas, pastarasis imtuvas nebegali gauti transliacijos. Užsakytos transliacijos atveju ankstesnis imtuvas gali išsaugoti apdorojimo rezultatą transliacijos ketinime ir tada perduoti jį kitam imtuvui.
Transliacijos imtuvas (BroadcastReceiver) naudojamas transliavimo ketinimui gauti, o transliacijos ketinimas išsiunčiamas iškviečiant Context.sendBroadcast () ir Context.sendOrderedBroadcast (). Paprastai transliacijos ketinimą gali gauti keli šio ketinimo prenumeruoti transliavimo imtuvai. Ši funkcija yra panaši į JMS „Topic“ pranešimų imtuvus. Transliacijos imtuvo metodas yra toks:
Pirmasis žingsnis: apibrėžkite transliacijos imtuvą, paveldėkite „BroadcastReceiver“ ir perrašykite metodą „onReceive“ ().
viešoji klasė „IncomingSMSReceiver“ tęsiasi „BroadcastReceiver“ {
@Paisyti viešo negaliojantį „onReceive“ (kontekstinis kontekstas, ketinimas) {
}
}
2 žingsnis: užsiprenumeruokite transliacijos interesą, yra du prenumeratos būdai:
Pirmasis tipas: naudokite kodą prenumeruodami (dinaminė prenumerata)
„IntentFilter“ filtras = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
„IncomingSMSReceiver“ imtuvas = newIncomingSMSReceiver ();
registerReceiver (imtuvas, filtras);
Antrasis tipas: užsiprenumeruokite mazgas faile „AndroidManifest.xml“ (statinė prenumerata)
Pažvelkime į skirtumą tarp dinaminės transliacijos ir statinės transliacijos prenumeratos:
Statinė prenumeratos transliacija taip pat vadinama: rezidento transliacija. Uždarius jūsų programą, jei yra transliacijos pranešimas, jūsų gautas transliacijos imtuvas taip pat gali ją gauti. Jūsų registracijos metodas yra „AndroidManifast“ jūsų programoje. .xml prenumeratai.
Dinaminė prenumeratos transliacija taip pat vadinama nerezidentų transliacija. Kai programa baigsis, transliacija natūraliai išnyks. Pavyzdžiui, užsiprenumeruojate transliaciją programoje „onCreate“ arba „onResume“ ir turite atšaukti transliacijos prenumeratą naudodami „onDestory“ arba „onPause“. Kitu atveju bus pranešta apie išimtį, todėl jūsų transliacijos imtuvas bus nerezidentas.
Čia yra dar viena detalė, kuri yra du prenumeratos būdai. Siųsdami transliacijas, turite atkreipti dėmesį į: implicitinio ketinimo metodas naudojamas dinaminei registracijai, todėl siunčiant transliacijas turite naudoti numanomą ketinimą siųsti. , Priešingu atveju transliacijos imtuvas negalės priimti transliacijos. Atkreipkite dėmesį į šį tašką. Bet jei užsiprenumeruojate statiškai, nes jis yra prenumeruojamas „AndroidMainfest.xml“, siunčiant transliacijas galima naudoti „Display Intent“ ir „implicit Intent“ (žinoma, tai taikoma tik mūsų pačių apibrėžtiems imtuvams), todėl tik tuo atveju mes paprastai naudojame Ketina siųsti transliaciją.
Pažvelkime į pavyzdį:
Pažvelkite į projekto struktūrą:
Pažvelkite į statinio prenumeratos transliaciją:
paketas com.broadcast.demo;
importuoti android.app.Activity;
importuoti android.content.Intent;
importuoti android.os.Bundle;
importuoti android.view.View;
importuoti android.view.View.OnClickListener;
importuoti android.widget.Button;
importuoti com.example.androidbroadcastdemo.R;
/ **
* Statinė prenumeratos transliacija
* @autorius weijiang204321
*
*/
public class „StaticRegisterBroadcastActivity“ pratęsia veiklą {
@ Nepaisyti
apsaugotas negaliojantis onCreate (paketas išsaugotasInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Mygtukas btn = (mygtukas) findViewById (R.id.btn);
Iki
btn.setOnClickListener (naujas OnClickListener () {
@ Nepaisyti
public void onClick (View v) {
// Naudokite statinį būdą užregistruoti transliaciją, galite naudoti rodymo tikslą transliacijai siųsti
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendBroadcast (transliacija, niekinis);
}
Iki
});
}
Iki
}
Prenumeruokite „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" />
<paraiška
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<veikla
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Kol kas nesijaudinkite dėl kito turinio, apie kurį kalbėsime vėliau, čia daugiausia dėmesio skiriame statinių transliacijų registravimui
Pažvelkime į transliacijos imtuvą:
paketas com.broadcast.receiver;
importuoti android.content.BroadcastReceiver;
importuoti android.content.Context;
importuoti android.content.Intent;
importuoti android.util.Log;
/ **
* Transliacijos imtuvas
* @autorius weijiang204321
*
*/
viešoji klasė „UnSortBroadcastReceiver“ pratęsia „BroadcastReceiver“ {
@ Nepaisyti
public void onReceive (konteksto kontekstas, ketinimo ketinimas) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
Transliacijos imtuvo metodo „onReceive“ logika yra labai paprasta, ty spausdinti veiksmo turinį.
Paleiskite programą, rezultatas yra labai paprastas, čia nėra paveikslėlio.
Pažvelkime į dinamines prenumeratas:
paketas com.broadcast.demo;
importuoti android.app.Activity;
importuoti android.content.Intent;
importuoti android.content.IntentFilter;
importuoti android.os.Bundle;
importuoti android.view.View;
importuoti android.view.View.OnClickListener;
importuoti android.widget.Button;
importuoti com.broadcast.receiver.UnSortBroadcastReceiver;
importuoti com.example.androidbroadcastdemo.R;
/ **
* Naudokite dinamišką būdą registruoti transliaciją
* @autorius weijiang204321
*
*/
viešoji klasė „DynamicRegisterBroadcastActivity“ pratęsia veiklą {
Iki
viešoji statinė galutinė eilutė NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
apsaugotas „UnSortBroadcastReceiver“ imtuvas;
Iki
@ Nepaisyti
apsaugotas negaliojantis onCreate (paketas išsaugotasInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Mygtukas btn0 = (mygtukas) findViewById (R.id.btn);
btn0.setOnClickListener (naujas OnClickListener () {
public void onClick (View v) {
// Siųsti transliaciją
Intent it = naujas ketinimas (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@ Nepaisyti
apsaugotas negaliojantis onResume () {
super.onResume ();
// Registruokitės transliacijai
IntentFilter counterActionFilter = naujas IntentFilter (NEW_LIFEFORM_DETECTED);
imtuvas = naujas UnSortBroadcastReceiver ();
registerReceiver (imtuvas, counterActionFilter);
}
@ Nepaisyti
apsaugotas negaliojantis onPause () {
super.onPause ();
// Atšaukti transliaciją
išregistruoti imtuvą (imtuvą);
}
}
Čia mes užsiprenumeruojame transliaciją „onResume“ ir atsisakome transliacijos „onPause“ prenumeratos.
„AndroidMainfest.xml“ pakeiskite pradėtą veiklą į „DynamicRegisterBroadcastActivity“. Kito turinio keisti nereikia. Paleiskite programą ir atspausdinkite rezultatą labai paprasta, todėl čia nematysiu nuotraukos.
Pažvelkime į užsakytą transliaciją ir neužsakytą transliaciją
Mes tai jau minėjome pradžioje, pažvelkime į netvarkingą transliaciją:
Pirmiausia nustatome du transliavimo imtuvus:
Pirmasis transliacijos imtuvas:
paketas com.broadcast.receiver;
importuoti android.content.BroadcastReceiver;
importuoti android.content.Context;
importuoti android.content.Intent;
importuoti android.util.Log;
/ **
* Transliacijos imtuvas A
* @autorius weijiang204321
*
*/
public class SortBroadcastReceiverA pratęsia BroadcastReceiver {
@ Nepaisyti
public void onReceive (konteksto kontekstas, ketinimo ketinimas) {
„Log.e“ („Demo:“, „transliacijos imtuvas A“);
}
}
Antrasis transliacijos imtuvas:
paketas com.broadcast.receiver;
importuoti android.content.BroadcastReceiver;
importuoti android.content.Context;
importuoti android.content.Intent;
importuoti android.util.Log;
/ **
* Transliacijos imtuvas B
* @autorius weijiang204321
*
*/
viešoji klasė „SortBroadcastReceiverB“ pratęsia „BroadcastReceiver“ {
@ Nepaisyti
public void onReceive (konteksto kontekstas, ketinimo ketinimas) {
„Log.e“ („Demo:“, „Transliacija B“);
}
Iki
Iki
}
Užsiprenumeruokite transliaciją „AndroidMainfest.xml“
operacijos rezultatas:
Bėgimo rezultatas yra šiek tiek keistas. Kodėl imtuvas B yra priekyje ir imtuvas A gale? Priežastis yra ta, kad kai mes užsiprenumeruojame transliaciją „AndroidMainfest.xml“, ketinimo filtre nustatome „android: priority“ atributo vertę. Kuo didesnė vertė, tuo didesnis prioritetas. , Imtuvo B prioritetas yra 1000, imtuvo A prioritetas yra 999, taigi B pirmiausia priima transliaciją, o tada A ją priima, tačiau nėra ryšio tarp imtuvo B ir imtuvo A ir negali būti sąveikos Taip, nes tai yra netinkama transliacija ir asinchroninė, mes galime atlikti eksperimentą, pridėdami kodą prie „onReceiver“ metodo B:
abortBroadcast (); // Nutraukti šios transliacijos perdavimą
operacijos rezultatas:
Matome greitą klaidą, tai yra, neužsakyta transliacija neleidžia nutraukti transliacijos. Tiesą sakant, nutraukimas yra nenaudingas, nes imtuvas A vis tiek gauna transliaciją.
Pažvelkime į tvarkingą transliaciją, kodą reikia modifikuoti:
Pirmasis yra siunčiant transliaciją:
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendOrderedBroadcast (transliacija, niekinis);
Tada pridėkite būdą, kaip nutraukti transliaciją B imtuve:
nutraukti transliaciją ();
Kito kodo keisti nereikia, operacijos rezultatas:
Yra tik imtuvas B, imtuvas A negauna transliacijos, nes transliacija nutraukiama imtuve B, o paskesni imtuvai negali jos priimti.
Pakeiskite žemiau esantį kodą:
B gavėjas:
paketas com.broadcast.receiver;
importuoti android.content.BroadcastReceiver;
importuoti android.content.Context;
importuoti android.content.Intent;
importuoti android.os.Bundle;
importuoti android.util.Log;
/ **
* Transliacijos imtuvas B
* @autorius weijiang204321
*
*/
viešoji klasė „SortBroadcastReceiverB“ pratęsia „BroadcastReceiver“ {
@ Nepaisyti
public void onReceive (konteksto kontekstas, ketinimo ketinimas) {
„Log.e“ („Demo:“, „transliacijos imtuvas B“);
Paketo paketas = naujas rinkinys ();
bundle.putString ("kitas_gavėjas", "kitas transliacijos imtuvas");
setResultExtras (paketas);
}
Iki
}
Po to, kai B gauna transliaciją, ji išsaugo tam tikrą vertę ir perduoda ją kitam imtuvui.
Imtuvo A kodas:
paketas com.broadcast.receive
Mūsų kitas produktas:
Profesionalus FM radijo stoties įrangos paketas
|
||
|
Įveskite el. Pašto adresą, kad gautumėte staigmeną
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanų kalba
sq.fmuser.org -> albanų
ar.fmuser.org -> arabų
hy.fmuser.org -> armėnas
az.fmuser.org -> azerbaidžanietis
eu.fmuser.org -> baskų
be.fmuser.org -> baltarusių
bg.fmuser.org -> bulgarų
ca.fmuser.org -> katalonų
zh-CN.fmuser.org -> kinų (supaprastinta)
zh-TW.fmuser.org -> kinų (tradicinė)
hr.fmuser.org -> kroatų
cs.fmuser.org -> čekų
da.fmuser.org -> danų
nl.fmuser.org -> Olandų
et.fmuser.org -> estų
tl.fmuser.org -> filipinietis
fi.fmuser.org -> suomių
fr.fmuser.org -> prancūzų
gl.fmuser.org -> Galisų
ka.fmuser.org -> gruzinų
de.fmuser.org -> vokiečių kalba
el.fmuser.org -> graikų
ht.fmuser.org -> Haičio kreolis
iw.fmuser.org -> hebrajų
hi.fmuser.org -> hindi
hu.fmuser.org -> vengrų
is.fmuser.org -> islandų
id.fmuser.org -> indoneziečių
ga.fmuser.org -> airių
it.fmuser.org -> italų kalba
ja.fmuser.org -> japonų
ko.fmuser.org -> korėjiečių
lv.fmuser.org -> latvių
lt.fmuser.org -> lietuvis
mk.fmuser.org -> makedonų
ms.fmuser.org -> malajiečių
mt.fmuser.org -> maltiečių
no.fmuser.org -> norvegų
fa.fmuser.org -> persų
pl.fmuser.org -> lenkų
pt.fmuser.org -> portugalų
ro.fmuser.org -> rumunų
ru.fmuser.org -> rusų
sr.fmuser.org -> serbų
sk.fmuser.org -> slovakų
sl.fmuser.org -> slovėnų
es.fmuser.org -> ispanų
sw.fmuser.org -> svahili kalba
sv.fmuser.org -> švedų
th.fmuser.org -> Tailando
tr.fmuser.org -> turkų
uk.fmuser.org -> ukrainietis
ur.fmuser.org -> urdu
vi.fmuser.org -> vietnamiečių
cy.fmuser.org -> Valų kalba
yi.fmuser.org -> jidiš
„FMUSER Wirless“ perduoda vaizdo ir garso įrašus lengviau!
Susisiekite su mumis
Adresas:
Nr. 305 kambarys „HuiLan“ pastatas Nr. 273 Huanpu Road Guangdžou, Kinija 510620
Kategorijos
Naujienlaiškis