FMUSER Wirless lähettää videota ja ääntä helpommin!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albania
ar.fmuser.org -> arabia
hy.fmuser.org -> Armenian
az.fmuser.org -> azerbaidžanilainen
eu.fmuser.org -> baski
be.fmuser.org -> valkovenäläinen
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> katalaani
zh-CN.fmuser.org -> kiina (yksinkertaistettu)
zh-TW.fmuser.org -> Kiina (perinteinen)
hr.fmuser.org -> kroatia
cs.fmuser.org -> tšekki
da.fmuser.org -> tanska
nl.fmuser.org -> Dutch
et.fmuser.org -> viro
tl.fmuser.org -> filippiiniläinen
fi.fmuser.org -> suomi
fr.fmuser.org -> French
gl.fmuser.org -> galicialainen
ka.fmuser.org -> Georgian
de.fmuser.org -> saksa
el.fmuser.org -> Greek
ht.fmuser.org -> Haitin kreoli
iw.fmuser.org -> heprea
hi.fmuser.org -> Hindi
hu.fmuser.org -> Unkari
is.fmuser.org -> islanti
id.fmuser.org -> indonesia
ga.fmuser.org -> irlantilainen
it.fmuser.org -> Italian
ja.fmuser.org -> japani
ko.fmuser.org -> korea
lv.fmuser.org -> latvia
lt.fmuser.org -> Liettua
mk.fmuser.org -> makedonia
ms.fmuser.org -> malaiji
mt.fmuser.org -> maltalainen
no.fmuser.org -> Norja
fa.fmuser.org -> persia
pl.fmuser.org -> puola
pt.fmuser.org -> portugali
ro.fmuser.org -> Romania
ru.fmuser.org -> venäjä
sr.fmuser.org -> serbia
sk.fmuser.org -> slovakki
sl.fmuser.org -> Slovenian
es.fmuser.org -> espanja
sw.fmuser.org -> swahili
sv.fmuser.org -> ruotsi
th.fmuser.org -> Thai
tr.fmuser.org -> turkki
uk.fmuser.org -> ukraina
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> kymri
yi.fmuser.org -> Jiddiš
Lähetys on jaettu kahteen eri tyyppiin: "Normaalilähetykset" ja "Tilatut lähetykset". Tavallinen lähetys on täysin asynkroninen ja sen voi vastaanottaa kaikki lähetysvastaanottimet samanaikaisesti (loogisesti). Viestien jakelun tehokkuus on suhteellisen korkea, mutta haittana on, että vastaanotin ei voi siirtää käsittelytulosta seuraavalle vastaanottimelle eikä sitä voida lopettaa. Broadcast Intent -lähetys; Tilattu lähetys perustuu kuitenkin vastaanottimen ilmoittamaan prioriteettiin (ilmoitettu aikomussuodatinelementin androidissa: prioriteetti-attribuutissa, mitä suurempi luku, sitä korkeampi prioriteetti, arvoalue: -1000 - 1000. Se on myös mahdollista Kutsu asetettavan IntentFilter-objektin setPriority ()) ja vastaanottaja vastaanottaa lähetyksen vuorotellen. Esimerkiksi, jos A: n taso on korkeampi kuin B: n ja B: n taso on korkeampi kuin C, lähetys lähetetään ensin A: lle, sitten B: lle ja lopulta C: lle. Kun A saa lähetyksen, se voi tallentaa tietoja lähetykseen. Kun lähetys lähetetään B: lle, B voi saada A: n tallentaman datan lähetyksestä.
Context.sendBroadcast ()
Lähetetään tavallinen lähetys, ja kaikilla tilaajilla on mahdollisuus hankkia ja käsitellä se.
Context.sendOrderedBroadcast ()
Lähetys on järjestetty lähetys. Järjestelmä suorittaa vastaanottimet yksitellen vastaanottimen ilmoittaman prioriteetin mukaisesti. Edellisellä vastaanottimella on oikeus lopettaa lähetys (BroadcastReceiver.abortBroadcast ()). Jos edellinen vastaanotin lopettaa lähetyksen, viimeksi mainittu Vastaanotin ei voi enää saada lähetystä. Tilattuun lähetykseen edellinen vastaanotin voi tallentaa käsittelytuloksen lähetystarkoitukseen ja siirtää sen seuraavaan vastaanottimeen.
Lähetysvastaanotinta (BroadcastReceiver) käytetään lähetystarkoituksen vastaanottamiseen, ja lähetystarkoituksen lähetys toteutetaan kutsumalla Context.sendBroadcast () ja Context.sendOrderedBroadcast (). Yleensä lähetystarkoitus voidaan vastaanottaa usealla lähetysvastaanottimella, jotka ovat tilanneet tämän tarkoituksen. Tämä ominaisuus on samanlainen kuin JMS: n Aiheviestien vastaanottimet. Yleislähetysvastaanottimen käyttöönotto on seuraava:
Ensimmäinen vaihe: määritä lähetysvastaanotin, peri BroadcastReceiver ja kirjoita onReceive () -menetelmä uudelleen.
public class IncomingSMSReceiver laajentaaBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Vaihe 2: Tilaa kiinnostuksen kohde, on olemassa kaksi tilausmenetelmää:
Ensimmäinen tyyppi: käytä koodia tilataksesi (dynaaminen tilaus)
IntentFilter-suodatin = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver-vastaanotin = newIncomingSMSReceiver ();
registerReceiver (vastaanotin, suodatin);
Toinen tyyppi: Tilaa solmu AndroidManifest.xml-tiedostossa (staattinen tilaus)
Katsotaanpa ero dynaamisen lähetystilauksen ja staattisen lähetystilauksen välillä:
Staattista tilauslähetystä kutsutaan myös: asuntolähetykseksi. Kun lähetysviesti on suljettu, sovelluksesi on suljettu, kirjoittamasi lähetysvastaanotin voi myös vastaanottaa sen. Sen rekisteröintitapa on AndroidManifast sovelluksessasi. .xml tilattavaksi.
Dynaamista tilauslähetystä kutsutaan myös: ulkomaalaislähetys. Kun sovellus päättyy, lähetys häviää luonnollisesti. Voit esimerkiksi tilata lähetyksen aktiviteetissa onCreate tai onResume ja sinun on peruutettava lähetystilaus onDestory- tai onPause-palvelussa. Muussa tapauksessa ilmoitetaan poikkeuksesta, joten lähetysvastaanottajasi ei ole asukas.
Tässä on vielä yksi yksityiskohta, jotka ovat kaksi tilausmenetelmää. Lähetettäessä lähetyksiä sinun on kiinnitettävä huomiota: implisiittisen aikomuksen menetelmää käytetään dynaamiseen rekisteröintiin, joten sinun on käytettävä implisiittistä aikomusta lähettää lähetettäessä lähetyksiä. , Muuten lähetysvastaanotin ei pysty vastaanottamaan lähetystä. Kiinnitä huomiota tähän kohtaan. Mutta kun tilaat staattisesti, koska se on tilattu AndroidMainfest.xml: ssä, lähetyksiä lähetettäessä on mahdollista käyttää näyttöä Intent and implicit Intent (tietysti tämä koskee vain itse määrittelemiä lähetysvastaanottimia), joten käytämme yleensä vain implisiittisiä Tarkoitus lähettää lähetys.
Katsotaanpa esimerkkiä:
Katsokaa projektin rakennetta:
Katso staattinen tilauslähetys:
paketti com.broadcast.demo;
tuoda android.app.Activity;
tuonti android.content.Intent;
tuonti android.os.Bundle;
tuoda android.view.View;
tuo android.view.View.OnClickListener;
tuonti android.widget.Button;
tuo com.example.androidbroadcastdemo.R;
/ **
* Staattinen tilauslähetys
* @tekijä weijiang204321
*
*/
public class StaticRegisterBroadcastActivity laajentaa toimintaa {
@Ohittaa
suojattu void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Button btn = (painike) findViewById (R.id.btn);
jotta
btn.setOnClickListener (uusi OnClickListener () {
@Ohittaa
public void onClick (Näytä v) {
// Käytä staattista tapaa rekisteröidä lähetys, voit käyttää lähetystä lähetyksen avulla
Tarkoituslähetys = uusi Tarkoitus ("com.broadcast.set.broadcast");
sendBroadcast (lähetys, nolla);
}
jotta
});
}
jotta
}
Tilaa 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" />
<sovellus
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ merkkijono / sovelluksen_nimi"
android: theme = "@ style / AppTheme">
<toiminta
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ merkkijono / sovelluksen_nimi">
Älä välitä toisesta sisällöstä toistaiseksi, josta puhumme myöhemmin, tässä keskitymme vain staattisten lähetysten rekisteröintiin
Katsotaanpa lähetyksen vastaanotinta:
paketti com.broadcast.receiver;
tuonti android.content.BroadcastReceiver;
tuo android.content.Context;
tuonti android.content.Intent;
tuonti android.util.Log;
/ **
* Lähetinvastaanotin
* @tekijä weijiang204321
*
*/
public class UnSortBroadcastReceiver laajentaa BroadcastReceiver {
@Ohittaa
public void onReceive (kontekstikonteksti, tarkoituksellinen tarkoitus) {
Loki.e ("Intent_Action:", intent.getAction () + "");
}
}
Lähetysvastaanottimen onReceive-menetelmän logiikka on hyvin yksinkertainen, eli toiminnon sisällön tulostaminen.
Suorita ohjelma, tulos on hyvin yksinkertainen, tässä ei ole kuvaa.
Katsotaanpa dynaamisia tilauksia:
paketti com.broadcast.demo;
tuoda android.app.Activity;
tuonti android.content.Intent;
tuonti android.content.IntentFilter;
tuonti android.os.Bundle;
tuoda android.view.View;
tuo android.view.View.OnClickListener;
tuonti android.widget.Button;
tuo com.broadcast.receiver.UnSortBroadcastReceiver;
tuo com.example.androidbroadcastdemo.R;
/ **
* Käytä dynaamista tapaa rekisteröidä lähetys
* @tekijä weijiang204321
*
*/
julkinen luokka DynamicRegisterBroadcastActivity laajentaa toimintaa {
jotta
julkinen staattinen lopullinen merkkijono NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
suojattu UnSortBroadcastReceiver-vastaanotin;
jotta
@Ohittaa
suojattu void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Button btn0 = (Button) findViewById (R.id.btn);
btn0.setOnClickListener (uusi OnClickListener () {
public void onClick (Näytä v) {
// Lähetä lähetys
Tarkoitus se = uusi Tarkoitus (NEW_LIFEFORM_DETECTED);
sendBroadcast (se);
}
});
}
@Ohittaa
suojattu void onResume () {
super.onResume ();
// Rekisteröidy lähetykseen
IntentFilter counterActionFilter = uusi IntentFilter (NEW_LIFEFORM_DETECTED);
vastaanotin = uusi UnSortBroadcastReceiver ();
registerReceiver (vastaanotin, counterActionFilter);
}
@Ohittaa
suojattu void onPause () {
super.onPause ();
// Peruuta lähetys
unregisterReceiver (vastaanotin);
}
}
Täällä olemme tilaamassa lähetyksiä onResume-palvelussa ja lopettaneet lähetysten tilaamisen onPause-palvelussa.
Vaihda käynnistetty aktiviteetti asetukseksi DynamicRegisterBroadcastActivity AndroidMainfest.xml-tiedostossa. Muuta sisältöä ei tarvitse muuttaa. Suorita ohjelma ja tulosta tulos on hyvin yksinkertainen, joten en näe kuvaa täällä.
Katsotaanpa tilattu lähetys ja tilaamaton lähetys
Olemme jo maininneet tämän alussa, katsotaanpa häiriötöntä lähetystä:
Ensin määritellään kaksi lähetysvastaanotinta:
Ensimmäinen lähetysvastaanotin:
paketti com.broadcast.receiver;
tuonti android.content.BroadcastReceiver;
tuo android.content.Context;
tuonti android.content.Intent;
tuonti android.util.Log;
/ **
* Lähetinvastaanotin A
* @tekijä weijiang204321
*
*/
public class SortBroadcastReceiverA laajentaa BroadcastReceiver {
@Ohittaa
public void onReceive (kontekstikonteksti, tarkoituksellinen tarkoitus) {
Log.e ("Demo:", "lähetysvastaanotin A");
}
}
Toinen lähetysvastaanotin:
paketti com.broadcast.receiver;
tuonti android.content.BroadcastReceiver;
tuo android.content.Context;
tuonti android.content.Intent;
tuonti android.util.Log;
/ **
* Lähetinvastaanotin B
* @tekijä weijiang204321
*
*/
public class SortBroadcastReceiverB laajentaa BroadcastReceiver {
@Ohittaa
public void onReceive (kontekstikonteksti, tarkoituksellinen tarkoitus) {
Log.e ("Demo:", "Lähetys B");
}
jotta
jotta
}
Tilaa lähetys AndroidMainfest.xml-palvelussa
toiminnan tulos:
Juoksutulos on vähän outo. Miksi vastaanotin B on edessä ja vastaanotin A takana? Syynä on, että kun tilaamme lähetyksen AndroidMainfest.xml -ohjelmassa, asetamme android: prioriteetti -määritteen arvon aikomussuodattimeen. Mitä suurempi arvo, sitä korkeampi prioriteetti. , Vastaanottimen B prioriteetti on 1000, vastaanottimen A prioriteetti on 999, joten B vastaanottaa lähetyksen ensin ja sitten A vastaanottaa sen, mutta vastaanottimen B ja vastaanottimen A välillä ei ole yhteyttä, eikä vuorovaikutusta voi olla Kyllä, koska tämä on järjestyksessä oleva lähetys ja asynkroninen, voimme tehdä kokeilun lisäämällä koodin onReceiver-menetelmään kohdassa B:
abortBroadcast (); // Lopeta tämän lähetyksen lähetys
toiminnan tulos:
Näemme nopean virheen, toisin sanoen tilaamaton lähetys ei saa lopettaa lähetystä. Itse asiassa irtisanominen on hyödytöntä, koska vastaanotin A edelleen vastaanottaa lähetyksen.
Katsotaanpa järjestetty lähetys, koodia on muutettava:
Ensimmäinen on lähetys:
Tarkoituslähetys = uusi Tarkoitus ("com.broadcast.set.broadcast");
sendOrderedBroadcast (lähetys, nolla);
Lisää sitten tapa lopettaa lähetys B-vastaanottimessa:
keskeytäLähetys ();
Toista koodia ei tarvitse muuttaa, toiminnan tulos:
On vain vastaanotin B, vastaanotin A ei vastaanota lähetystä, koska lähetys lopetetaan vastaanottimessa B, eivätkä seuraavat vastaanottimet voi hyväksyä sitä.
Muokkaa alla olevaa koodia:
Vastaanottaja B:
paketti com.broadcast.receiver;
tuonti android.content.BroadcastReceiver;
tuo android.content.Context;
tuonti android.content.Intent;
tuonti android.os.Bundle;
tuonti android.util.Log;
/ **
* Lähetinvastaanotin B
* @tekijä weijiang204321
*
*/
public class SortBroadcastReceiverB laajentaa BroadcastReceiver {
@Ohittaa
public void onReceive (kontekstikonteksti, tarkoituksellinen tarkoitus) {
Log.e ("Demo:", "yleislähetysvastaanotin B");
Bundle-paketti = uusi Bundle ();
bundle.putString ("seuraava_vastaanotin", "seuraava lähetysvastaanotin");
setResultExtras (paketti);
}
jotta
}
Kun B on vastaanottanut lähetyksen, se tallentaa jonkin verran arvoa ja välittää sen seuraavalle vastaanottimelle.
Vastaanottimen A koodi:
paketti com.broadcast.receive
Meidän muiden tuotteiden:
Ammattimainen FM-radioasemalaitepaketti
|
||
|
Kirjoita sähköpostiosoite saadaksesi yllätyksen
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albania
ar.fmuser.org -> arabia
hy.fmuser.org -> Armenian
az.fmuser.org -> azerbaidžanilainen
eu.fmuser.org -> baski
be.fmuser.org -> valkovenäläinen
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> katalaani
zh-CN.fmuser.org -> kiina (yksinkertaistettu)
zh-TW.fmuser.org -> Kiina (perinteinen)
hr.fmuser.org -> kroatia
cs.fmuser.org -> tšekki
da.fmuser.org -> tanska
nl.fmuser.org -> Dutch
et.fmuser.org -> viro
tl.fmuser.org -> filippiiniläinen
fi.fmuser.org -> suomi
fr.fmuser.org -> French
gl.fmuser.org -> galicialainen
ka.fmuser.org -> Georgian
de.fmuser.org -> saksa
el.fmuser.org -> Greek
ht.fmuser.org -> Haitin kreoli
iw.fmuser.org -> heprea
hi.fmuser.org -> Hindi
hu.fmuser.org -> Unkari
is.fmuser.org -> islanti
id.fmuser.org -> indonesia
ga.fmuser.org -> irlantilainen
it.fmuser.org -> Italian
ja.fmuser.org -> japani
ko.fmuser.org -> korea
lv.fmuser.org -> latvia
lt.fmuser.org -> Liettua
mk.fmuser.org -> makedonia
ms.fmuser.org -> malaiji
mt.fmuser.org -> maltalainen
no.fmuser.org -> Norja
fa.fmuser.org -> persia
pl.fmuser.org -> puola
pt.fmuser.org -> portugali
ro.fmuser.org -> Romania
ru.fmuser.org -> venäjä
sr.fmuser.org -> serbia
sk.fmuser.org -> slovakki
sl.fmuser.org -> Slovenian
es.fmuser.org -> espanja
sw.fmuser.org -> swahili
sv.fmuser.org -> ruotsi
th.fmuser.org -> Thai
tr.fmuser.org -> turkki
uk.fmuser.org -> ukraina
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> kymri
yi.fmuser.org -> Jiddiš
FMUSER Wirless lähettää videota ja ääntä helpommin!
Ota yhteyttä
Osoite:
Nro 305 huone HuiLan-rakennus nro 273 Huanpu Road Guangzhou Kiina 510620
Kategoriat
Uutiskirje