FMUSER Wireless Video- und Audioübertragung einfacher!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanisch
ar.fmuser.org -> Arabisch
hy.fmuser.org -> Armenisch
az.fmuser.org -> Aserbaidschanisch
eu.fmuser.org -> Baskisch
be.fmuser.org -> Weißrussisch
bg.fmuser.org -> Bulgarisch
ca.fmuser.org -> Katalanisch
zh-CN.fmuser.org -> Chinesisch (vereinfacht)
zh-TW.fmuser.org -> Chinesisch (traditionell)
hr.fmuser.org -> Kroatisch
cs.fmuser.org -> Tschechisch
da.fmuser.org -> Dänisch
nl.fmuser.org -> Niederländisch
et.fmuser.org -> Estnisch
tl.fmuser.org -> Philippinisch
fi.fmuser.org -> Finnisch
fr.fmuser.org -> Französisch
gl.fmuser.org -> Galizisch
ka.fmuser.org -> Georgisch
de.fmuser.org -> Deutsch
el.fmuser.org -> Griechisch
ht.fmuser.org -> Haitianisches Kreol
iw.fmuser.org -> Hebräisch
hi.fmuser.org -> Hindi
hu.fmuser.org -> Ungarisch
is.fmuser.org -> Isländisch
id.fmuser.org -> Indonesisch
ga.fmuser.org -> Irisch
it.fmuser.org -> Italienisch
ja.fmuser.org -> Japanisch
ko.fmuser.org -> Koreanisch
lv.fmuser.org -> Lettisch
lt.fmuser.org -> Litauisch
mk.fmuser.org -> Mazedonisch
ms.fmuser.org -> Malaiisch
mt.fmuser.org -> Malteser
no.fmuser.org -> Norwegisch
fa.fmuser.org -> Persisch
pl.fmuser.org -> Polnisch
pt.fmuser.org -> Portugiesisch
ro.fmuser.org -> Rumänisch
ru.fmuser.org -> Russisch
sr.fmuser.org -> Serbisch
sk.fmuser.org -> Slowakisch
sl.fmuser.org -> Slowenisch
es.fmuser.org -> Spanisch
sw.fmuser.org -> Suaheli
sv.fmuser.org -> Schwedisch
th.fmuser.org -> Thai
tr.fmuser.org -> Türkisch
uk.fmuser.org -> Ukrainisch
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamesisch
cy.fmuser.org -> Walisisch
yi.fmuser.org -> Jiddisch
Broadcasting wird in zwei verschiedene Typen unterteilt: "Normale Broadcasts" und "Bestellte Broadcasts". Normale Sendungen sind vollständig asynchron und können von allen Rundfunkempfängern gleichzeitig (logisch) empfangen werden. Die Effizienz der Nachrichtenübermittlung ist relativ hoch, aber der Nachteil ist, dass der Empfänger das Verarbeitungsergebnis nicht an den nächsten Empfänger weitergeben kann und es nicht beendet werden kann. Broadcast Intent Propagation; Die geordnete Sendung basiert jedoch auf der vom Empfänger deklarierten Priorität (deklariert im Attribut android: priority des Intent-Filter-Elements. Je größer die Zahl, desto höher die Priorität, der Wertebereich: -1000 bis 1000. Dies ist auch der Fall möglich Rufen Sie setPriority () des zu setzenden IntentFilter-Objekts auf, und der Empfänger empfängt die Sendung der Reihe nach. Wenn beispielsweise der Pegel von A höher als der von B ist und der Pegel von B höher als C ist, wird die Sendung zuerst an A, dann an B und schließlich an C übertragen. Nachdem A die Sendung erhalten hat, wird sie gesendet kann Daten in der Sendung speichern. Wenn die Sendung an B gesendet wird, kann B die von A gespeicherten Daten aus der Sendung abrufen.
Context.sendBroadcast ()
Was gesendet wird, ist eine normale Sendung, und alle Abonnenten haben die Möglichkeit, sie zu erhalten und zu verarbeiten.
Context.sendOrderedBroadcast ()
Das Senden ist eine ordnungsgemäße Sendung. Das System führt die Empfänger einzeln gemäß der vom Empfänger festgelegten Priorität aus. Der vorherige Empfänger hat das Recht, die Übertragung zu beenden (BroadcastReceiver.abortBroadcast ()). Wenn die Sendung vom vorherigen Empfänger beendet wird, kann der Empfänger die Sendung nicht mehr empfangen. Bei geordneter Übertragung kann der vorherige Empfänger das Verarbeitungsergebnis in der Übertragungsabsicht speichern und es dann an den nächsten Empfänger weiterleiten.
Der Broadcast-Empfänger (BroadcastReceiver) wird zum Empfangen von Broadcast-Absichten verwendet, und das Senden von Broadcast-Absichten wird durch Aufrufen von Context.sendBroadcast () und Context.sendOrderedBroadcast () realisiert. Normalerweise kann eine Broadcast-Absicht von mehreren Broadcast-Empfängern empfangen werden, die diese Absicht abonniert haben. Diese Funktion ähnelt Topic-Nachrichtenempfängern in JMS. Das Implementieren einer Rundfunkempfängermethode ist wie folgt:
Der erste Schritt: Definieren Sie den Broadcast-Empfänger, erben Sie BroadcastReceiver und schreiben Sie die onReceive () -Methode neu.
öffentliche Klasse IncomingSMSReceiver erweitertBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Schritt 2: Abonnieren der Sendung Bei Interesse gibt es zwei Abonnementmethoden:
Der erste Typ: Verwenden Sie Code zum Abonnieren (dynamisches Abonnement)
IntentFilter filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver Empfänger = newIncomingSMSReceiver ();
registerReceiver (Empfänger, Filter);
Der zweite Typ: Abonnieren in der Knoten in der Datei AndroidManifest.xml (statisches Abonnement)
Schauen wir uns den Unterschied zwischen einem dynamischen und einem statischen Broadcast-Abonnement an:
Statische Abonnementübertragung wird auch als residente Übertragung bezeichnet. Wenn Ihre Anwendung geschlossen ist und eine Broadcast-Nachricht vorliegt, kann der von Ihnen geschriebene Broadcast-Empfänger diese auch empfangen. Die Registrierungsmethode ist AndroidManifast in Ihrer Anwendung. .xml für Abonnement.
Dynamische Abonnement-Broadcasts werden auch als nicht residente Broadcasts bezeichnet. Wenn die Anwendung endet, verschwindet die Sendung natürlich. Beispielsweise abonnieren Sie die Sendung in onCreate oder onResume in der Aktivität und müssen das Broadcast-Abonnement in onDestory oder onPause kündigen. Andernfalls wird eine Ausnahme gemeldet, sodass Ihr Rundfunkempfänger nicht ansässig ist.
Es gibt hier ein weiteres Detail, nämlich die beiden Abonnementmethoden. Beim Senden von Broadcasts müssen Sie Folgendes beachten: Die Methode der impliziten Absicht wird für die dynamische Registrierung verwendet. Daher müssen Sie beim Senden von Broadcasts die implizite Absicht zum Senden verwenden. Andernfalls kann der Rundfunkempfänger die Sendung nicht empfangen. Achten Sie auf diesen Punkt. Beim statischen Abonnieren ist es jedoch möglich, beim Senden von Sendungen die Anzeige-Absicht und die implizite Absicht zu verwenden, da diese in AndroidMainfest.xml abonniert ist (dies gilt natürlich nur für von uns selbst definierte Rundfunkempfänger). Daher verwenden wir im Allgemeinen implizit Absicht, eine Sendung zu senden.
Schauen wir uns ein Beispiel an:
Schauen Sie sich die Projektstruktur an:
Schauen Sie sich die statische Abonnement-Sendung an:
Paket com.broadcast.demo;
android.app.Activity importieren;
android.content.Intent importieren;
android.os.Bundle importieren;
android.view.View importieren;
android.view.View.OnClickListener importieren;
android.widget.Button importieren;
import com.example.androidbroadcastdemo.R;
/ **
* Statische Abonnementübertragung
* @autor weijiang204321
*
*/
öffentliche Klasse StaticRegisterBroadcastActivity erweitert Activity {
@Überschreiben
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Button btn = (Button) findViewById (R.id.btn);
Zu
btn.setOnClickListener (neuer OnClickListener () {
@Überschreiben
public void onClick (View v) {
// Verwenden Sie eine statische Methode zum Registrieren der Sendung. Sie können die Anzeigeabsicht verwenden, um die Sendung zu senden
Absichtsübertragung = neue Absicht ("com.broadcast.set.broadcast");
sendBroadcast (Broadcast, null);
}
Zu
});
}
Zu
}
Abonnieren Sie in 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" />
<Anwendung
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<Aktivität
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Machen Sie sich vorerst keine Sorgen um die anderen Inhalte, wie wir später besprechen werden. Hier konzentrieren wir uns nur auf die Registrierung statischer Sendungen
Werfen wir einen Blick auf den Empfänger der Sendung:
Paket com.broadcast.receiver;
android.content.BroadcastReceiver importieren;
android.content.Context importieren;
android.content.Intent importieren;
android.util.Log importieren;
/ **
* Rundfunkempfänger
* @autor weijiang204321
*
*/
öffentliche Klasse UnSortBroadcastReceiver erweitert BroadcastReceiver {
@Überschreiben
public void onReceive (Kontextkontext, Absichtserklärung) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
Die Logik der onReceive-Methode im Broadcast-Empfänger ist sehr einfach: Der Inhalt der Aktion wird gedruckt.
Führen Sie das Programm aus, das Ergebnis ist sehr einfach, hier ist nicht das Bild.
Werfen wir einen Blick auf dynamische Abonnements:
Paket com.broadcast.demo;
android.app.Activity importieren;
android.content.Intent importieren;
android.content.IntentFilter importieren;
android.os.Bundle importieren;
android.view.View importieren;
android.view.View.OnClickListener importieren;
android.widget.Button importieren;
import com.broadcast.receiver.UnSortBroadcastReceiver;
import com.example.androidbroadcastdemo.R;
/ **
* Verwenden Sie eine dynamische Methode zum Registrieren von Sendungen
* @autor weijiang204321
*
*/
öffentliche Klasse DynamicRegisterBroadcastActivity erweitert Activity {
Zu
public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
geschützter UnSortBroadcastReceiver-Empfänger;
Zu
@Überschreiben
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Button btn0 = (Button) findViewById (R.id.btn);
btn0.setOnClickListener (neuer OnClickListener () {
public void onClick (View v) {
// Sendung senden
Intent it = new Intent (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@Überschreiben
protected void onResume () {
super.onResume ();
// Zur Ausstrahlung registrieren
IntentFilter counterActionFilter = neuer IntentFilter (NEW_LIFEFORM_DETECTED);
Empfänger = neuer UnSortBroadcastReceiver ();
registerReceiver (Empfänger, counterActionFilter);
}
@Überschreiben
protected void onPause () {
super.onPause ();
// Sendung abbrechen
unregisterReceiver (Empfänger);
}
}
Hier abonnieren wir die Übertragung in onResume und die Übertragung in onPause.
Ändern Sie die gestartete Aktivität in DynamicRegisterBroadcastActivity in AndroidMainfest.xml. Der andere Inhalt muss nicht geändert werden. Führen Sie das Programm aus und drucken Sie das Ergebnis ist sehr einfach, so dass ich das Bild hier nicht sehen werde.
Werfen wir einen Blick auf geordnete und ungeordnete Sendungen
Wir haben dies bereits zu Beginn erwähnt. Schauen wir uns den ungeordneten Rundfunk an:
Zuerst definieren wir zwei Rundfunkempfänger:
Der erste Rundfunkempfänger:
Paket com.broadcast.receiver;
android.content.BroadcastReceiver importieren;
android.content.Context importieren;
android.content.Intent importieren;
android.util.Log importieren;
/ **
* Rundfunkempfänger A.
* @autor weijiang204321
*
*/
öffentliche Klasse SortBroadcastReceiverA erweitert BroadcastReceiver {
@Überschreiben
public void onReceive (Kontextkontext, Absichtserklärung) {
Log.e ("Demo:", "Rundfunkempfänger A");
}
}
Der zweite Rundfunkempfänger:
Paket com.broadcast.receiver;
android.content.BroadcastReceiver importieren;
android.content.Context importieren;
android.content.Intent importieren;
android.util.Log importieren;
/ **
* Rundfunkempfänger B.
* @autor weijiang204321
*
*/
öffentliche Klasse SortBroadcastReceiverB erweitert BroadcastReceiver {
@Überschreiben
public void onReceive (Kontextkontext, Absichtserklärung) {
Log.e ("Demo:", "Broadcast B");
}
Zu
Zu
}
Abonnieren Sie die Sendung in AndroidMainfest.xml
Betriebsergebnis:
Das laufende Ergebnis ist etwas seltsam. Warum ist Empfänger B vorne und Empfänger A hinten? Der Grund dafür ist, dass wir beim Abonnieren der Sendung in AndroidMainfest.xml den Attributwert android: priority im Intent-Filter festlegen. Je größer der Wert, desto höher die Priorität. Die Priorität von Empfänger B ist 1000, die Priorität von Empfänger A ist 999, also empfängt B zuerst die Sendung und dann A, aber es besteht keine Verbindung zwischen Empfänger B und Empfänger A, und es kann keine Interaktion geben. Ja, Da es sich um eine nicht ordnungsgemäße und asynchrone Übertragung handelt, können wir ein Experiment durchführen, indem wir der onReceiver-Methode in B Code hinzufügen:
abortBroadcast (); // Beendet die Übertragung dieser Sendung
Betriebsergebnis:
Wir können den Eingabeaufforderungsfehler sehen, dh, eine nicht geordnete Sendung darf die Sendung nicht beenden. Tatsächlich ist die Beendigung nutzlos, da Empfänger A die Sendung weiterhin empfängt.
Werfen wir einen Blick auf die ordnungsgemäße Ausstrahlung. Der Code muss geändert werden:
Das erste ist beim Senden einer Sendung:
Absichtsübertragung = neue Absicht ("com.broadcast.set.broadcast");
sendOrderedBroadcast (Broadcast, null);
Fügen Sie dann eine Methode hinzu, um die Übertragung im B-Empfänger zu beenden:
abortBroadcast ();
Der andere Code muss nicht geändert werden, das Operationsergebnis:
Es gibt nur Empfänger B, Empfänger A empfängt die Sendung nicht, da die Sendung in Empfänger B beendet ist und die nachfolgenden Empfänger sie nicht akzeptieren können.
Ändern Sie den folgenden Code:
Empfänger B:
Paket com.broadcast.receiver;
android.content.BroadcastReceiver importieren;
android.content.Context importieren;
android.content.Intent importieren;
android.os.Bundle importieren;
android.util.Log importieren;
/ **
* Rundfunkempfänger B.
* @autor weijiang204321
*
*/
öffentliche Klasse SortBroadcastReceiverB erweitert BroadcastReceiver {
@Überschreiben
public void onReceive (Kontextkontext, Absichtserklärung) {
Log.e ("Demo:", "Rundfunkempfänger B");
Bundle Bundle = neues Bundle ();
bundle.putString ("next_receiver", "nächster Rundfunkempfänger");
setResultExtras (Bundle);
}
Zu
}
Nachdem B die Sendung empfangen hat, speichert es einen Wert und leitet ihn an den nächsten Empfänger weiter.
Code von Empfänger A:
Paket com.broadcast.receive
Unsere anderen Produkt:
Professionelles UKW-Radiosender-Ausrüstungspaket
|
||
|
Geben Sie eine E-Mail-Adresse ein, um eine Überraschung zu erhalten
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanisch
ar.fmuser.org -> Arabisch
hy.fmuser.org -> Armenisch
az.fmuser.org -> Aserbaidschanisch
eu.fmuser.org -> Baskisch
be.fmuser.org -> Weißrussisch
bg.fmuser.org -> Bulgarisch
ca.fmuser.org -> Katalanisch
zh-CN.fmuser.org -> Chinesisch (vereinfacht)
zh-TW.fmuser.org -> Chinesisch (traditionell)
hr.fmuser.org -> Kroatisch
cs.fmuser.org -> Tschechisch
da.fmuser.org -> Dänisch
nl.fmuser.org -> Niederländisch
et.fmuser.org -> Estnisch
tl.fmuser.org -> Philippinisch
fi.fmuser.org -> Finnisch
fr.fmuser.org -> Französisch
gl.fmuser.org -> Galizisch
ka.fmuser.org -> Georgisch
de.fmuser.org -> Deutsch
el.fmuser.org -> Griechisch
ht.fmuser.org -> Haitianisches Kreol
iw.fmuser.org -> Hebräisch
hi.fmuser.org -> Hindi
hu.fmuser.org -> Ungarisch
is.fmuser.org -> Isländisch
id.fmuser.org -> Indonesisch
ga.fmuser.org -> Irisch
it.fmuser.org -> Italienisch
ja.fmuser.org -> Japanisch
ko.fmuser.org -> Koreanisch
lv.fmuser.org -> Lettisch
lt.fmuser.org -> Litauisch
mk.fmuser.org -> Mazedonisch
ms.fmuser.org -> Malaiisch
mt.fmuser.org -> Malteser
no.fmuser.org -> Norwegisch
fa.fmuser.org -> Persisch
pl.fmuser.org -> Polnisch
pt.fmuser.org -> Portugiesisch
ro.fmuser.org -> Rumänisch
ru.fmuser.org -> Russisch
sr.fmuser.org -> Serbisch
sk.fmuser.org -> Slowakisch
sl.fmuser.org -> Slowenisch
es.fmuser.org -> Spanisch
sw.fmuser.org -> Suaheli
sv.fmuser.org -> Schwedisch
th.fmuser.org -> Thai
tr.fmuser.org -> Türkisch
uk.fmuser.org -> Ukrainisch
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamesisch
cy.fmuser.org -> Walisisch
yi.fmuser.org -> Jiddisch
FMUSER Wireless Video- und Audioübertragung einfacher!
Kontakt
Adresse
Nr.305 Zimmer HuiLan Gebäude Nr.273 Huanpu Road Guangzhou China 510620
Kategorien
Newsletter