FMUSER ¡Transmite video y audio sin cables más fácilmente!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikáans
sq.fmuser.org -> albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenio
az.fmuser.org -> azerbaiyano
eu.fmuser.org -> Vasco
be.fmuser.org -> bielorruso
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chino (simplificado)
zh-TW.fmuser.org -> Chino (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estonio
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandés
fr.fmuser.org -> Francés
gl.fmuser.org -> gallego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemán
el.fmuser.org -> Griego
ht.fmuser.org -> criollo 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 -> japonés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituania
mk.fmuser.org -> macedonio
ms.fmuser.org -> malayo
mt.fmuser.org -> maltés
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> portugués
ro.fmuser.org -> Rumano
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> eslovaco
sl.fmuser.org -> Eslovenia
es.fmuser.org -> español
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandés
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
La retransmisión se divide en dos tipos diferentes: "retransmisiones normales" y "retransmisiones ordenadas". La transmisión ordinaria es completamente asíncrona y puede ser recibida por todos los receptores de transmisión al mismo tiempo (lógicamente). La eficiencia de la entrega de mensajes es relativamente alta, pero la desventaja es que el receptor no puede pasar el resultado del procesamiento al siguiente receptor y no se puede terminar. Propagación de intención de difusión; sin embargo, la transmisión ordenada se basa en la prioridad declarada por el receptor (declarada en el atributo android: priority del elemento de filtro de intención, cuanto mayor es el número, mayor es la prioridad, el rango de valores: -1000 a 1000. También es posible Llame a setPriority () del objeto IntentFilter para establecer), y el destinatario recibe la transmisión a su vez. Por ejemplo, si el nivel de A es más alto que el de B, y el nivel de B es más alto que C, entonces la transmisión se transmite primero a A, luego a B y finalmente a C.Después de que A recibe la transmisión, puede almacenar datos en la transmisión. Cuando la transmisión se envía a B, B puede obtener los datos almacenados por A de la transmisión.
Context.sendBroadcast ()
Lo que se envía es una transmisión ordinaria y todos los suscriptores tienen la oportunidad de obtenerla y procesarla.
Context.sendOrderedBroadcast ()
El envío es una transmisión ordenada. El sistema ejecutará los receptores uno a uno según la prioridad declarada por el receptor. El receptor anterior tiene derecho a finalizar la transmisión (BroadcastReceiver.abortBroadcast ()). Si la transmisión es interrumpida por el receptor anterior, este último El receptor ya no puede recibir la transmisión. Para la transmisión ordenada, el receptor anterior puede almacenar el resultado del procesamiento en la intención de transmisión y luego pasarlo al siguiente receptor.
El receptor de transmisión (BroadcastReceiver) se utiliza para recibir la intención de transmisión, y el envío de la intención de transmisión se realiza llamando a Context.sendBroadcast () y Context.sendOrderedBroadcast (). Por lo general, varios receptores de transmisión suscritos a este Intent pueden recibir un Intent de transmisión. Esta función es similar a los receptores de mensajes de tema en JMS. Implementar un método de receptor de difusión es el siguiente:
El primer paso: definir el receptor de transmisión, heredar BroadcastReceiver y reescribir el método onReceive ().
public class IncomingSMSReceiver extensionsBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Paso 2: Suscríbete a la transmisión Intención de interés, existen dos métodos de suscripción:
El primer tipo: use código para suscribirse (suscripción dinámica)
IntentFilter filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
Receptor IncomingSMSReceiver = newIncomingSMSReceiver ();
registerReceiver (receptor, filtro);
El segundo tipo: Suscríbete en el nodo en el archivo AndroidManifest.xml (suscripción estática)
Echemos un vistazo a la diferencia entre la suscripción de transmisión dinámica y la suscripción de transmisión estática:
La transmisión por suscripción estática también se denomina: transmisión residente. Cuando se cierra su aplicación, si hay un mensaje de transmisión, el receptor de transmisión que escribió también puede recibirlo. Su método de registro es AndroidManifast en su aplicación. .xml para suscripción.
La difusión por suscripción dinámica también se denomina difusión no residente. Cuando finalice la aplicación, la transmisión desaparecerá de forma natural. Por ejemplo, te suscribes a la transmisión en onCreate o onResume en la actividad, y debes cancelar la suscripción a la transmisión en onDestory o onPause. De lo contrario, se informará una excepción, por lo que su receptor de transmisión será un no residente.
Hay un detalle más aquí que son los dos métodos de suscripción. Al enviar transmisiones, debe prestar atención a: El método de intención implícita se usa para el registro dinámico, por lo que debe usar la intención implícita para enviar al enviar transmisiones. , De lo contrario, el receptor de transmisión no podrá recibir la transmisión. Preste atención a este punto. Pero cuando se suscribe estáticamente, debido a que está suscrito en AndroidMainfest.xml, es posible usar Display Intent e Intent implícito al enviar transmisiones (por supuesto, esto es solo para receptores de transmisión definidos por nosotros mismos), por lo que, por si acaso, generalmente usamos implícito Intento enviar transmisión.
Veamos un ejemplo:
Eche un vistazo a la estructura del proyecto:
Eche un vistazo a la transmisión de suscripción estática:
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.ejemplo.androidbroadcastdemo.R;
/ **
* Transmisión de suscripción estática
* @ autor weijiang204321
*
*/
La clase pública StaticRegisterBroadcastActivity extiende la actividad {
@Anular
protected void onCreate (Bundle SavedInstanceState) {
super.onCreate (SavedInstanceState);
setContentView (R.layout.activity_main);
Botón btn = (Botón) findViewById (R.id.btn);
A
btn.setOnClickListener (nuevo OnClickListener () {
@Anular
public void onClick (Ver v) {
// Use una forma estática para registrar la transmisión, puede usar la intención de visualización para enviar la transmisión
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendBroadcast (difusión, nulo);
}
A
});
}
A
}
Suscríbase en AndroidMainfest.xml:
<manifiesto xmlns:android="http://schemas.android.com/apk/res/android"
paquete = "com.example.androidbroadcastdemo"
android: versionCode = "1"
android: versionName = "1.0">
<usos-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">
<actividad
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
No te preocupes por el resto de contenidos por ahora, como hablaremos más adelante, aquí solo nos centramos en el registro de retransmisiones estáticas
Echemos un vistazo al receptor de la transmisión:
paquete com.broadcast.receiver;
importar android.content.BroadcastReceiver;
importar android.content.Context;
importar android.content.Intent;
importar android.util.Log;
/ **
* Receptor de radiodifusión
* @ autor weijiang204321
*
*/
UnSortBroadcastReceiver de clase pública extiende BroadcastReceiver {
@Anular
public void onReceive (Contexto de contexto, Intención de intención) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
La lógica del método onReceive en el receptor de transmisión es muy simple, que consiste en imprimir el contenido de la Acción.
Ejecute el programa, el resultado es muy simple, aquí no está la imagen.
Echemos un vistazo a las suscripciones 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.ejemplo.androidbroadcastdemo.R;
/ **
* Utilice una forma dinámica de registrar la transmisión
* @ autor weijiang204321
*
*/
La clase pública DynamicRegisterBroadcastActivity extiende la actividad {
A
Cadena final estática pública NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
receptor UnSortBroadcastReceiver protegido;
A
@Anular
protected void onCreate (Bundle SavedInstanceState) {
super.onCreate (SavedInstanceState);
setContentView (R.layout.activity_main);
Botón btn0 = (Botón) findViewById (R.id.btn);
btn0.setOnClickListener (nuevo OnClickListener () {
public void onClick (Ver v) {
// Enviar transmisión
Intención = nueva intención (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@Anular
protected void onResume () {
super.onResume ();
// Registrarse para la transmisión
IntentFilter counterActionFilter = new IntentFilter (NEW_LIFEFORM_DETECTED);
receptor = nuevo UnSortBroadcastReceiver ();
registerReceiver (receptor, counterActionFilter);
}
@Anular
protected void onPause () {
super.onPause ();
// Cancelar transmisión
unregisterReceiver (receptor);
}
}
Aquí nos estamos suscribiendo a la transmisión en onResume y cancelando la suscripción a la transmisión en onPause.
Cambie la actividad iniciada a DynamicRegisterBroadcastActivity en AndroidMainfest.xml. No es necesario modificar el resto del contenido. Ejecutar el programa e imprimir el resultado es muy simple, por lo que no veré la imagen aquí.
Echemos un vistazo a la transmisión ordenada y la transmisión no ordenada.
Ya lo hemos mencionado al principio, echemos un vistazo a la transmisión desordenada:
Primero definimos dos receptores de transmisión:
El primer 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
*
*/
La clase pública SortBroadcastReceiverA extiende BroadcastReceiver {
@Anular
public void onReceive (Contexto de contexto, Intención de intención) {
Log.e ("Demo:", "receptor de transmisión A");
}
}
El 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 radiodifusión B
* @ autor weijiang204321
*
*/
La clase pública SortBroadcastReceiverB extiende BroadcastReceiver {
@Anular
public void onReceive (Contexto de contexto, Intención de intención) {
Log.e ("Demo:", "Transmisión B");
}
A
A
}
Suscríbete para transmitir en AndroidMainfest.xml
resultado de la operación:
El resultado de la ejecución es un poco extraño. ¿Por qué el receptor B está en la parte delantera y el receptor A en la parte trasera? La razón es que cuando nos suscribimos a la transmisión en AndroidMainfest.xml, establecemos el valor del atributo android: priority en el filtro de intención. Cuanto mayor sea el valor, mayor será la prioridad. , La prioridad del receptor B es 1000, la prioridad del receptor A es 999, por lo que B recibe la transmisión primero y luego A la recibe, pero no hay conexión entre el receptor B y el receptor A, y no puede haber interacción Sí, Debido a que esta es una transmisión fuera de orden y asincrónica, podemos hacer un experimento agregando código al método onReceiver en B:
abortBroadcast (); // Termina la transmisión de esta transmisión
resultado de la operación:
Podemos ver el error de aviso, es decir, la transmisión no ordenada no puede terminar la transmisión. De hecho, la terminación es inútil, porque el receptor A todavía recibe la transmisión.
Echemos un vistazo a la transmisión ordenada, el código debe modificarse:
El primero es al enviar una transmisión:
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendOrderedBroadcast (difusión, nulo);
Luego agregue un método para terminar la transmisión en el receptor B:
abortBroadcast ();
El otro código no necesita ser modificado, el resultado de la operación:
Solo existe el receptor B, el receptor A no recibe la transmisión, porque la transmisión termina en el receptor B y los receptores posteriores no pueden aceptarla.
Modifica el siguiente código:
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 radiodifusión B
* @ autor weijiang204321
*
*/
La clase pública SortBroadcastReceiverB extiende BroadcastReceiver {
@Anular
public void onReceive (Contexto de contexto, Intención de intención) {
Log.e ("Demo:", "receptor de transmisión B");
Bundle bundle = nuevo Bundle ();
bundle.putString ("next_receiver", "próximo receptor de transmisión");
setResultExtras (paquete);
}
A
}
Después de que B recibe la transmisión, almacena algún valor y lo pasa al siguiente receptor.
Código del receptor A:
paquete com.broadcast.receive
Nuestro otro producto:
Paquete de equipo de estación de radio FM profesional
|
||
|
Ingrese el correo electrónico para recibir una sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikáans
sq.fmuser.org -> albanés
ar.fmuser.org -> árabe
hy.fmuser.org -> Armenio
az.fmuser.org -> azerbaiyano
eu.fmuser.org -> Vasco
be.fmuser.org -> bielorruso
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> catalán
zh-CN.fmuser.org -> chino (simplificado)
zh-TW.fmuser.org -> Chino (tradicional)
hr.fmuser.org -> croata
cs.fmuser.org -> checo
da.fmuser.org -> danés
nl.fmuser.org -> Holandés
et.fmuser.org -> estonio
tl.fmuser.org -> filipino
fi.fmuser.org -> finlandés
fr.fmuser.org -> Francés
gl.fmuser.org -> gallego
ka.fmuser.org -> georgiano
de.fmuser.org -> alemán
el.fmuser.org -> Griego
ht.fmuser.org -> criollo 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 -> japonés
ko.fmuser.org -> coreano
lv.fmuser.org -> letón
lt.fmuser.org -> Lituania
mk.fmuser.org -> macedonio
ms.fmuser.org -> malayo
mt.fmuser.org -> maltés
no.fmuser.org -> Noruega
fa.fmuser.org -> persa
pl.fmuser.org -> polaco
pt.fmuser.org -> portugués
ro.fmuser.org -> Rumano
ru.fmuser.org -> ruso
sr.fmuser.org -> serbio
sk.fmuser.org -> eslovaco
sl.fmuser.org -> Eslovenia
es.fmuser.org -> español
sw.fmuser.org -> Swahili
sv.fmuser.org -> sueco
th.fmuser.org -> Tailandés
tr.fmuser.org -> turco
uk.fmuser.org -> ucraniano
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamita
cy.fmuser.org -> galés
yi.fmuser.org -> Yiddish
FMUSER ¡Transmite video y audio sin cables más fácilmente!
Contacto
Dirección:
Habitación No.305 Edificio HuiLan No.273 Huanpu Road Guangzhou China 510620
Categorías
Newsletter