FMUSER bežični prijenos videa i zvuka lakše!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albanski
ar.fmuser.org -> arapski
hy.fmuser.org -> Armenski
az.fmuser.org -> azerbejdžanski
eu.fmuser.org -> baskijski
be.fmuser.org -> bjeloruski
bg.fmuser.org -> Bugarski
ca.fmuser.org -> katalonski
zh-CN.fmuser.org -> kineski (pojednostavljeni)
zh-TW.fmuser.org -> Kineski (tradicionalni)
hr.fmuser.org -> hrvatski
cs.fmuser.org -> češki
da.fmuser.org -> danski
nl.fmuser.org -> Nizozemski
et.fmuser.org -> estonski
tl.fmuser.org -> filipinski
fi.fmuser.org -> finski
fr.fmuser.org -> Francuski
gl.fmuser.org -> galicijski
ka.fmuser.org -> gruzijski
de.fmuser.org -> njemački
el.fmuser.org -> Grčki
ht.fmuser.org -> haićanski kreolski
iw.fmuser.org -> hebrejski
hi.fmuser.org -> hindski
hu.fmuser.org -> Mađarski
is.fmuser.org -> islandski
id.fmuser.org -> indonezijski
ga.fmuser.org -> irski
it.fmuser.org -> Talijanski
ja.fmuser.org -> japanski
ko.fmuser.org -> korejski
lv.fmuser.org -> latvijski
lt.fmuser.org -> Litvanski
mk.fmuser.org -> makedonski
ms.fmuser.org -> malajski
mt.fmuser.org -> malteški
no.fmuser.org -> Norveška
fa.fmuser.org -> perzijski
pl.fmuser.org -> poljski
pt.fmuser.org -> portugalski
ro.fmuser.org -> Rumunjski
ru.fmuser.org -> ruski
sr.fmuser.org -> srpski
sk.fmuser.org -> slovački
sl.fmuser.org -> Slovenski
es.fmuser.org -> španjolski
sw.fmuser.org -> svahili
sv.fmuser.org -> švedski
th.fmuser.org -> Tajlandski
tr.fmuser.org -> turski
uk.fmuser.org -> ukrajinski
ur.fmuser.org -> urdu
vi.fmuser.org -> Vijetnamski
cy.fmuser.org -> velški
yi.fmuser.org -> Jidiš
Emitiranje se dijeli na dvije različite vrste: "Uobičajena emitiranja" i "Naručena emitiranja". Uobičajena emisija potpuno je asinkrona i mogu je istovremeno primiti svi prijemnici emitiranja (logično). Učinkovitost isporuke poruka je relativno visoka, ali nedostatak je što prijamnik ne može proslijediti rezultat obrade sljedećem primatelju i ne može se prekinuti. Širenje namjere širenja; međutim, poredano emitiranje temelji se na prioritetu koji je prijavio prijamnik (deklariran u android: attribute priority elementa filtra namjere, što je veći broj, veći je prioritet, raspon vrijednosti: -1000 do 1000. moguće Pozovite setPriority () objekta IntentFilter koji želite postaviti), a primatelj redom prima emitiranje. Na primjer, ako je razina A viša od razine B, a razina B viša od C, tada se emitiranje prvo prenosi u A, zatim u B i na kraju u C. Nakon što A dobije emitiranje, može pohraniti podatke u emisiji. Kada se emitiranje pošalje na B, B može dobiti podatke koje je A pohranio iz emitiranja.
Context.sendBroadcast ()
Poslano je obično emitiranje i svi pretplatnici imaju priliku to dobiti i obraditi.
Context.sendOrderedBroadcast ()
Slanje je uredno emitiranje. Sustav će izvršavati prijamnike jedan po jedan u skladu s prioritetom koji je prijamnik prijavio. Prethodni prijamnik ima pravo prekinuti emitiranje (BroadcastReceiver.abortBroadcast ()). Ako emitiranje prekine prethodni prijamnik, potonji prijemnik više ne može primati emitiranje. Za naručeno emitiranje, prethodni prijamnik može pohraniti rezultat obrade u namjeru emitiranja, a zatim ga proslijediti sljedećem prijemniku.
Prijenosni prijamnik (BroadcastReceiver) koristi se za primanje emitirane namjere, a slanje emitirane namjere ostvaruje se pozivanjem Context.sendBroadcast () i Context.sendOrderedBroadcast (). Obično emitiranu namjeru može primiti više prijemnih emitera koji su pretplaćeni na ovu namjeru. Ova je značajka slična prijemnicima poruka Topic u JMS-u. Primjena metode prijemnika emitiranja je sljedeća:
Prvi korak: definirajte emitirani prijamnik, naslijedite BroadcastReceiver i prepišite metodu onReceive ().
javna klasa IncomingSMSReceiver extendsBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Korak 2: Pretplatite se na emitiranje Namjera interesa, postoje dvije metode pretplate:
Prva vrsta: upotrijebite kod za pretplatu (dinamička pretplata)
IntentFilter filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver receiver = newIncomingSMSReceiver ();
registerReceiver (prijamnik, filter);
Druga vrsta: Pretplatite se na čvor u datoteci AndroidManifest.xml (statička pretplata)
Pogledajmo razliku između pretplate na dinamičko emitiranje i pretplate na statičko emitiranje:
Statičko emitiranje pretplate naziva se i: rezidentno emitiranje. Kada je vaša aplikacija zatvorena, ako postoji emitirana poruka, i prijemnik za emitiranje koji ste napisali može je primiti. Njegova metoda registracije je AndroidManifast u vašoj aplikaciji. .xml za pretplatu.
Dinamičko emitiranje pretplate naziva se i: nerezidentno emitiranje. Kad aplikacija završi, emitiranje će prirodno nestati. Na primjer, pretplatili ste se na emitiranje u onCreate ili onResume u aktivnosti, a pretplatu na emitiranje morate otkazati u onDestory ili onPause. U suprotnom, izvijestit će se o izuzeću, tako da vaš prijemnik neće biti rezident.
Ovdje postoji još jedan detalj, a to su dvije metode pretplate. Prilikom slanja emisija, morate obratiti pažnju na: Metoda implicitne namjere koristi se za dinamičku registraciju, tako da prilikom slanja emisija morate koristiti implicitnu namjeru. , Inače prijemnik emitiranja neće moći primiti emitiranje. Obratite pažnju na ovu točku. Ali kada se pretplatite statički, jer je pretplaćen na AndroidMainfest.xml, moguće je koristiti display Intent i implicitnu namjeru prilikom slanja emisija (naravno, ovo je samo za prijemnike emitiranja koje smo sami definirali), pa za svaki slučaj obično koristimo implicitne Namjera slanja emitiranja.
Pogledajmo primjer:
Pogledajte strukturu projekta:
Pogledajte statično emitiranje pretplate:
paket com.broadcast.demo;
uvoz android.app.Activity;
uvoz android.content.Intent;
uvoz android.os.Bundle;
uvoz android.view.View;
uvoz android.view.View.OnClickListener;
uvoz android.widget.Button;
uvoz com.example.androidbroadcastdemo.R;
/ **
* Statično emitiranje pretplate
* @autor weijiang204321
*
*/
javna klasa StaticRegisterBroadcastActivity proširuje aktivnost {
@Preuzmi
zaštićena praznina onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Gumb btn = (Gumb) findViewById (R.id.btn);
Do
btn.setOnClickListener (novi OnClickListener () {
@Preuzmi
javna praznina onClick (Prikaz v) {
// Upotrijebite statični način za prijavu emitiranja, a namjeru zaslona možete koristiti za slanje emitiranja
Emitiranje namjere = nova namjera ("com.broadcast.set.broadcast");
sendBroadcast (emitiranje, null);
}
Do
});
}
Do
}
Pretplatite se na AndroidMainfest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
paket = "com.example.androidbroadcastdemo"
android: versionCode = "1"
android: versionName = "1.0">
<uses-sdk
android: minSdkVersion = "8"
android: targetSdkVersion = "18" />
<primjena
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<aktivnost
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Za sada ne brinite o ostalim sadržajima, o čemu ćemo razgovarati kasnije, ovdje se fokusiramo samo na registraciju statičnih emisija
Pogledajmo prijemnik emisije:
paket com.broadcast.receiver;
uvoz android.content.BroadcastReceiver;
uvoz android.content.Context;
uvoz android.content.Intent;
uvoz android.util.Log;
/ **
* Prijenosni prijemnik
* @autor weijiang204321
*
*/
javna klasa UnSortBroadcastReceiver proširuje BroadcastReceiver {
@Preuzmi
javna praznina onReceive (kontekst konteksta, namjera namjere) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
Logika metode onReceive u emitiranom prijamniku vrlo je jednostavna, a to je ispis sadržaja akcije.
Pokrenite program, rezultat je vrlo jednostavan, ovdje nije slika.
Pogledajmo dinamičke pretplate:
paket com.broadcast.demo;
uvoz android.app.Activity;
uvoz android.content.Intent;
uvoz android.content.IntentFilter;
uvoz android.os.Bundle;
uvoz android.view.View;
uvoz android.view.View.OnClickListener;
uvoz android.widget.Button;
uvoz com.broadcast.receiver.UnSortBroadcastReceiver;
uvoz com.example.androidbroadcastdemo.R;
/ **
* Upotrijebite dinamični način za registraciju emitiranja
* @autor weijiang204321
*
*/
javna klasa DynamicRegisterBroadcastActivity proširuje aktivnost {
Do
javni statički završni niz NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
zaštićeni prijemnik UnSortBroadcastReceiver;
Do
@Preuzmi
zaštićena praznina onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Gumb btn0 = (Gumb) findViewById (R.id.btn);
btn0.setOnClickListener (novi OnClickListener () {
javna praznina onClick (Prikaz v) {
// Pošaljite emitiranje
Namjera it = nova namjera (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@Preuzmi
zaštićena praznina onResume () {
super.onResume ();
// Registriraj se za emitiranje
IntentFilter counterActionFilter = novi IntentFilter (NEW_LIFEFORM_DETECTED);
prijemnik = novi UnSortBroadcastReceiver ();
registerReceiver (prijamnik, counterActionFilter);
}
@Preuzmi
zaštićena praznina onPause () {
super.onPause ();
// Otkaži emitiranje
odjavitiPrimnik (prijamnik);
}
}
Ovdje se pretplaćujemo na emitiranje u onResume, a odjavljujemo se na emitiranje u onPause.
Promijenite pokrenutu Aktivnost u DynamicRegisterBroadcastActivity u AndroidMainfest.xml. Ostali sadržaj nije potrebno mijenjati. Pokrenite program i ispišite rezultat vrlo je jednostavno, tako da ovdje neću vidjeti sliku.
Pogledajmo uređeno emitiranje i neuređeno emitiranje
To smo već spomenuli na početku, pogledajmo neuredno emitiranje:
Prvo definiramo dva emitirana prijamnika:
Prvi emitirani prijamnik:
paket com.broadcast.receiver;
uvoz android.content.BroadcastReceiver;
uvoz android.content.Context;
uvoz android.content.Intent;
uvoz android.util.Log;
/ **
* Prijenosni prijemnik A
* @autor weijiang204321
*
*/
javna klasa SortBroadcastReceiverA proširuje BroadcastReceiver {
@Preuzmi
javna praznina onReceive (kontekst konteksta, namjera namjere) {
Log.e ("Demo:", "emitirani prijamnik A");
}
}
Drugi emitirani prijamnik:
paket com.broadcast.receiver;
uvoz android.content.BroadcastReceiver;
uvoz android.content.Context;
uvoz android.content.Intent;
uvoz android.util.Log;
/ **
* Prijenosni prijamnik B
* @autor weijiang204321
*
*/
javna klasa SortBroadcastReceiverB proširuje BroadcastReceiver {
@Preuzmi
javna praznina onReceive (kontekst konteksta, namjera namjere) {
Log.e ("Demo:", "Emitiranje B");
}
Do
Do
}
Pretplatite se na emitiranje na AndroidMainfest.xml
rezultat operacije:
Rezultati trčanja su pomalo čudni. Zašto je prijemnik B sprijeda, a prijemnik A straga? Razlog je taj što kada se pretplatimo na emitiranje u AndroidMainfest.xml, postavimo vrijednost atributa android: priority u filtru namjere. Što je vrijednost veća, prioritet je veći. , Prioritet prijamnika B je 1000, prioritet prijemnika A je 999, pa B prvo prima emitiranje, a zatim ga prima A, ali nema veze između prijamnika B i prijemnika A i ne može biti interakcije Da, jer je ovo emitiranje izvan reda i asinkrono, možemo napraviti eksperiment dodavanjem koda metodi onReceiver u B:
abortBroadcast (); // Prekini prijenos ovog emitiranja
rezultat operacije:
Vidimo brzu pogrešku, odnosno neuređeno emitiranje ne smije prekinuti emitiranje. Zapravo je završetak beskoristan, jer prijemnik A i dalje prima emitiranje.
Pogledajmo uredno emitiranje, kod je potrebno izmijeniti:
Prvo je kod slanja emisije:
Emitiranje namjere = nova namjera ("com.broadcast.set.broadcast");
sendOrderedBroadcast (emitiranje, null);
Zatim dodajte metodu za prekid emitiranja u B prijamniku:
abortBroadcast ();
Drugi kôd ne treba mijenjati, rezultat operacije:
Postoji samo prijemnik B, prijemnik A ne prima emitiranje, jer je emitiranje završeno u prijemniku B, a sljedeći prijemnici ga ne mogu prihvatiti.
Izmijenite donji kod:
Primatelj B:
paket com.broadcast.receiver;
uvoz android.content.BroadcastReceiver;
uvoz android.content.Context;
uvoz android.content.Intent;
uvoz android.os.Bundle;
uvoz android.util.Log;
/ **
* Prijenosni prijamnik B
* @autor weijiang204321
*
*/
javna klasa SortBroadcastReceiverB proširuje BroadcastReceiver {
@Preuzmi
javna praznina onReceive (kontekst konteksta, namjera namjere) {
Log.e ("Demo:", "emitirani prijamnik B");
Paket snopa = novi Bundle ();
bundle.putString ("next_receiver", "next emisijski prijamnik");
setResultExtras (snop);
}
Do
}
Nakon što B primi emitiranje, pohranjuje neku vrijednost i prosljeđuje je sljedećem prijemniku.
Kôd prijemnika A:
paket com.emitirati.primiti
Naš drugi proizvod:
Paket opreme za profesionalne FM radio stanice
|
||
|
Unesite e-poštu da biste dobili iznenađenje
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albanski
ar.fmuser.org -> arapski
hy.fmuser.org -> Armenski
az.fmuser.org -> azerbejdžanski
eu.fmuser.org -> baskijski
be.fmuser.org -> bjeloruski
bg.fmuser.org -> Bugarski
ca.fmuser.org -> katalonski
zh-CN.fmuser.org -> kineski (pojednostavljeni)
zh-TW.fmuser.org -> Kineski (tradicionalni)
hr.fmuser.org -> hrvatski
cs.fmuser.org -> češki
da.fmuser.org -> danski
nl.fmuser.org -> Nizozemski
et.fmuser.org -> estonski
tl.fmuser.org -> filipinski
fi.fmuser.org -> finski
fr.fmuser.org -> Francuski
gl.fmuser.org -> galicijski
ka.fmuser.org -> gruzijski
de.fmuser.org -> njemački
el.fmuser.org -> Grčki
ht.fmuser.org -> haićanski kreolski
iw.fmuser.org -> hebrejski
hi.fmuser.org -> hindski
hu.fmuser.org -> Mađarski
is.fmuser.org -> islandski
id.fmuser.org -> indonezijski
ga.fmuser.org -> irski
it.fmuser.org -> Talijanski
ja.fmuser.org -> japanski
ko.fmuser.org -> korejski
lv.fmuser.org -> latvijski
lt.fmuser.org -> Litvanski
mk.fmuser.org -> makedonski
ms.fmuser.org -> malajski
mt.fmuser.org -> malteški
no.fmuser.org -> Norveška
fa.fmuser.org -> perzijski
pl.fmuser.org -> poljski
pt.fmuser.org -> portugalski
ro.fmuser.org -> Rumunjski
ru.fmuser.org -> ruski
sr.fmuser.org -> srpski
sk.fmuser.org -> slovački
sl.fmuser.org -> Slovenski
es.fmuser.org -> španjolski
sw.fmuser.org -> svahili
sv.fmuser.org -> švedski
th.fmuser.org -> Tajlandski
tr.fmuser.org -> turski
uk.fmuser.org -> ukrajinski
ur.fmuser.org -> urdu
vi.fmuser.org -> Vijetnamski
cy.fmuser.org -> velški
yi.fmuser.org -> Jidiš
FMUSER bežični prijenos videa i zvuka lakše!
Kontakt
Adresa:
Br. 305 Soba HuiLan zgrada br. 273 Huanpu Road Guangzhou Kina 510620
Kategorije
Novosti