FMUSER Bezdrôtové vysielanie videa a zvuku je jednoduchšie!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánčina
sq.fmuser.org -> albánsky
ar.fmuser.org -> arabčina
hy.fmuser.org -> Arménsky
az.fmuser.org -> azerbajdžanský
eu.fmuser.org -> baskičtina
be.fmuser.org -> bieloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> katalánčina
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> čínština (tradičná)
hr.fmuser.org -> chorvátčina
cs.fmuser.org -> čeština
da.fmuser.org -> dánčina
nl.fmuser.org -> Dutch
et.fmuser.org -> estónčina
tl.fmuser.org -> filipínsky
fi.fmuser.org -> fínčina
fr.fmuser.org -> French
gl.fmuser.org -> galícijčina
ka.fmuser.org -> gruzínsky
de.fmuser.org -> nemčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolčina
iw.fmuser.org -> hebrejčina
hi.fmuser.org -> hindčina
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandský
id.fmuser.org -> indonézština
ga.fmuser.org -> írsky
it.fmuser.org -> Italian
ja.fmuser.org -> japončina
ko.fmuser.org -> kórejčina
lv.fmuser.org -> lotyšský
lt.fmuser.org -> litovčina
mk.fmuser.org -> macedónsky
ms.fmuser.org -> malajčina
mt.fmuser.org -> maltčina
no.fmuser.org -> Norwegian
fa.fmuser.org -> perzský
pl.fmuser.org -> poľština
pt.fmuser.org -> portugalčina
ro.fmuser.org -> rumunčina
ru.fmuser.org -> ruština
sr.fmuser.org -> srbčina
sk.fmuser.org -> slovenčina
sl.fmuser.org -> slovinčina
es.fmuser.org -> španielčina
sw.fmuser.org -> svahilčina
sv.fmuser.org -> švédčina
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinčina
ur.fmuser.org -> urdčina
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> waleština
yi.fmuser.org -> jidiš
Vysielanie je rozdelené do dvoch rôznych typov: „Normálne vysielanie“ a „Objednané vysielanie“. Bežné vysielanie je úplne asynchrónne a môžu ho prijímať všetky rozhlasové prijímače súčasne (logicky). Účinnosť doručovania správ je pomerne vysoká, nevýhodou však je, že prijímač nemôže odovzdať výsledok spracovania ďalšiemu prijímateľovi a nemožno ho ukončiť. Šírenie zámeru vysielania; usporiadané vysielanie je však založené na priorite deklarovanej prijímačom (deklarovaná v atribúte android: priority prvku filtra zámeru, čím väčšie číslo, tým vyššia priorita, rozsah hodnôt: -1000 až 1000 XNUMX. Je tiež možné Zavolajte setPriority () objektu IntentFilter, ktorý chcete nastaviť) a príjemca postupne dostane vysielanie. Napríklad, ak je úroveň A vyššia ako úroveň B a úroveň B je vyššia ako C, potom sa vysielanie najskôr prenesie do A, potom do B a nakoniec do C. Keď A získa vysielanie, môže ukladať dáta do vysielania. Keď sa vysielanie pošle do B, B môže získať dáta uložené A z vysielania.
Context.sendBroadcast ()
Posiela sa obyčajné vysielanie a všetci predplatitelia majú možnosť ich získať a spracovať.
Context.sendOrderedBroadcast ()
Odosielanie je usporiadané vysielanie. Systém vykoná prijímače jeden po druhom podľa priority deklarovanej prijímačom. Predchádzajúci príjemca má právo ukončiť vysielanie (BroadcastReceiver.abortBroadcast ()). Ak je vysielanie ukončené predchádzajúcim prijímačom, tým druhým prijímač už nemôže vysielať. Pri objednanom vysielaní môže predchádzajúci prijímač uložiť výsledok spracovania do vysielacieho zámeru a potom ho odovzdať ďalšiemu prijímaču.
Prijímač vysielania (BroadcastReceiver) sa používa na príjem vysielaného zámeru a odoslanie vysielaného zámeru sa realizuje volaním Context.sendBroadcast () a Context.sendOrderedBroadcast (). Zvyčajne môžu byť vysielané zámery prijímané viacerými rozhlasovými prijímačmi prihlásenými na odber tohto zámeru. Táto funkcia je podobná prijímačom témových správ v JMS. Implementácia metódy prijímača vysielania je nasledovná:
Prvý krok: definujte prijímač vysielania, dedte BroadcastReceiver a prepíšte metódu onReceive ().
verejná trieda IncomingSMSReceiver extendsBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Krok 2: Prihláste sa na odber požadovaného vysielacieho zámeru, existujú dva spôsoby prihlásenia:
Prvý typ: na prihlásenie použite kód (dynamické predplatné)
Filter IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
Prijímač IncomingSMSReceiver = newIncomingSMSReceiver ();
registerReceiver (prijímač, filter);
Druhý typ: Prihlásiť sa na odber v systéme Windows uzol v súbore AndroidManifest.xml (statické predplatné)
Pozrime sa na rozdiel medzi predplatným dynamického vysielania a odberom statického vysielania:
Statické predplatné sa tiež nazýva: miestne vysielanie. Ak je vaša aplikácia zatvorená, môže sa zobraziť aj rozhlasová správa, ktorú ste napísali. Spôsob registrácie je vo vašej aplikácii AndroidManifast. .xml na predplatné.
Dynamické vysielanie predplatného sa tiež nazýva: nerezidentné vysielanie. Keď sa aplikácia skončí, vysielanie prirodzene zmizne. Napríklad si predplatíte vysielanie v rámci aktivity onCreate alebo onResume a musíte zrušiť predplatné vysielania v onDestory alebo onPause. V opačnom prípade bude hlásená výnimka, takže váš prijímač vysielania bude nerezidentom.
Je tu ešte jeden detail, ktorým sú dve metódy predplatného. Pri odosielaní vysielania musíte venovať pozornosť: Metóda implicitného zámeru sa používa na dynamickú registráciu, takže pri odosielaní vysielania musíte použiť implicitný zámer. , V opačnom prípade nebude prijímač vysielania schopný prijímať vysielanie. Venujte pozornosť tomuto bodu. Ale pri statickom prihlásení na odber, pretože je prihlásený na odber AndroidMainfest.xml, je možné pri odosielaní vysielania použiť display Intent a implicit Intent (samozrejme je to iba pre nami definované prijímače vysielania), takže pre každý prípad všeobecne používame implicitné Zámer poslať vysielanie.
Pozrime sa na príklad:
Pozrite sa na štruktúru projektu:
Pozrite sa na vysielanie statického predplatného:
balíček com.broadcast.demo;
importovať android.app.Activity;
importovať android.content.Intent;
importovať android.os.Bundle;
importovať android.view.View;
importovať android.view.View.OnClickListener;
importovať android.widget.Button;
importujte com.example.androidbroadcastdemo.R;
/ **
* Vysielanie statického predplatného
* @autor weijiang204321
*
*/
verejná trieda StaticRegisterBroadcastActivity rozširuje aktivitu {
@ Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Tlačidlo btn = (Tlačidlo) findViewById (R.id.btn);
na
btn.setOnClickListener (nový OnClickListener () {
@ Override
public void onClick (Zobraziť v) {
// Ak chcete zaregistrovať vysielanie, použite statický spôsob, ako vysielanie môžete použiť zámer zobrazenia
Zámer vysielania = nový zámer ("com.broadcast.set.broadcast");
sendBroadcast (broadcast, null);
}
na
});
}
na
}
Prihláste sa na odber v súbore 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žíva-sdk
android: minSdkVersion = "8"
android: targetSdkVersion = "18" />
<aplikácia
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<činnosť
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ reťazec / názov_aplikácie">
O ďalší obsah sa zatiaľ nebojte, o čom si ešte povieme neskôr, tu sa zameriavame iba na registráciu statického vysielania
Poďme sa pozrieť na prijímač vysielania:
balíček com.broadcast.receiver;
importovať android.content.BroadcastReceiver;
importovať android.content.Context;
importovať android.content.Intent;
importovať android.util.Log;
/ **
* Prijímač vysielania
* @autor weijiang204321
*
*/
public class UnSortBroadcastReceiver rozširuje BroadcastReceiver {
@ Override
public void onReceive (kontextový kontext, zámerný zámer) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
Logika metódy onReceive v prijímači vysielania je veľmi jednoduchá, čo znamená tlačiť obsah akcie.
Spustite program, výsledok je veľmi jednoduchý, tu nie je obrázok.
Pozrime sa na dynamické predplatné:
balíček com.broadcast.demo;
importovať android.app.Activity;
importovať android.content.Intent;
importovať android.content.IntentFilter;
importovať android.os.Bundle;
importovať android.view.View;
importovať android.view.View.OnClickListener;
importovať android.widget.Button;
importovať com.broadcast.receiver.UnSortBroadcastReceiver;
importujte com.example.androidbroadcastdemo.R;
/ **
* Použite dynamický spôsob registrácie vysielania
* @autor weijiang204321
*
*/
verejná trieda DynamicRegisterBroadcastActivity rozširuje aktivitu {
na
public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
chránený prijímač UnSortBroadcastReceiver;
na
@ Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Tlačidlo btn0 = (Tlačidlo) findViewById (R.id.btn);
btn0.setOnClickListener (nový OnClickListener () {
public void onClick (Zobraziť v) {
// Odoslať vysielanie
Intent it = nový zámer (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@ Override
protected void onResume () {
super.onResume ();
// Zaregistrujte sa na vysielanie
IntentFilter counterActionFilter = nový IntentFilter (NEW_LIFEFORM_DETECTED);
prijímač = nový UnSortBroadcastReceiver ();
registerReceiver (prijímač, counterActionFilter);
}
@ Override
protected void onPause () {
super.onPause ();
// Zrušiť vysielanie
unregisterReceiver (prijímač);
}
}
Tu sa prihlasujeme na odber vysielania v službe onResume a odhlasujeme vysielanie v službe onPause.
Zmeňte spustenú aktivitu na DynamicRegisterBroadcastActivity v súbore AndroidMainfest.xml. Ostatný obsah nie je potrebné upravovať. Spustite program a vytlačte výsledok je veľmi jednoduchý, takže tu neuvidím obrázok.
Poďme sa pozrieť na objednané vysielanie a neusporiadané vysielanie
Už sme to spomenuli na začiatku, poďme sa pozrieť na neusporiadané vysielanie:
Najprv definujeme dva vysielacie prijímače:
Prvý vysielací prijímač:
balíček com.broadcast.receiver;
importovať android.content.BroadcastReceiver;
importovať android.content.Context;
importovať android.content.Intent;
importovať android.util.Log;
/ **
* Prijímač vysielania A
* @autor weijiang204321
*
*/
verejná trieda SortBroadcastReceiverA rozširuje BroadcastReceiver {
@ Override
public void onReceive (kontextový kontext, zámerný zámer) {
Log.e („Ukážka:“, „vysielací prijímač A“);
}
}
Druhý prijímač vysielania:
balíček com.broadcast.receiver;
importovať android.content.BroadcastReceiver;
importovať android.content.Context;
importovať android.content.Intent;
importovať android.util.Log;
/ **
* Prijímač vysielania B
* @autor weijiang204321
*
*/
verejná trieda SortBroadcastReceiverB rozširuje BroadcastReceiver {
@ Override
public void onReceive (kontextový kontext, zámerný zámer) {
Log.e („Ukážka:“, „Vysielanie B“);
}
na
na
}
Prihláste sa na odber vysielania v súbore AndroidMainfest.xml
výsledok operácie:
Priebežný výsledok je trochu zvláštny. Prečo je prijímač B vpredu a prijímač A vzadu? Dôvod je ten, že keď sa prihlásime na odber vysielania v súbore AndroidMainfest.xml, nastavíme hodnotu atribútu android: priority vo filtri úmyslov. Čím vyššia je hodnota, tým vyššia je priorita. , Priorita prijímača B je 1000 999, priorita prijímača A je XNUMX, takže B prijíma najskôr vysielanie a potom ho prijíma A, ale medzi prijímačom B a prijímačom A nie je žiadne spojenie a nemôže dochádzať k interakcii. Áno, pretože toto je vysielanie mimo poradia a asynchrónne, môžeme urobiť experiment pridaním kódu k metóde onReceiver v B:
abortBroadcast (); // Ukončí prenos tohto vysielania
výsledok operácie:
Vidíme rýchlu chybu, to znamená, že neobjednané vysielanie nemá povolené vysielanie ukončiť. Ukončenie je v skutočnosti zbytočné, pretože prijímač A stále prijíma vysielanie.
Poďme sa pozrieť na usporiadané vysielanie, kód je potrebné upraviť:
Prvý je pri odosielaní vysielania:
Zámer vysielania = nový zámer ("com.broadcast.set.broadcast");
sendOrderedBroadcast (broadcast, null);
Potom pridajte spôsob ukončenia vysielania v prijímači B:
abortBroadcast ();
Druhý kód nie je potrebné upravovať, výsledok operácie:
Existuje iba prijímač B, prijímač A neprijíma vysielanie, pretože vysielanie je ukončené v prijímači B a nasledujúce prijímače ho nemôžu prijať.
Upravte kód nižšie:
Príjemca B:
balíček com.broadcast.receiver;
importovať android.content.BroadcastReceiver;
importovať android.content.Context;
importovať android.content.Intent;
importovať android.os.Bundle;
importovať android.util.Log;
/ **
* Prijímač vysielania B
* @autor weijiang204321
*
*/
verejná trieda SortBroadcastReceiverB rozširuje BroadcastReceiver {
@ Override
public void onReceive (kontextový kontext, zámerný zámer) {
Log.e („Ukážka:“, „vysielací prijímač B“);
Bundle bundle = nový Bundle ();
bundle.putString ("next_receiver", "ďalší vysielací prijímač");
setResultExtras (zväzok);
}
na
}
Po prijatí vysielania B uloží určitú hodnotu a odovzdá ju ďalšiemu prijímaču.
Kód prijímača A:
balík com.broadcast.receive
Náš ďalší produkt:
Profesionálny balík vybavenia FM rádiovej stanice
|
||
|
Zadajte e-mail, aby ste dostali prekvapenie
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánčina
sq.fmuser.org -> albánsky
ar.fmuser.org -> arabčina
hy.fmuser.org -> Arménsky
az.fmuser.org -> azerbajdžanský
eu.fmuser.org -> baskičtina
be.fmuser.org -> bieloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> katalánčina
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> čínština (tradičná)
hr.fmuser.org -> chorvátčina
cs.fmuser.org -> čeština
da.fmuser.org -> dánčina
nl.fmuser.org -> Dutch
et.fmuser.org -> estónčina
tl.fmuser.org -> filipínsky
fi.fmuser.org -> fínčina
fr.fmuser.org -> French
gl.fmuser.org -> galícijčina
ka.fmuser.org -> gruzínsky
de.fmuser.org -> nemčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolčina
iw.fmuser.org -> hebrejčina
hi.fmuser.org -> hindčina
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandský
id.fmuser.org -> indonézština
ga.fmuser.org -> írsky
it.fmuser.org -> Italian
ja.fmuser.org -> japončina
ko.fmuser.org -> kórejčina
lv.fmuser.org -> lotyšský
lt.fmuser.org -> litovčina
mk.fmuser.org -> macedónsky
ms.fmuser.org -> malajčina
mt.fmuser.org -> maltčina
no.fmuser.org -> Norwegian
fa.fmuser.org -> perzský
pl.fmuser.org -> poľština
pt.fmuser.org -> portugalčina
ro.fmuser.org -> rumunčina
ru.fmuser.org -> ruština
sr.fmuser.org -> srbčina
sk.fmuser.org -> slovenčina
sl.fmuser.org -> slovinčina
es.fmuser.org -> španielčina
sw.fmuser.org -> svahilčina
sv.fmuser.org -> švédčina
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinčina
ur.fmuser.org -> urdčina
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> waleština
yi.fmuser.org -> jidiš
FMUSER Bezdrôtové vysielanie videa a zvuku je jednoduchšie!
Kontakt
adresa:
Budova č. 305 Izba HuiLan č. 273 Huanpu Road Kanton Čína 510620
Kategórie
Prihlás sa na odber Newslettra