FMUSER Wirless Transmet vídeo i àudio més fàcil!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> Albanès
ar.fmuser.org -> Àrab
hy.fmuser.org -> Armeni
az.fmuser.org -> Azerbaidjanès
eu.fmuser.org -> basc
be.fmuser.org -> bielorús
bg.fmuser.org -> Bulgària
ca.fmuser.org -> català
zh-CN.fmuser.org -> Xinès (simplificat)
zh-TW.fmuser.org -> Xinès (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> txec
da.fmuser.org -> Danès
nl.fmuser.org -> Holandès
et.fmuser.org -> estonià
tl.fmuser.org -> filipí
fi.fmuser.org -> finès
fr.fmuser.org -> Francès
gl.fmuser.org -> gallec
ka.fmuser.org -> georgià
de.fmuser.org -> alemany
el.fmuser.org -> Grec
ht.fmuser.org -> crioll haitià
iw.fmuser.org -> Hebreu
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandès
id.fmuser.org -> indonesi
ga.fmuser.org -> irlandès
it.fmuser.org -> Italià
ja.fmuser.org -> japonès
ko.fmuser.org -> coreà
lv.fmuser.org -> Letó
lt.fmuser.org -> Lituània
mk.fmuser.org -> macedoni
ms.fmuser.org -> Malai
mt.fmuser.org -> maltès
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> Polonès
pt.fmuser.org -> Portuguès
ro.fmuser.org -> Romanès
ru.fmuser.org -> rus
sr.fmuser.org -> serbi
sk.fmuser.org -> Eslovac
sl.fmuser.org -> Eslovènia
es.fmuser.org -> Castellà
sw.fmuser.org -> Suahili
sv.fmuser.org -> Suec
th.fmuser.org -> Tai
tr.fmuser.org -> turc
uk.fmuser.org -> ucraïnès
ur.fmuser.org -> urdú
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> gal·lès
yi.fmuser.org -> Yiddish
L'emissió es divideix en dos tipus diferents: "Emissions normals" i "Emissions ordenades". L’emissió ordinària és completament asíncrona i la poden rebre tots els receptors d’emissió alhora (lògicament). L’eficiència de l’enviament de missatges és relativament alta, però l’inconvenient és que el receptor no pot passar el resultat del processament al següent receptor i no es pot acabar. Propagació de la intenció de difusió; tanmateix, l'emissió ordenada es basa en la prioritat declarada pel receptor (declarada a l'atribut android: priority de l'element filter-intent, com més gran sigui el nombre, major serà la prioritat, l'interval de valors: -1000 a 1000. També és possible Truqueu al setPriority () de l’objecte IntentFilter a configurar) i el destinatari rebrà l’emissió al seu torn. Per exemple, si el nivell d'A és superior al de B i el nivell de B és superior a C, llavors l'emissió es transmet primer a A, després a B i, finalment, a C. Després que A obtingui l'emissió, pot emmagatzemar dades a l'emissió. Quan l'emissió s'envia a B, B pot obtenir les dades emmagatzemades per A de l'emissió.
Context.sendBroadcast ()
El que s’envia és una transmissió ordinària i tots els subscriptors tenen l’oportunitat d’obtenir-la i processar-la.
Context.sendOrderedBroadcast ()
L’enviament és una transmissió ordenada. El sistema executarà els receptors un per un segons la prioritat declarada pel receptor. El receptor anterior té dret a finalitzar l’emissió (BroadcastReceiver.abortBroadcast ()). Si l’emissor finalitza l’emissió, aquest últim ja no pot obtenir l’emissió. Per a la difusió ordenada, el receptor anterior pot emmagatzemar el resultat del processament a la intenció de difusió i després passar-lo al receptor següent.
El receptor de difusió (BroadcastReceiver) s’utilitza per rebre Intent de difusió i l’enviament de Intent de difusió es realitza trucant a Context.sendBroadcast () i Context.sendOrderedBroadcast (). Normalment, diversos destinataris de transmissió subscrits a aquesta intenció poden rebre una intenció de difusió. Aquesta característica és similar als receptors de missatges Topic de JMS. Per implementar un mètode de receptor de transmissió és el següent:
El primer pas: definiu el receptor de difusió, hereteu BroadcastReceiver i reescriviu el mètode onReceive ().
classe pública IncomingSMSReceiver extendsBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Pas 2: subscriviu-vos a l'emissió Intenció d'interès, hi ha dos mètodes de subscripció:
El primer tipus: utilitzeu el codi per subscriure-us (subscripció dinàmica)
Filtre IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
Receptor IncomingSMSReceiver = newIncomingSMSReceiver ();
registerReceiver (receptor, filtre);
El segon tipus: subscriviu-vos al fitxer node al fitxer AndroidManifest.xml (subscripció estàtica)
Vegem la diferència entre la subscripció de transmissió dinàmica i la subscripció de transmissió estàtica:
L’emissió estàtica de subscripció també s’anomena emissió resident. Quan es tanca la vostra sol·licitud, si hi ha un missatge de difusió, també el pot rebre el receptor de difusió que vau escriure. El seu mètode de registre és AndroidManifast a la vostra aplicació. .xml per subscripció.
L’emissió de subscripció dinàmica també s’anomena emissió no resident. Quan finalitzi l'aplicació, l'emissió desapareixerà naturalment. Per exemple, us subscriviu a l'emissió a onCreate o onResume a l'activitat i heu de cancel·lar la subscripció a broadcast a onDestory o onPause. En cas contrari, s’informarà d’una excepció, de manera que el vostre receptor d’emissió no serà resident.
Aquí hi ha un detall més que són els dos mètodes de subscripció. Quan envieu emissions, heu de prestar atenció a: El mètode d’intenció implícita s’utilitza per al registre dinàmic, de manera que heu d’utilitzar la intenció implícita per enviar quan envieu emissions. , En cas contrari, el receptor de difusió no podrà rebre l'emissió. Preste atenció a aquest punt. Però quan us subscriviu estàticament, ja que està subscrit a AndroidMainfest.xml, és possible utilitzar la intenció de visualització i la intenció implícita a l’hora d’enviar retransmissions (per descomptat, això només és per a receptors d’emissions definits per nosaltres mateixos), de manera que, per si de cas, generalment fem servir implícits. Intenció d'enviar difusió.
Vegem un exemple:
Mireu l’estructura del projecte:
Mireu l’emissió estàtica de subscripció:
paquet com.broadcast.demo;
importa android.app.Activity;
importa android.content.Intent;
importar android.os.Bundle;
importa android.view.View;
importa android.view.View.OnClickListener;
importa android.widget.Button;
importació com.exemple.androidbroadcastdemo.R;
/ **
* Emissió estàtica de subscripció
* @autor weijiang204321
*
*/
public class StaticRegisterBroadcastActivity amplia l'activitat {
@Anul·lació
buit protegit onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Botó btn = (Botó) findViewById (R.id.btn);
A
btn.setOnClickListener (nou OnClickListener () {
@Anul·lació
public void onClick (View v) {
// Utilitzeu una forma estàtica per registrar l'emissió, podeu utilitzar la intenció de visualització per enviar-la
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendBroadcast (emissió, nul·la);
}
A
});
}
A
}
Subscriu-te a 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" />
<aplicació
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<activitat
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
No us preocupeu per l’altre contingut de moment, ja que en parlarem més endavant, aquí només ens centrem en el registre d’emissions estàtiques
Fem una ullada al receptor de l'emissió:
paquet com.broadcast.receiver;
importa android.content.BroadcastReceiver;
importa android.content.Context;
importa android.content.Intent;
importa android.util.Log;
/ **
* Receptor d’emissió
* @autor weijiang204321
*
*/
UnSortBroadcastReceiver de classe pública amplia BroadcastReceiver {
@Anul·lació
public void onReceive (context context, Intent intent) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
La lògica del mètode onReceive al receptor de difusió és molt senzilla, és a dir, imprimir el contingut de l’acció.
Executeu el programa, el resultat és molt senzill, aquí no hi ha la imatge.
Vegem les subscripcions dinàmiques:
paquet com.broadcast.demo;
importa android.app.Activity;
importa android.content.Intent;
importa android.content.IntentFilter;
importar android.os.Bundle;
importa android.view.View;
importa android.view.View.OnClickListener;
importa android.widget.Button;
importació com.broadcast.receiver.UnSortBroadcastReceiver;
importació com.exemple.androidbroadcastdemo.R;
/ **
* Utilitzeu una forma dinàmica per registrar l'emissió
* @autor weijiang204321
*
*/
public class DynamicRegisterBroadcastActivity amplia l'activitat {
A
public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
receptor protegit UnSortBroadcastReceiver;
A
@Anul·lació
buit protegit onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Botó btn0 = (Botó) findViewById (R.id.btn);
btn0.setOnClickListener (nou OnClickListener () {
public void onClick (View v) {
// Enviar transmissió
Intent it = new Intent (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@Anul·lació
buit protegit a Resume () {
super.onResume ();
// Registra't per emetre
IntentFilter counterActionFilter = nou IntentFilter (NEW_LIFEFORM_DETECTED);
receptor = new UnSortBroadcastReceiver ();
registerReceiver (receptor, counterActionFilter);
}
@Anul·lació
buit protegit onPause () {
super.onPause ();
// Cancel·la l'emissió
unregisterReceiver (receptor);
}
}
Aquí ens subscrivim a l'emissió a onResume i ens donem de baixa a l'emissió a onPause.
Canvieu l'activitat llançada a DynamicRegisterBroadcastActivity a AndroidMainfest.xml. No cal modificar l’altre contingut. Executeu el programa i imprimiu el resultat molt senzill, de manera que no veuré la imatge aquí.
Fem una ullada a la difusió ordenada i la difusió no ordenada
Ja ho hem esmentat al principi, donem una ullada a la transmissió desordenada:
Primer definim dos receptors de difusió:
El primer receptor de transmissió:
paquet com.broadcast.receiver;
importa android.content.BroadcastReceiver;
importa android.content.Context;
importa android.content.Intent;
importa android.util.Log;
/ **
* Receptor de difusió A
* @autor weijiang204321
*
*/
classe pública SortBroadcastReceiverA amplia BroadcastReceiver {
@Anul·lació
public void onReceive (context context, Intent intent) {
Log.e ("Demostració:", "receptor de difusió A");
}
}
El segon receptor de transmissió:
paquet com.broadcast.receiver;
importa android.content.BroadcastReceiver;
importa android.content.Context;
importa android.content.Intent;
importa android.util.Log;
/ **
* Receptor d’emissió B
* @autor weijiang204321
*
*/
classe pública SortBroadcastReceiverB amplia BroadcastReceiver {
@Anul·lació
public void onReceive (context context, Intent intent) {
Log.e ("Demostració:", "Emissió B");
}
A
A
}
Subscriviu-vos per emetre a AndroidMainfest.xml
resultat de l'operació:
El resultat corrent és una mica estrany. Per què hi ha el receptor B al davant i el receptor A al darrere? El motiu és que quan ens subscrivim a l'emissió a AndroidMainfest.xml, establim el valor de l'atribut android: priority al filtre d'intenció. Com més gran sigui el valor, major serà la prioritat. , La prioritat del receptor B és 1000, la prioritat del receptor A és 999, de manera que B rep l'emissió primer i després A la rep, però no hi ha connexió entre el receptor B i el receptor A i no hi pot haver interacció. Sí, Com que es tracta d'una difusió fora d'ordre i asíncrona, podem fer un experiment afegint codi al mètode onReceiver a B:
abortBroadcast (); // Finalitza la transmissió d’aquesta transmissió
resultat de l'operació:
Podem veure l’error immediat, és a dir, que no es permet que l’emissió no ordenada finalitzi l’emissió. De fet, la terminació no serveix de res, perquè el receptor A encara rep l’emissió.
Fem una ullada a la difusió ordenada, cal modificar el codi:
El primer és quan s’envia una emissió:
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendOrderedBroadcast (emissió, nul·la);
A continuació, afegiu un mètode per finalitzar l'emissió al receptor B:
abortBroadcast ();
No cal modificar l'altre codi, el resultat de l'operació:
Només hi ha un receptor B, el receptor A no rep l’emissió, perquè l’emissió s’acaba al receptor B i els receptors posteriors no la poden acceptar.
Modifiqueu el codi següent:
Destinatari B:
paquet com.broadcast.receiver;
importa android.content.BroadcastReceiver;
importa android.content.Context;
importa android.content.Intent;
importar android.os.Bundle;
importa android.util.Log;
/ **
* Receptor d’emissió B
* @autor weijiang204321
*
*/
classe pública SortBroadcastReceiverB amplia BroadcastReceiver {
@Anul·lació
public void onReceive (context context, Intent intent) {
Log.e ("Demostració:", "receptor de difusió B");
Paquet de paquets = paquet nou ();
bundle.putString ("receptor_pròxim", "receptor de transmissió següent");
setResultExtras (paquet);
}
A
}
Després que B rebi l'emissió, emmagatzema un cert valor i el passa al següent receptor.
Codi del receptor A:
paquet com.broadcast.receive
El nostre altre producte:
Paquet d'equips d'estació de ràdio FM professional
|
||
|
Introduïu el correu electrònic per obtenir una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> Albanès
ar.fmuser.org -> Àrab
hy.fmuser.org -> Armeni
az.fmuser.org -> Azerbaidjanès
eu.fmuser.org -> basc
be.fmuser.org -> bielorús
bg.fmuser.org -> Bulgària
ca.fmuser.org -> català
zh-CN.fmuser.org -> Xinès (simplificat)
zh-TW.fmuser.org -> Xinès (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> txec
da.fmuser.org -> Danès
nl.fmuser.org -> Holandès
et.fmuser.org -> estonià
tl.fmuser.org -> filipí
fi.fmuser.org -> finès
fr.fmuser.org -> Francès
gl.fmuser.org -> gallec
ka.fmuser.org -> georgià
de.fmuser.org -> alemany
el.fmuser.org -> Grec
ht.fmuser.org -> crioll haitià
iw.fmuser.org -> Hebreu
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandès
id.fmuser.org -> indonesi
ga.fmuser.org -> irlandès
it.fmuser.org -> Italià
ja.fmuser.org -> japonès
ko.fmuser.org -> coreà
lv.fmuser.org -> Letó
lt.fmuser.org -> Lituània
mk.fmuser.org -> macedoni
ms.fmuser.org -> Malai
mt.fmuser.org -> maltès
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> Polonès
pt.fmuser.org -> Portuguès
ro.fmuser.org -> Romanès
ru.fmuser.org -> rus
sr.fmuser.org -> serbi
sk.fmuser.org -> Eslovac
sl.fmuser.org -> Eslovènia
es.fmuser.org -> Castellà
sw.fmuser.org -> Suahili
sv.fmuser.org -> Suec
th.fmuser.org -> Tai
tr.fmuser.org -> turc
uk.fmuser.org -> ucraïnès
ur.fmuser.org -> urdú
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> gal·lès
yi.fmuser.org -> Yiddish
FMUSER Wirless Transmet vídeo i àudio més fàcil!
Contacte
Adreça:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Xina 510620
Categories
Newsletter