FMUSER Wirless Transmit Video and Audio Máis 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 -> árabe
hy.fmuser.org -> Armenian
az.fmuser.org -> azerí
eu.fmuser.org -> éuscaro
be.fmuser.org -> bielorruso
bg.fmuser.org -> Búlgaro
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chinés (simplificado)
zh-TW.fmuser.org -> Chinés (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> Checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finés
fr.fmuser.org -> Francés
gl.fmuser.org -> galego
ka.fmuser.org -> xeorxiano
de.fmuser.org -> alemán
el.fmuser.org -> Grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> Hebreo
hi.fmuser.org -> hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandés
id.fmuser.org -> indonesio
ga.fmuser.org -> irlandés
it.fmuser.org -> Italiano
ja.fmuser.org -> xaponés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedonio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltés
no.fmuser.org -> Norwegian
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> Portugués
ro.fmuser.org -> Romanés
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> Esloveno
es.fmuser.org -> castelán
sw.fmuser.org -> Suahili
sv.fmuser.org -> Sueco
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> ucraíno
ur.fmuser.org -> urdú
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
A emisión divídese en dous tipos diferentes: "Emisións normais" e "Emisións ordenadas". A transmisión ordinaria é completamente asíncrona e pode ser recibida por todos os receptores de transmisión ao mesmo tempo (loxicamente). A eficiencia da entrega de mensaxes é relativamente alta, pero a desvantaxe é que o receptor non pode pasar o resultado do procesamento ao seguinte receptor e non pode rematar. Propagación de intención de transmisión; con todo, a emisión ordenada baséase na prioridade declarada polo receptor (declarada no androide: atributo de prioridade do elemento de filtro de intención, canto maior sexa o número, maior será a prioridade, o rango de valores: -1000 a 1000. Tamén é posible Chama ao setPriority () do obxecto IntentFilter para establecer) e o destinatario recibe a transmisión á súa vez. Por exemplo, se o nivel de A é superior ao de B e o nivel de B é superior a C, entón a transmisión transmítese primeiro a A, logo a B e finalmente a C. Despois de que A reciba a emisión, pode almacenar datos na transmisión. Cando a transmisión se envía a B, B pode obter os datos almacenados por A da transmisión.
Context.sendBroadcast ()
O que se envía é unha emisión ordinaria e todos os subscritores teñen a oportunidade de obtela e procesala.
Context.sendOrderedBroadcast ()
O envío é unha emisión ordenada. O sistema executará os receptores un a un segundo a prioridade declarada polo receptor. O receptor anterior ten dereito a finalizar a transmisión (BroadcastReceiver.abortBroadcast ()). Se o receptor finaliza a transmisión, este último xa non pode recibir a transmisión. Para a emisión ordenada, o receptor anterior pode almacenar o resultado do procesamento na intención de transmisión e despois pasalo ao seguinte receptor.
O receptor de transmisión (BroadcastReceiver) úsase para recibir Intent de transmisión e o envío de Intent de difusión realízase chamando a Context.sendBroadcast () e Context.sendOrderedBroadcast (). Normalmente unha intención de transmisión pode ser recibida por varios receptores de transmisión subscritos a esta intención. Esta característica é similar aos receptores de mensaxes de tema en JMS. Para implementar un método de receptor de transmisión é o seguinte:
O primeiro paso: definir o receptor de transmisión, herdar BroadcastReceiver e reescribir o método onReceive ().
clase pública IncomingSMSReceiver extendsBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Paso 2: subscríbete á transmisión Intención de interese, hai dous métodos de subscrición:
O primeiro tipo: usar código para subscribirse (subscrición dinámica)
Filtro IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver receiver = newIncomingSMSReceiver ();
registerReceiver (receptor, filtro);
O segundo tipo: subscríbete no nodo no ficheiro AndroidManifest.xml (subscrición estática)
Vexamos a diferenza entre a subscrición de transmisión dinámica e a subscrición de transmisión estática:
A transmisión estática de subscrición tamén se chama: emisión residente. Cando se pecha a aplicación, se hai unha mensaxe de difusión, tamén o pode recibir o receptor de transmisión que escribiu. O seu método de rexistro é AndroidManifast na túa aplicación. .xml para a subscrición.
A transmisión dinámica de subscrición tamén se chama: transmisión non residente. Cando finalice a aplicación, a transmisión desaparecerá naturalmente. Por exemplo, estás subscrito á emisión en onCreate ou enResume na actividade e debes cancelar a subscrición de transmisión en onDestory ou onPause. En caso contrario, informarase dunha excepción, polo que o receptor de transmisión será un non residente.
Aquí hai un detalle máis que son os dous métodos de subscrición. Ao enviar emisións, debes prestar atención a: O método de intención implícita úsase para o rexistro dinámico, polo que debes usar a intención implícita para enviar cando envíes emisións. Se non, o receptor de transmisión non poderá recibir a transmisión. Preste atención a este punto. Pero cando se subscribe estáticamente, porque está subscrito en AndroidMainfest.xml, é posible usar Intent de visualización e Intent implícito cando se envían transmisións (por suposto, só para receptores de transmisión definidos por nós mesmos), polo que por se acaso, usamos implícito Intención de enviar a transmisión.
Vexamos un exemplo:
Bota unha ollada á estrutura do proxecto:
Bota unha ollada á transmisión estática de subscrición:
paquete com.broadcast.demo;
importar android.app.Activity;
importar android.content.Intent;
importar android.os.Bundle;
importar android.view.View;
importar android.view.View.OnClickListener;
importar android.widget.Button;
importar com.exemplo.androidbroadcastdemo.R;
/ **
* Emisión de subscrición estática
* @autor weijiang204321
*
*/
clase pública StaticRegisterBroadcastActivity estende Actividade {
@Anular
void protexido onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Botón btn = (Botón) findViewById (R.id.btn);
Para
btn.setOnClickListener (novo OnClickListener () {
@Anular
public void onClick (Ver v) {
// Utilice un xeito estático para rexistrar a transmisión; pode utilizar a intención de visualización para enviar a transmisión
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendBroadcast (emisión, nula);
}
Para
});
}
Para
}
Rexístrate en 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ón
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<actividade
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Non te preocupes polo outro contido por agora, como falaremos máis adiante, aquí só nos centramos no rexistro de emisións estáticas
Vexamos o receptor da emisión:
paquete com.broadcast.receiver;
importar android.content.BroadcastReceiver;
importar android.content.Context;
importar android.content.Intent;
importar android.util.Log;
/ **
* Receptor de transmisión
* @autor weijiang204321
*
*/
clase pública UnSortBroadcastReceiver estende BroadcastReceiver {
@Anular
baleiro público enRecibir (contexto de contexto, intención de intención) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
A lóxica do método onReceive no receptor de transmisión é moi sinxela, que consiste en imprimir o contido da acción.
Executa o programa, o resultado é moi sinxelo, aquí non está a foto.
Vexamos as subscricións dinámicas:
paquete com.broadcast.demo;
importar android.app.Activity;
importar android.content.Intent;
importar android.content.IntentFilter;
importar android.os.Bundle;
importar android.view.View;
importar android.view.View.OnClickListener;
importar android.widget.Button;
importar com.broadcast.receiver.UnSortBroadcastReceiver;
importar com.exemplo.androidbroadcastdemo.R;
/ **
* Utiliza un xeito dinámico para rexistrar a transmisión
* @autor weijiang204321
*
*/
clase pública DynamicRegisterBroadcastActivity estende Actividade {
Para
cadea final estática pública NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
receptor UnSortBroadcastReceiver protexido;
Para
@Anular
void protexido onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Botón btn0 = (Botón) findViewById (R.id.btn);
btn0.setOnClickListener (novo OnClickListener () {
public void onClick (Ver v) {
// Enviar transmisión
Intent it = novo Intent (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@Anular
baleiro protexido enResume () {
super.onResume ();
// Rexistrarse para a emisión
IntentFilter counterActionFilter = novo IntentFilter (NEW_LIFEFORM_DETECTED);
receptor = new UnSortBroadcastReceiver ();
registerReceiver (receptor, counterActionFilter);
}
@Anular
baleiro protexido onPause () {
super.onPause ();
// Cancelar emisión
unregisterReceiver (receptor);
}
}
Aquí estamos subscritos á emisión en onResume e cancelando a subscrición á emisión en onPause.
Cambia a actividade lanzada a DynamicRegisterBroadcastActivity en AndroidMainfest.xml. Non é necesario modificar o outro contido. Executa o programa e imprime o resultado é moi sinxelo, así que non vou ver a foto aquí.
Vexamos a emisión ordenada e a non ordenada
Xa o mencionamos ao principio, botemos unha ollada á transmisión desordenada:
Primeiro definimos dous receptores de transmisión:
O primeiro receptor de transmisión:
paquete com.broadcast.receiver;
importar android.content.BroadcastReceiver;
importar android.content.Context;
importar android.content.Intent;
importar android.util.Log;
/ **
* Receptor de transmisión A
* @autor weijiang204321
*
*/
clase pública SortBroadcastReceiverA amplía BroadcastReceiver {
@Anular
baleiro público enRecibir (contexto de contexto, intención de intención) {
Log.e ("Demo:", "receptor de transmisión A");
}
}
O segundo receptor de transmisión:
paquete com.broadcast.receiver;
importar android.content.BroadcastReceiver;
importar android.content.Context;
importar android.content.Intent;
importar android.util.Log;
/ **
* Receptor de transmisión B
* @autor weijiang204321
*
*/
clase pública SortBroadcastReceiverB amplía BroadcastReceiver {
@Anular
baleiro público enRecibir (contexto de contexto, intención de intención) {
Log.e ("Demostración:", "Emisión B");
}
Para
Para
}
Subscríbete para emitir en AndroidMainfest.xml
resultado da operación:
O resultado executado é un pouco raro. Por que está o receptor B na parte dianteira e o receptor A na parte traseira? A razón é que cando nos subscribimos á transmisión en AndroidMainfest.xml, configuramos o valor do atributo android: priority no filtro de intencións. Canto maior sexa o valor, maior será a prioridade. , A prioridade do receptor B é 1000, a prioridade do receptor A é 999, polo que B recibe primeiro a emisión e logo A recibe, pero non hai conexión entre o receptor B e o receptor A e non pode haber interacción. Si, porque esta é unha transmisión fóra de orde e asíncrona, podemos facer un experimento engadindo código ao método onReceiver en B:
abortBroadcast (); // Finaliza a transmisión desta transmisión
resultado da operación:
Podemos ver o erro inmediato, é dicir, non se permite que a emisión sen orde finalice a emisión. De feito, a terminación non serve para nada porque o receptor A aínda recibe a transmisión.
Vexamos a emisión ordenada, cómpre modificar o código:
O primeiro é cando se envía unha transmisión:
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendOrderedBroadcast (emisión, nula);
A continuación, engada un método para finalizar a transmisión no receptor B:
abortBroadcast ();
Non é necesario modificar o outro código, o resultado da operación:
Só hai receptor B, o receptor A non recibe a transmisión, porque a transmisión remata no receptor B e os receptores posteriores non poden aceptala.
Modifique o código seguinte:
Destinatario B:
paquete com.broadcast.receiver;
importar android.content.BroadcastReceiver;
importar android.content.Context;
importar android.content.Intent;
importar android.os.Bundle;
importar android.util.Log;
/ **
* Receptor de transmisión B
* @autor weijiang204321
*
*/
clase pública SortBroadcastReceiverB amplía BroadcastReceiver {
@Anular
baleiro público enRecibir (contexto de contexto, intención de intención) {
Log.e ("Demo:", "receptor de transmisión B");
Bundle bundle = novo Bundle ();
bundle.putString ("seguinte_receptor", "seguinte receptor de transmisión");
setResultExtras (paquete);
}
Para
}
Despois de que B reciba a transmisión, almacena algo de valor e pásao ao seguinte receptor.
Código do receptor A:
paquete com.broadcast.receive
Noso outro produto:
Paquete de equipos de estación de radio FM profesional
|
||
|
Introduce o correo electrónico para obter unha 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 -> árabe
hy.fmuser.org -> Armenian
az.fmuser.org -> azerí
eu.fmuser.org -> éuscaro
be.fmuser.org -> bielorruso
bg.fmuser.org -> Búlgaro
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chinés (simplificado)
zh-TW.fmuser.org -> Chinés (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> Checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estoniano
tl.fmuser.org -> filipino
fi.fmuser.org -> finés
fr.fmuser.org -> Francés
gl.fmuser.org -> galego
ka.fmuser.org -> xeorxiano
de.fmuser.org -> alemán
el.fmuser.org -> Grego
ht.fmuser.org -> crioulo haitiano
iw.fmuser.org -> Hebreo
hi.fmuser.org -> hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandés
id.fmuser.org -> indonesio
ga.fmuser.org -> irlandés
it.fmuser.org -> Italiano
ja.fmuser.org -> xaponés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituano
mk.fmuser.org -> macedonio
ms.fmuser.org -> malaio
mt.fmuser.org -> maltés
no.fmuser.org -> Norwegian
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> Portugués
ro.fmuser.org -> Romanés
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> Eslovaco
sl.fmuser.org -> Esloveno
es.fmuser.org -> castelán
sw.fmuser.org -> Suahili
sv.fmuser.org -> Sueco
th.fmuser.org -> Thai
tr.fmuser.org -> turco
uk.fmuser.org -> ucraíno
ur.fmuser.org -> urdú
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
FMUSER Wirless Transmit Video and Audio Máis fácil!
contacto
dirección:
No.305 Sala HuiLan Building No.273 Huanpu Road Guangzhou China 510620
categorías
boletín informativo