FMUSER Wirless Transmit video și audio mai ușor!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albaneză
ar.fmuser.org -> arabă
hy.fmuser.org -> Armeană
az.fmuser.org -> azeră
eu.fmuser.org -> bască
be.fmuser.org -> bielorusă
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> catalană
zh-CN.fmuser.org -> Chineză (simplificată)
zh-TW.fmuser.org -> Chineză (tradițională)
hr.fmuser.org -> croată
cs.fmuser.org -> cehă
da.fmuser.org -> Daneză
nl.fmuser.org -> Dutch
et.fmuser.org -> estonă
tl.fmuser.org -> filipinez
fi.fmuser.org -> finlandeză
fr.fmuser.org -> Franceză
gl.fmuser.org -> Galeză
ka.fmuser.org -> Georgiană
de.fmuser.org -> germană
el.fmuser.org -> greacă
ht.fmuser.org -> Creole haitian
iw.fmuser.org -> ebraică
hi.fmuser.org -> Hindi
hu.fmuser.org -> Maghiară
is.fmuser.org -> islandeză
id.fmuser.org -> indoneziană
ga.fmuser.org -> irlandeză
it.fmuser.org -> Italiană
ja.fmuser.org -> japoneză
ko.fmuser.org -> coreeană
lv.fmuser.org -> letonă
lt.fmuser.org -> lituaniană
mk.fmuser.org -> macedoneană
ms.fmuser.org -> Malay
mt.fmuser.org -> malteză
no.fmuser.org -> norvegiană
fa.fmuser.org -> persană
pl.fmuser.org -> poloneză
pt.fmuser.org -> portugheză
ro.fmuser.org -> Română
ru.fmuser.org -> rusă
sr.fmuser.org -> sârbă
sk.fmuser.org -> slovacă
sl.fmuser.org -> Slovenă
es.fmuser.org -> spaniolă
sw.fmuser.org -> Swahili
sv.fmuser.org -> suedeză
th.fmuser.org -> Thai
tr.fmuser.org -> turcă
uk.fmuser.org -> ucraineană
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnameză
cy.fmuser.org -> galeză
yi.fmuser.org -> idiș
Radiodifuziunea este împărțită în două tipuri diferite: „Difuzări normale” și „Difuzări comandate”. Difuzarea obișnuită este complet asincronă și poate fi recepționată de toți receptorii de difuzare în același timp (logic). Eficiența livrării mesajelor este relativ mare, dar dezavantajul este că receptorul nu poate transmite rezultatul procesării către următorul receptor și nu poate fi terminat. Propagarea intenției de difuzare; cu toate acestea, difuzarea ordonată se bazează pe prioritatea declarată de receptor (declarată în Android: atributul de prioritate al elementului de filtrare a intenției, cu cât numărul este mai mare, cu atât este mai mare prioritatea, intervalul de valori: -1000 până la 1000. De asemenea, este posibil Apelați setPriority () obiectului IntentFilter pentru setare), iar destinatarul primește pe rând difuzarea. De exemplu, dacă nivelul lui A este mai mare decât cel al lui B și nivelul lui B este mai mare decât C, atunci transmisia este transmisă mai întâi către A, apoi către B și, în cele din urmă, către C. După ce A primește difuzarea, poate stoca date în difuzare. Când transmisia este trimisă către B, B poate obține datele stocate de A de la difuzare.
Context.sendBroadcast ()
Ceea ce este trimis este o transmisie obișnuită, iar toți abonații au posibilitatea să o obțină și să o proceseze.
Context.sendOrderedBroadcast ()
Trimiterea este o transmisie ordonată. Sistemul va executa receptorii unul câte unul în funcție de prioritatea declarată de receptor. Receptorul anterior are dreptul de a încheia difuzarea (BroadcastReceiver.abortBroadcast ()). Dacă transmisia este terminată de receptorul anterior, acesta din urmă Receptorul nu mai poate obține difuzarea. Pentru difuzarea comandată, receptorul anterior poate stoca rezultatul procesării în intenția de difuzare, apoi îl poate transmite următorului receptor.
Receptorul de difuzare (BroadcastReceiver) este utilizat pentru a primi intenția de difuzare, iar trimiterea intenției de difuzare se realizează apelând Context.sendBroadcast () și Context.sendOrderedBroadcast (). De obicei, o intenție de difuzare poate fi primită de mai mulți receptori de difuzare abonați la această intenție. Această caracteristică este similară cu receptorii de mesaje Subiect din JMS. Pentru a implementa o metodă de recepție de difuzare este după cum urmează:
Primul pas: definiți receptorul de difuzare, moșteniți BroadcastReceiver și rescrieți metoda onReceive ().
clasă publică IncomingSMSReceiver extinde BroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Pasul 2: Abonați-vă la emisiunea Intent de interes, există două metode de abonament:
Primul tip: utilizați codul pentru a vă abona (abonament dinamic)
Filtru IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
Receptor IncomingSMSReceiver = newIncomingSMSReceiver ();
registerReceiver (receptor, filtru);
Al doilea tip: Abonați-vă în nod în fișierul AndroidManifest.xml (abonament static)
Să aruncăm o privire la diferența dintre abonamentul de difuzare dinamică și abonamentul de difuzare static:
Difuzarea statică prin abonament se mai numește: difuzare rezidentă. Când aplicația dvs. este închisă, dacă există un mesaj difuzat, receptorul de difuzare pe care l-ați scris îl poate primi și el. Metoda sa de înregistrare este AndroidManifast în aplicația dvs. .xml pentru abonament.
Difuzarea dinamică a abonamentului se mai numește: transmisie nerezidentă. Când aplicația se termină, difuzarea va dispărea în mod natural. De exemplu, vă abonați la difuzarea din onCreate sau onResume din activitate și trebuie să anulați abonamentul de difuzare în onDestory sau onPause. În caz contrar, va fi raportată o excepție, astfel încât receptorul dvs. de difuzare va fi un nerezident.
Există încă un detaliu aici, care sunt cele două metode de abonament. Când trimiteți transmisii, trebuie să acordați atenție: Metodei intenției implicite este utilizată pentru înregistrarea dinamică, deci trebuie să utilizați intenția implicită pentru a trimite atunci când trimiteți transmisii. , În caz contrar, receptorul de difuzare nu va putea primi difuzarea. Fii atent la acest punct. Dar atunci când vă abonați static, deoarece este abonat în AndroidMainfest.xml, este posibil să utilizați afișarea Intent și implicit Intent atunci când trimiteți transmisii (desigur, acest lucru este doar pentru receptoarele de difuzare definite de noi înșine), deci, în caz că, în general, folosim implicit Intenția de a trimite difuzarea.
Să vedem un exemplu:
Aruncați o privire asupra structurii proiectului:
Aruncați o privire asupra difuzării statice a abonamentului:
pachet com.broadcast.demo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.example.androidbroadcastdemo.R;
/ **
* Abonament static difuzat
* @autor weijiang204321
*
*/
public class StaticRegisterBroadcastActivity extinde activitatea {
@Trece peste
void protejat onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Buton btn = (Buton) findViewById (R.id.btn);
La
btn.setOnClickListener (nou OnClickListener () {
@Trece peste
public void onClick (View v) {
// Utilizați un mod static pentru a înregistra difuzarea, puteți utiliza intenția de afișare pentru a trimite difuzarea
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendBroadcast (difuzat, nul);
}
La
});
}
La
}
Abonați-vă în 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" />
<aplicare
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<activitate
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Nu vă faceți griji pentru celelalte conținuturi pentru moment, așa cum vom vorbi mai târziu, aici ne concentrăm doar pe înregistrarea transmisiunilor statice
Să aruncăm o privire la receptorul difuzării:
pachet com.broadcast.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/ **
* Receptor de transmisie
* @autor weijiang204321
*
*/
public class UnSortBroadcastReceiver extinde BroadcastReceiver {
@Trece peste
public void onReceive (context context, intenție intenționată) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
Logica metodei onReceive în receptorul de difuzare este foarte simplă, adică imprimarea conținutului acțiunii.
Rulați programul, rezultatul este foarte simplu, aici nu este imaginea.
Să aruncăm o privire asupra abonamentelor dinamice:
pachet com.broadcast.demo;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.broadcast.receiver.UnSortBroadcastReceiver;
import com.example.androidbroadcastdemo.R;
/ **
* Utilizați modul dinamic pentru a înregistra difuzarea
* @autor weijiang204321
*
*/
public class DynamicRegisterBroadcastActivity extinde activitatea {
La
șir public final static NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
receptor UnSortBroadcastReceiver protejat;
La
@Trece peste
void protejat onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Buton btn0 = (Buton) findViewById (R.id.btn);
btn0.setOnClickListener (nou OnClickListener () {
public void onClick (View v) {
// Trimiteți difuzarea
Intent it = intenție nouă (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@Trece peste
void protejat onResume () {
super.onResume ();
// Înregistrați-vă pentru difuzare
IntentFilter counterActionFilter = nou IntentFilter (NEW_LIFEFORM_DETECTED);
receiver = new UnSortBroadcastReceiver ();
registerReceiver (receptor, counterActionFilter);
}
@Trece peste
nul protejat onPause () {
super.onPause ();
// Anulați difuzarea
unregisterReceiver (receptor);
}
}
Aici ne abonăm la difuzarea în onResume și ne dezabonăm la difuzarea în onPause.
Schimbați activitatea lansată în DynamicRegisterBroadcastActivity în AndroidMainfest.xml. Celălalt conținut nu trebuie modificat. Rulați programul și imprimați rezultatul este foarte simplu, așa că nu voi vedea imaginea aici.
Să aruncăm o privire la difuzarea ordonată și difuzarea neordonată
Am menționat deja acest lucru la început, să aruncăm o privire asupra difuzării dezordonate:
Mai întâi definim două receptoare de difuzare:
Primul receptor de difuzare:
pachet com.broadcast.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/ **
* Receptor de transmisie A
* @autor weijiang204321
*
*/
public class SortBroadcastReceiverA extinde BroadcastReceiver {
@Trece peste
public void onReceive (context context, intenție intenționată) {
Log.e ("Demo:", "receptor de difuzare A");
}
}
Al doilea receptor de difuzare:
pachet com.broadcast.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/ **
* Receptor de difuzare B
* @autor weijiang204321
*
*/
public class SortBroadcastReceiverB extinde BroadcastReceiver {
@Trece peste
public void onReceive (context context, intenție intenționată) {
Log.e („Demo:”, „Broadcast B”);
}
La
La
}
Abonați-vă pentru a difuza în AndroidMainfest.xml
rezultatul operației:
Rezultatul alergării este cam ciudat. De ce este receptorul B în față și receptorul A în spate? Motivul este că atunci când ne abonăm la transmisia în AndroidMainfest.xml, setăm valoarea atributului android: prioritate în filtrul de intenție. Cu cât valoarea este mai mare, cu atât este mai mare prioritatea. , Prioritatea receptorului B este 1000, prioritatea receptorului A este 999, deci B primește difuzarea mai întâi, apoi A o primește, dar nu există nicio conexiune între receptorul B și receptorul A și nu poate exista interacțiune Da, deoarece aceasta este o difuzare în afara ordinii și asincronă, putem face un experiment adăugând cod la metoda onReceiver din B:
abortBroadcast (); // Termină transmisia acestei difuzări
rezultatul operației:
Putem vedea eroarea promptă, adică difuzarea neordonată nu are voie să încheie difuzarea. De fapt, terminarea este inutilă, deoarece receptorul A primește în continuare difuzarea.
Să aruncăm o privire la difuzarea ordonată, codul trebuie modificat:
Primul este atunci când trimiteți o transmisie:
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendOrderedBroadcast (difuzat, nul);
Apoi adăugați o metodă pentru a termina difuzarea în receptorul B:
abortBroadcast ();
Celălalt cod nu trebuie modificat, rezultatul operației:
Există doar receptorul B, receptorul A nu primește transmisia, deoarece difuzarea este terminată în receptorul B, iar receptorii ulteriori nu o pot accepta.
Modificați codul de mai jos:
Destinatarul B:
pachet com.broadcast.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
/ **
* Receptor de difuzare B
* @autor weijiang204321
*
*/
public class SortBroadcastReceiverB extinde BroadcastReceiver {
@Trece peste
public void onReceive (context context, intenție intenționată) {
Log.e ("Demo:", "receptor de difuzare B");
Bundle bundle = pachet nou ();
bundle.putString ("next_receiver", "next broadcast receiver");
setResultExtras (pachet);
}
La
}
După ce B primește transmisia, stochează o anumită valoare și o transmite următorului receptor.
Codul receptorului A:
pachet com.broadcast.receive
alt produs nostru:
Pachet de echipamente profesionale pentru stația radio FM
|
||
|
Introduceți adresa de e-mail pentru a primi o surpriză
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albaneză
ar.fmuser.org -> arabă
hy.fmuser.org -> Armeană
az.fmuser.org -> azeră
eu.fmuser.org -> bască
be.fmuser.org -> bielorusă
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> catalană
zh-CN.fmuser.org -> Chineză (simplificată)
zh-TW.fmuser.org -> Chineză (tradițională)
hr.fmuser.org -> croată
cs.fmuser.org -> cehă
da.fmuser.org -> Daneză
nl.fmuser.org -> Dutch
et.fmuser.org -> estonă
tl.fmuser.org -> filipinez
fi.fmuser.org -> finlandeză
fr.fmuser.org -> Franceză
gl.fmuser.org -> Galeză
ka.fmuser.org -> Georgiană
de.fmuser.org -> germană
el.fmuser.org -> greacă
ht.fmuser.org -> Creole haitian
iw.fmuser.org -> ebraică
hi.fmuser.org -> Hindi
hu.fmuser.org -> Maghiară
is.fmuser.org -> islandeză
id.fmuser.org -> indoneziană
ga.fmuser.org -> irlandeză
it.fmuser.org -> Italiană
ja.fmuser.org -> japoneză
ko.fmuser.org -> coreeană
lv.fmuser.org -> letonă
lt.fmuser.org -> lituaniană
mk.fmuser.org -> macedoneană
ms.fmuser.org -> Malay
mt.fmuser.org -> malteză
no.fmuser.org -> norvegiană
fa.fmuser.org -> persană
pl.fmuser.org -> poloneză
pt.fmuser.org -> portugheză
ro.fmuser.org -> Română
ru.fmuser.org -> rusă
sr.fmuser.org -> sârbă
sk.fmuser.org -> slovacă
sl.fmuser.org -> Slovenă
es.fmuser.org -> spaniolă
sw.fmuser.org -> Swahili
sv.fmuser.org -> suedeză
th.fmuser.org -> Thai
tr.fmuser.org -> turcă
uk.fmuser.org -> ucraineană
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnameză
cy.fmuser.org -> galeză
yi.fmuser.org -> idiș
FMUSER Wirless Transmit video și audio mai ușor!
Contact
Adresa:
Nr. 305 Clădirea HuiLan nr. 273 Huanpu Road Guangzhou China 510620
Categorii
Stiri lunare via e-mail