FMUSER Bezdrátový přenos videa a zvuku snadnější!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánština
sq.fmuser.org -> albánština
ar.fmuser.org -> arabština
hy.fmuser.org -> Arménský
az.fmuser.org -> Ázerbájdžánština
eu.fmuser.org -> baskičtina
be.fmuser.org -> běloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalánština
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> Čínsky (zjednodušeně)
hr.fmuser.org -> chorvatština
cs.fmuser.org -> čeština
da.fmuser.org -> dánština
nl.fmuser.org -> Dutch
et.fmuser.org -> estonština
tl.fmuser.org -> filipínský
fi.fmuser.org -> finština
fr.fmuser.org -> French
gl.fmuser.org -> galicijština
ka.fmuser.org -> gruzínština
de.fmuser.org -> němčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolština
iw.fmuser.org -> hebrejština
hi.fmuser.org -> hindština
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandština
id.fmuser.org -> Indonéština
ga.fmuser.org -> Irština
it.fmuser.org -> Italian
ja.fmuser.org -> japonština
ko.fmuser.org -> korejština
lv.fmuser.org -> lotyština
lt.fmuser.org -> Litevština
mk.fmuser.org -> makedonština
ms.fmuser.org -> Malajština
mt.fmuser.org -> maltština
no.fmuser.org -> Norwegian
fa.fmuser.org -> perština
pl.fmuser.org -> polština
pt.fmuser.org -> portugalština
ro.fmuser.org -> Rumunština
ru.fmuser.org -> ruština
sr.fmuser.org -> srbština
sk.fmuser.org -> slovenština
sl.fmuser.org -> Slovinština
es.fmuser.org -> španělština
sw.fmuser.org -> svahilština
sv.fmuser.org -> švédština
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinština
ur.fmuser.org -> urdština
vi.fmuser.org -> Vietnamská
cy.fmuser.org -> velština
yi.fmuser.org -> Jidiš
Vysílání je rozděleno do dvou různých typů: „Normální vysílání“ a „Objednané vysílání“. Obyčejné vysílání je zcela asynchronní a může být přijímáno všemi rozhlasovými přijímači současně (logicky). Účinnost doručování zpráv je relativně vysoká, ale nevýhodou je, že příjemce nemůže předat výsledek zpracování dalšímu příjemci a nelze jej ukončit. Šíření záměru vysílání; objednané vysílání je však založeno na prioritě deklarované přijímačem (deklarováno v atributu android: priority prvku filtru záměru, čím větší je číslo, tím vyšší je priorita, rozsah hodnot: -1000 až 1000. Je také možné Zavolejte setPriority () objektu IntentFilter, který chcete nastavit) a příjemce postupně obdrží vysílání. Například pokud je úroveň A vyšší než úroveň B a úroveň B je vyšší než C, pak se vysílání nejprve vysílá do A, poté do B a nakonec do C. Poté, co A dostane vysílání, může ukládat data do vysílání. Když je vysílání odesláno do B, může B z vysílání dostat data uložená A.
Context.sendBroadcast ()
Odesílá se běžné vysílání a všichni předplatitelé mají možnost jej získat a zpracovat.
Context.sendOrderedBroadcast ()
Odesílání je řádné vysílání. Systém provede přijímače jeden po druhém podle priority deklarované přijímačem. Předchozí příjemce má právo ukončit vysílání (BroadcastReceiver.abortBroadcast ()). Pokud je vysílání ukončeno předchozím přijímačem, druhý přijímač již nemůže přijímat vysílání. U objednaného vysílání může předchozí přijímač uložit výsledek zpracování do Intentu vysílání a poté jej předat dalšímu přijímači.
Přijímač vysílání (BroadcastReceiver) se používá k příjmu Intent vysílání a odesílání Intent vysílání se uskutečňuje voláním Context.sendBroadcast () a Context.sendOrderedBroadcast (). Vysílací záměr může být obvykle přijat několika vysílacími přijímači přihlášenými k tomuto záměru. Tato funkce je podobná přijímačům tématických zpráv v JMS. Implementace metody přijímače vysílání je následující:
První krok: definovat přijímač vysílání, zdědit BroadcastReceiver a přepsat metodu onReceive ().
veřejná třída IncomingSMSReceiver extendsBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Krok 2: Přihlaste se k odběru vysílaného zájmového záměru, existují dvě metody předplatného:
První typ: k přihlášení k odběru použijte kód (dynamické předplatné)
Filtr IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
Přijímač IncomingSMSReceiver = newIncomingSMSReceiver ();
registerReceiver (přijímač, filtr);
Druhý typ: Přihlásit se k odběru v uzel v souboru AndroidManifest.xml (statické předplatné)
Pojďme se podívat na rozdíl mezi předplatným dynamického vysílání a předplatným statického vysílání:
Statické předplatné vysílání se také nazývá: rezidentní vysílání. Když je vaše aplikace zavřená, je-li k dispozici vysílaná zpráva, může ji přijmout i vysílaný přijímač, který jste napsali. Jeho metoda registrace je AndroidManifast ve vaší aplikaci. XML pro předplatné.
Dynamické vysílání předplatného se také nazývá: nerezidentní vysílání. Když aplikace skončí, vysílání přirozeně zmizí. Například se přihlásíte k odběru vysílání v onCreate nebo onResume v aktivitě a musíte zrušit předplatné vysílání v onDestory nebo onPause. Jinak bude nahlášena výjimka, takže váš vysílací přijímač bude nerezidentem.
Zde je ještě jeden detail, kterým jsou dvě metody předplatného. Při odesílání vysílání musíte věnovat pozornost: Metoda implicitního záměru se používá pro dynamickou registraci, takže při odesílání vysílání musíte použít implicitní záměr. , Jinak přijímač vysílání nebude schopen přijímat vysílání. Věnujte pozornost tomuto bodu. Ale když se přihlásíte k odběru staticky, protože je přihlášen k odběru v AndroidMainfest.xml, je možné při odesílání vysílání použít display Intent a implicit Intent (samozřejmě je to jen pro námi definované přijímače vysílání), takže pro každý případ obecně používáme implicitní Záměr odeslat vysílání.
Podívejme se na příklad:
Podívejte se na strukturu projektu:
Podívejte se na vysílání statického předplatného:
balíček com.broadcast.demo;
importovat android.app.Activity;
importovat android.content.Intent;
importovat android.os.Bundle;
importovat android.view.View;
importovat android.view.View.OnClickListener;
importovat android.widget.Button;
importovat com.example.androidbroadcastdemo.R;
/ **
* Statické předplatné vysílání
* @autor weijiang204321
*
*/
veřejná třída StaticRegisterBroadcastActivity rozšiřuje aktivitu {
@ Přepis
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Tlačítko btn = (Tlačítko) findViewById (R.id.btn);
Na
btn.setOnClickListener (nový OnClickListener () {
@ Přepis
public void onClick (Zobrazit v) {
// Použijte statický způsob registrace vysílání, k odeslání vysílání můžete použít záměr zobrazení
Záměr vysílání = nový záměr ("com.broadcast.set.broadcast");
sendBroadcast (broadcast, null);
}
Na
});
}
Na
}
Přihlaste se k odběru v AndroidMainfest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
balíček = "com.example.androidbroadcastdemo"
android: versionCode = "1"
Android: versionName = "1.0">
<používá-sdk
android: minSdkVersion = "8"
android: targetSdkVersion = "18" />
<aplikace
Android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
Android: label = "@ řetězec / název_aplikace"
android: theme = "@ style / AppTheme">
<aktivita
Android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ řetězec / název_aplikace">
Prozatím si nedělejte starosti s dalším obsahem, o čemž budeme hovořit později, zde se zaměříme pouze na registraci statického vysílání
Pojďme se podívat na příjemce vysílání:
balíček com.broadcast.receiver;
importovat android.content.BroadcastReceiver;
importovat android.content.Context;
importovat android.content.Intent;
importovat android.util.Log;
/ **
* Přijímač vysílání
* @autor weijiang204321
*
*/
public class UnSortBroadcastReceiver rozšiřuje BroadcastReceiver {
@ Přepis
public void onReceive (kontextový kontext, záměr záměr) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
Logika v metodě onReceive ve vysílacím přijímači je velmi jednoduchá, což je tisk obsahu Akce.
Spusťte program, výsledek je velmi jednoduchý, zde není obrázek.
Pojďme se podívat na dynamická předplatná:
balíček com.broadcast.demo;
importovat android.app.Activity;
importovat android.content.Intent;
importovat android.content.IntentFilter;
importovat android.os.Bundle;
importovat android.view.View;
importovat android.view.View.OnClickListener;
importovat android.widget.Button;
importovat com.broadcast.receiver.UnSortBroadcastReceiver;
importovat com.example.androidbroadcastdemo.R;
/ **
* Použijte dynamický způsob registrace vysílání
* @autor weijiang204321
*
*/
veřejná třída DynamicRegisterBroadcastActivity rozšiřuje aktivitu {
Na
public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
chráněný přijímač UnSortBroadcastReceiver;
Na
@ Přepis
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Tlačítko btn0 = (Tlačítko) findViewById (R.id.btn);
btn0.setOnClickListener (nový OnClickListener () {
public void onClick (Zobrazit v) {
// Odeslat vysílání
Intent it = nový záměr (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@ Přepis
protected void onResume () {
super.onResume ();
// Zaregistrujte se k vysílání
IntentFilter counterActionFilter = nový IntentFilter (NEW_LIFEFORM_DETECTED);
přijímač = nový UnSortBroadcastReceiver ();
registerReceiver (přijímač, counterActionFilter);
}
@ Přepis
Protected Void onPause () {
super.onPause ();
// Zrušit vysílání
unregisterReceiver (přijímač);
}
}
Zde se přihlašujeme k odběru vysílání v onResume a odhlašujeme odběr v onPause.
Změňte spuštěnou aktivitu na DynamicRegisterBroadcastActivity v AndroidMainfest.xml. Ostatní obsah není nutné upravovat. Spusťte program a výsledek je velmi jednoduchý, takže zde neuvidím obrázek.
Pojďme se podívat na objednané vysílání a neuspořádané vysílání
Již jsme to zmínili na začátku, pojďme se podívat na neuspořádané vysílání:
Nejprve definujeme dva vysílací přijímače:
První přijímač vysílání:
balíček com.broadcast.receiver;
importovat android.content.BroadcastReceiver;
importovat android.content.Context;
importovat android.content.Intent;
importovat android.util.Log;
/ **
* Přijímač vysílání A
* @autor weijiang204321
*
*/
veřejná třída SortBroadcastReceiverA rozšiřuje BroadcastReceiver {
@ Přepis
public void onReceive (kontextový kontext, záměr záměr) {
Log.e ("Ukázka:", "vysílací přijímač A");
}
}
Druhý přijímač vysílání:
balíček com.broadcast.receiver;
importovat android.content.BroadcastReceiver;
importovat android.content.Context;
importovat android.content.Intent;
importovat android.util.Log;
/ **
* Přijímač vysílání B
* @autor weijiang204321
*
*/
veřejná třída SortBroadcastReceiverB rozšiřuje BroadcastReceiver {
@ Přepis
public void onReceive (kontextový kontext, záměr záměr) {
Log.e ("Ukázka:", "Vysílání B");
}
Na
Na
}
Přihlaste se k odběru vysílání v souboru AndroidMainfest.xml
výsledek operace:
Průběžný výsledek je trochu divný. Proč je přijímač B vpředu a přijímač A vzadu? Důvodem je to, že když se přihlásíme k odběru vysílání v souboru AndroidMainfest.xml, nastavíme hodnotu atributu android: priority ve filtru záměru. Čím větší hodnota, tím vyšší priorita. , Priorita přijímače B je 1000, priorita přijímače A je 999, takže B přijímá vysílání jako první a poté A přijímá, ale mezi přijímačem B a přijímačem A není žádné spojení a nemůže docházet k žádné interakci. protože se jedná o vysílání mimo pořadí a asynchronní, můžeme provést experiment přidáním kódu k metodě onReceiver v B:
abortBroadcast (); // Ukončí přenos tohoto vysílání
výsledek operace:
Vidíme rychlou chybu, tj. Neobjednané vysílání nesmí vysílání ukončit. Ve skutečnosti je ukončení k ničemu, protože přijímač A stále přijímá vysílání.
Pojďme se podívat na řádné vysílání, kód je třeba upravit:
První je při odesílání vysílání:
Záměr vysílání = nový záměr ("com.broadcast.set.broadcast");
sendOrderedBroadcast (broadcast, null);
Poté přidejte metodu pro ukončení vysílání v přijímači B:
abortBroadcast ();
Druhý kód není nutné upravovat, výsledek operace:
Existuje pouze přijímač B, přijímač A nepřijímá vysílání, protože vysílání je ukončeno v přijímači B a následující přijímači jej nemohou přijmout.
Upravte níže uvedený kód:
Příjemce B:
balíček com.broadcast.receiver;
importovat android.content.BroadcastReceiver;
importovat android.content.Context;
importovat android.content.Intent;
importovat android.os.Bundle;
importovat android.util.Log;
/ **
* Přijímač vysílání B
* @autor weijiang204321
*
*/
veřejná třída SortBroadcastReceiverB rozšiřuje BroadcastReceiver {
@ Přepis
public void onReceive (kontextový kontext, záměr záměr) {
Log.e ("Ukázka:", "vysílací přijímač B");
Bundle bundle = nový Bundle ();
bundle.putString ("next_receiver", "next broadcast receiver");
setResultExtras (svazek);
}
Na
}
Poté, co B přijme vysílání, uloží určitou hodnotu a předá ji dalšímu přijímači.
Kód přijímače A:
balíček com.broadcast.receive
Náš další produkt:
Profesionální balíček vybavení FM rozhlasové stanice
|
||
|
Zadejte e-mail a získejte překvapení
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánština
sq.fmuser.org -> albánština
ar.fmuser.org -> arabština
hy.fmuser.org -> Arménský
az.fmuser.org -> Ázerbájdžánština
eu.fmuser.org -> baskičtina
be.fmuser.org -> běloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalánština
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> Čínsky (zjednodušeně)
hr.fmuser.org -> chorvatština
cs.fmuser.org -> čeština
da.fmuser.org -> dánština
nl.fmuser.org -> Dutch
et.fmuser.org -> estonština
tl.fmuser.org -> filipínský
fi.fmuser.org -> finština
fr.fmuser.org -> French
gl.fmuser.org -> galicijština
ka.fmuser.org -> gruzínština
de.fmuser.org -> němčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolština
iw.fmuser.org -> hebrejština
hi.fmuser.org -> hindština
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandština
id.fmuser.org -> Indonéština
ga.fmuser.org -> Irština
it.fmuser.org -> Italian
ja.fmuser.org -> japonština
ko.fmuser.org -> korejština
lv.fmuser.org -> lotyština
lt.fmuser.org -> Litevština
mk.fmuser.org -> makedonština
ms.fmuser.org -> Malajština
mt.fmuser.org -> maltština
no.fmuser.org -> Norwegian
fa.fmuser.org -> perština
pl.fmuser.org -> polština
pt.fmuser.org -> portugalština
ro.fmuser.org -> Rumunština
ru.fmuser.org -> ruština
sr.fmuser.org -> srbština
sk.fmuser.org -> slovenština
sl.fmuser.org -> Slovinština
es.fmuser.org -> španělština
sw.fmuser.org -> svahilština
sv.fmuser.org -> švédština
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinština
ur.fmuser.org -> urdština
vi.fmuser.org -> Vietnamská
cy.fmuser.org -> velština
yi.fmuser.org -> Jidiš
FMUSER Bezdrátový přenos videa a zvuku snadnější!
Kontakt
Adresa:
Budova č. 305 Room HuiLan No.273 Huanpu Road Guangzhou Čína 510620
Kategorie
Newsletter