FMUSER Wirless edastab videot ja heli lihtsamalt!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albaania keel
ar.fmuser.org -> araabia
hy.fmuser.org -> Armeenia
az.fmuser.org -> aserbaidžaanlane
eu.fmuser.org -> baski keel
be.fmuser.org -> valgevenelane
bg.fmuser.org -> Bulgaaria
ca.fmuser.org -> katalaani keel
zh-CN.fmuser.org -> hiina (lihtsustatud)
zh-TW.fmuser.org -> Hiina (traditsiooniline)
hr.fmuser.org -> horvaadi keel
cs.fmuser.org -> tšehhi
da.fmuser.org -> taani keel
nl.fmuser.org -> Hollandi
et.fmuser.org -> eesti keel
tl.fmuser.org -> filipiinlane
fi.fmuser.org -> soome keel
fr.fmuser.org -> Prantsusmaa
gl.fmuser.org -> galicia keel
ka.fmuser.org -> gruusia keel
de.fmuser.org -> saksa keel
el.fmuser.org -> Kreeka
ht.fmuser.org -> Haiti kreool
iw.fmuser.org -> heebrea
hi.fmuser.org -> hindi
hu.fmuser.org -> Ungari
is.fmuser.org -> islandi keel
id.fmuser.org -> indoneesia keel
ga.fmuser.org -> iiri keel
it.fmuser.org -> Itaalia
ja.fmuser.org -> jaapani keel
ko.fmuser.org -> korea
lv.fmuser.org -> läti keel
lt.fmuser.org -> Leedu
mk.fmuser.org -> makedoonia
ms.fmuser.org -> malai
mt.fmuser.org -> malta keel
no.fmuser.org -> Norra
fa.fmuser.org -> pärsia keel
pl.fmuser.org -> poola keel
pt.fmuser.org -> portugali keel
ro.fmuser.org -> Rumeenia
ru.fmuser.org -> vene keel
sr.fmuser.org -> serbia
sk.fmuser.org -> slovaki keel
sl.fmuser.org -> Sloveenia
es.fmuser.org -> hispaania keel
sw.fmuser.org -> suahiili keel
sv.fmuser.org -> rootsi keel
th.fmuser.org -> Tai
tr.fmuser.org -> türgi keel
uk.fmuser.org -> ukrainlane
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> kõmri keel
yi.fmuser.org -> Jidiši
Ringhääling on jagatud kahte erinevat tüüpi: "Tavalised ülekanded" ja "Tellitud ülekanded". Tavaline ringhääling on täiesti asünkroonne ja seda saavad kõik saated vastuvõtjad vastu võtta korraga (loogiliselt). Sõnumi edastamise efektiivsus on suhteliselt kõrge, kuid puuduseks on see, et vastuvõtja ei saa töötlustulemust järgmisele vastuvõtjale edastada ja seda ei saa lõpetada. Ringhäälingukavatsuse levitamine; tellitud saade põhineb aga vastuvõtja poolt deklareeritud prioriteedil (deklareeritud kavatsusfiltri elemendi android: prioriteedi atribuudil, mida suurem on number, seda suurem on prioriteet, väärtusvahemik: -1000 kuni 1000 võimalik Helistage objekti IntentFilter setPriority () seadistamiseks) ja saaja saab saate kordamööda. Näiteks kui A tase on kõrgem kui B ja B tase on kõrgem kui C, siis edastatakse saade kõigepealt A-le, seejärel B-le ja lõpuks C-le. Kui A on saate edastanud, edastatakse see saab eetrisse andmeid salvestada. Kui saade saadetakse B-le, saab B saada ringhäälingust A salvestatud andmed.
Context.sendBroadcast ()
Saadetav on tavaline saade ja kõigil tellijatel on võimalus see hankida ja töödelda.
Context.sendOrderedBroadcast ()
Saatmine on korrapärane ülekanne. Süsteem täidab vastuvõtjaid ükshaaval vastavalt vastuvõtja deklareeritud prioriteedile. Eelmisel vastuvõtjal on õigus ülekanne katkestada (BroadcastReceiver.abortBroadcast ()). Kui ülekande lõpetab eelmine vastuvõtja, ei saa viimane vastuvõtjat enam ülekannet saada. Tellitud ülekande jaoks võib eelmine vastuvõtja töötlustulemuse salvestada ülekande kavatsusse ja seejärel edastada see järgmisele vastuvõtjale.
Ringhäälinguvastuvõtjat (BroadcastReceiver) kasutatakse ringhäälingukavatsuse vastuvõtmiseks ja ringhäälingukavatsuse saatmine realiseeritakse kutsudes Context.sendBroadcast () ja Context.sendOrderedBroadcast (). Tavaliselt võivad ülekandekavatsuse vastu võtta mitu selle kavatsusega liitunud ringhäälinguvastuvõtjat. See funktsioon sarnaneb JMS-i Topic sõnumivastuvõtjatega. Saate vastuvõtja meetodi rakendamine on järgmine:
Esimene samm: määrake ringhäälinguvastuvõtja, pärige BroadcastReceiver ja kirjutage meetod onReceive () ümber.
avalik klass IncomingSMSReceiver laiendabBroadcastReceiver {
@Orride public void onReceive (kontekstikontekst, Intentintent) {
}
}
2. samm: tellige levitamise huvipakkumine, on kaks tellimisviisi:
Esimene tüüp: tellimiseks kasutage koodi (dünaamiline tellimus)
IntentFilteri filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver vastuvõtja = newIncomingSMSReceiver ();
registerReceiver (vastuvõtja, filter);
Teine tüüp: tellige sõlm failis AndroidManifest.xml (staatiline tellimus)
Vaatame erinevust dünaamilise leviedastuse ja staatilise levitamise tellimuse vahel:
Staatilist tellimusringhäälingut nimetatakse ka: residentsaade. Kui teie rakendus on suletud, võib ringhäälingusõnumi olemasolu korral selle vastu võtta ka teie kirjutatud ringhäälinguvastuvõtja. Selle registreerimismeetod on teie rakenduses AndroidManifast. .xml tellimiseks.
Dünaamilist tellimusringhäälingut nimetatakse ka mitteresidentide ülekandeks. Kui rakendus lõpeb, kaob saade loomulikult. Näiteks tellite ülekande teenuses onCreate või onResume ja peate onDestory või onPause levitamise tellimuse tühistama. Vastasel juhul teatatakse erandist, nii et teie saate vastuvõtja on mitteresident.
Siin on veel üks detail, mis on kaks tellimisviisi. Ülekannete saatmisel peate tähelepanu pöörama: Dünaamiliseks registreerimiseks kasutatakse kaudse kavatsuse meetodit, seega peate ülekannete saatmisel kasutama kaudset kavatsust saatmiseks. , Vastasel juhul ei saa ringhäälingu vastuvõtja ülekannet vastu võtta. Pöörake sellele punktile tähelepanu. Staatiliselt tellides, kuna see on tellitud saidil AndroidMainfest.xml, on ülekannete saatmisel võimalik kasutada kuva Intent ja implicit Intent (muidugi on see ainult meie enda määratletud ringhäälinguvastuvõtjate jaoks), nii et igaks juhuks kasutame tavaliselt implicit Kavatsus ülekande saatmiseks.
Vaatame näidet:
Heitke pilk projekti struktuurile:
Heitke pilk staatilise tellimuse ülekandele:
pakett com.broadcast.demo;
import android.app.Activity;
impordi android.content.Intent;
import android.os.Bundle;
import android.view.View;
importida android.view.View.OnClickListener;
impordi android.widget.Button;
import com.example.androidbroadcastdemo.R;
/ **
* Staatiline tellimusülekanne
* @autor weijiang204321
*
*/
avalik klass StaticRegisterBroadcastActivity laiendab tegevust {
@Üle
kaitstud void onCreate (kimp salvestatudInstanceState) {
super.onCreate (salvestatudInstanceState);
setContentView (R.layout.activity_main);
Nupp btn = (nupp) findViewById (R.id.btn);
Et
btn.setOnClickListener (uus OnClickListener () {
@Üle
avalik void onClick (vaade v) {
// Kasutage ülekande registreerimiseks staatilist viisi, saate ülekande saatmiseks kasutada kuvamise kavatsust
Kavatsusülekanne = uus kavatsus ("com.broadcast.set.broadcast");
sendBroadcast (saade, null);
}
Et
});
}
Et
}
Telli teenus AndroidMainfest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package = "com.example.androidbroadcastdemo"
android: versionCode = "1"
android: versionName = "1.0">
<kasutab-sdk
android: minSdkVersion = "8"
android: targetSdkVersion = "18" />
<rakendus
android: allowBackup = "true"
android: ikoon = "@ drawable / ic_launcher"
android: label = "@ string / rakenduse_nimi"
android: theme = "@ style / AppTheme">
<tegevus
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Ärge muretsege praegu muu sisu pärast, nagu me sellest hiljem räägime, siin keskendume ainult staatiliste ülekannete registreerimisele
Heidame pilgu ülekande vastuvõtjale:
pakett com.broadcast.receiver;
import android.content.BroadcastReceiver;
importige android.content.Context;
impordi android.content.Intent;
import android.util.Log;
/ **
* Ringhäälingu vastuvõtja
* @autor weijiang204321
*
*/
avalik klass UnSortBroadcastReceiver laiendab BroadcastReceiver {
@Üle
public void onReceive (konteksti kontekst, kavatsuse kavatsus) {
Logi e ("Intent_Action:", intent.getAction () + "");
}
}
Ringhäälinguvastuvõtjas onReceive-meetodi loogika on toimingu sisu printimiseks väga lihtne.
Käivitage programm, tulemus on väga lihtne, siin pole pilti.
Vaatame dünaamilisi tellimusi:
pakett com.broadcast.demo;
import android.app.Activity;
impordi android.content.Intent;
impordi android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
importida android.view.View.OnClickListener;
impordi android.widget.Button;
import com.broadcast.receiver.UnSortBroadcastReceiver;
import com.example.androidbroadcastdemo.R;
/ **
* Kasutage dünaamilist viisi saate registreerimiseks
* @autor weijiang204321
*
*/
avalik klass DynamicRegisterBroadcastActivity laiendab tegevust {
Et
avalik staatiline lõplik string String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
kaitstud vastuvõtja UnSortBroadcastReceiver;
Et
@Üle
kaitstud void onCreate (kimp salvestatudInstanceState) {
super.onCreate (salvestatudInstanceState);
setContentView (R.layout.activity_main);
Nupp btn0 = (nupp) findViewById (R.id.btn);
btn0.setOnClickListener (uus OnClickListener () {
avalik void onClick (vaade v) {
// Saate saatmine
Kavatsus see = uus kavatsus (NEW_LIFEFORM_DETECTED);
sendBroadcast (see);
}
});
}
@Üle
kaitstud void onResume () {
super.onResume ();
// Registreeru eetrisse
IntentFilter counterActionFilter = uus IntentFilter (NEW_LIFEFORM_DETECTED);
vastuvõtja = uus UnSortBroadcastReceiver ();
registerReceiver (vastuvõtja, counterActionFilter);
}
@Üle
kaitstud void onPause () {
super.onPause ();
// Tühista ülekanne
unregisterReceiver (vastuvõtja);
}
}
Tellime siin onResume'is levitamise ja onPause'is levitamise tellimuse.
Muutke rakenduses AndroidMainfest.xml käivitatud Activity väärtuseks DynamicRegisterBroadcastActivity. Muu sisu ei vaja muutmist. Käivitage programm ja printige tulemus väga lihtne, nii et ma ei näe siin pilti.
Heidame pilgu tellitud ringhäälingule ja tellimata ringhäälingule
Oleme seda juba alguses maininud, heidame pilgu korrapäratule ringhäälingule:
Kõigepealt määratleme kaks ringhäälingu vastuvõtjat:
Esimene ringhäälinguvastuvõtja:
pakett com.broadcast.receiver;
import android.content.BroadcastReceiver;
importige android.content.Context;
impordi android.content.Intent;
import android.util.Log;
/ **
* Ringhäälinguvastuvõtja A
* @autor weijiang204321
*
*/
avalik klass SortBroadcastReceiverA laiendab BroadcastReceiver {
@Üle
public void onReceive (konteksti kontekst, kavatsuse kavatsus) {
Log.e ("Demo:", "ringhäälinguvastuvõtja A");
}
}
Teine ringhäälinguvastuvõtja:
pakett com.broadcast.receiver;
import android.content.BroadcastReceiver;
importige android.content.Context;
impordi android.content.Intent;
import android.util.Log;
/ **
* Ringhäälinguvastuvõtja B
* @autor weijiang204321
*
*/
avalik klass SortBroadcastReceiverB laiendab BroadcastReceiver {
@Üle
public void onReceive (konteksti kontekst, kavatsuse kavatsus) {
Log.e ("Demo:", "Saade B");
}
Et
Et
}
Telli ülekanne saidil AndroidMainfest.xml
operatsiooni tulemus:
Jooksutulemus on natuke kummaline. Miks on vastuvõtja B ees ja vastuvõtja A taga? Põhjus on see, et kui tellime leviedastuse saidil AndroidMainfest.xml, määrasime kavatsuste filtrisse android: prioriteedi atribuudi väärtuse. Mida suurem on väärtus, seda suurem on prioriteet. , Vastuvõtja B prioriteet on 1000, vastuvõtja A prioriteet on 999, nii et B võtab kõigepealt vastu ringhäälingu ja siis A võtab selle vastu, kuid vastuvõtja B ja vastuvõtja A vahel pole ühendust ja ei saa olla interaktsioone Jah, kuna see on korrastamata ülekanne ja asünkroonne, saame katse teha, lisades koodi B meetodile onReceiver:
abortBroadcast (); // Lõpeta selle saate edastamine
operatsiooni tulemus:
Näeme kiiret viga, see tähendab, et tellimata saade ei tohi ülekannet lõpetada. Tegelikult on lõpetamine kasutu, sest vastuvõtja A võtab saate ikkagi vastu.
Vaatame korrapärast ringhäälingut, koodi tuleb muuta:
Esimene on ülekande saatmisel:
Kavatsusülekanne = uus kavatsus ("com.broadcast.set.broadcast");
sendOrderedBroadcast (saade, null);
Seejärel lisage meetod vastuvõtja B edastuse lõpetamiseks:
abortBroadcast ();
Teist koodi pole vaja muuta, operatsiooni tulemus:
Seal on ainult vastuvõtja B, vastuvõtja A ei saa ülekannet vastu, kuna ringhääling lõpeb vastuvõtjas B ja järgnevad vastuvõtjad ei saa seda vastu võtta.
Muutke allolevat koodi:
Saaja B:
pakett com.broadcast.receiver;
import android.content.BroadcastReceiver;
importige android.content.Context;
impordi android.content.Intent;
import android.os.Bundle;
import android.util.Log;
/ **
* Ringhäälinguvastuvõtja B
* @autor weijiang204321
*
*/
avalik klass SortBroadcastReceiverB laiendab BroadcastReceiver {
@Üle
public void onReceive (konteksti kontekst, kavatsuse kavatsus) {
Log.e ("Demo:", "ringhäälingu vastuvõtja B");
Bundle bundle = uus komplekt ();
bundle.putString ("järgmine_võtja", "järgmine ringhäälinguvastuvõtja");
setResultExtras (kimp);
}
Et
}
Pärast seda, kui B on ülekande vastu võtnud, salvestab ta osa väärtusest ja edastab selle järgmisele vastuvõtjale.
Vastuvõtja A kood:
pakett com.broadcast.receive
Meie teise tootega:
Professionaalne FM-raadiojaama varustuspakett
|
||
|
Üllatuse saamiseks sisestage e-posti aadress
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikaans
sq.fmuser.org -> albaania keel
ar.fmuser.org -> araabia
hy.fmuser.org -> Armeenia
az.fmuser.org -> aserbaidžaanlane
eu.fmuser.org -> baski keel
be.fmuser.org -> valgevenelane
bg.fmuser.org -> Bulgaaria
ca.fmuser.org -> katalaani keel
zh-CN.fmuser.org -> hiina (lihtsustatud)
zh-TW.fmuser.org -> Hiina (traditsiooniline)
hr.fmuser.org -> horvaadi keel
cs.fmuser.org -> tšehhi
da.fmuser.org -> taani keel
nl.fmuser.org -> Hollandi
et.fmuser.org -> eesti keel
tl.fmuser.org -> filipiinlane
fi.fmuser.org -> soome keel
fr.fmuser.org -> Prantsusmaa
gl.fmuser.org -> galicia keel
ka.fmuser.org -> gruusia keel
de.fmuser.org -> saksa keel
el.fmuser.org -> Kreeka
ht.fmuser.org -> Haiti kreool
iw.fmuser.org -> heebrea
hi.fmuser.org -> hindi
hu.fmuser.org -> Ungari
is.fmuser.org -> islandi keel
id.fmuser.org -> indoneesia keel
ga.fmuser.org -> iiri keel
it.fmuser.org -> Itaalia
ja.fmuser.org -> jaapani keel
ko.fmuser.org -> korea
lv.fmuser.org -> läti keel
lt.fmuser.org -> Leedu
mk.fmuser.org -> makedoonia
ms.fmuser.org -> malai
mt.fmuser.org -> malta keel
no.fmuser.org -> Norra
fa.fmuser.org -> pärsia keel
pl.fmuser.org -> poola keel
pt.fmuser.org -> portugali keel
ro.fmuser.org -> Rumeenia
ru.fmuser.org -> vene keel
sr.fmuser.org -> serbia
sk.fmuser.org -> slovaki keel
sl.fmuser.org -> Sloveenia
es.fmuser.org -> hispaania keel
sw.fmuser.org -> suahiili keel
sv.fmuser.org -> rootsi keel
th.fmuser.org -> Tai
tr.fmuser.org -> türgi keel
uk.fmuser.org -> ukrainlane
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> kõmri keel
yi.fmuser.org -> Jidiši
FMUSER Wirless edastab videot ja heli lihtsamalt!
Saada sõnum
Aadress:
Nr 305 tuba HuiLan Building No.273 Huanpu Road Guangzhou, Hiina 510620
Kategooriad
Uudiskiri