FMUSER Wirless Menghantar Video Dan Audio Lebih Mudah!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Orang Afrika
sq.fmuser.org -> Bahasa Albania
ar.fmuser.org -> Bahasa Arab
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Belarus
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> Bahasa Catalan
zh-CN.fmuser.org -> Bahasa Cina (Ringkas)
zh-TW.fmuser.org -> Bahasa Cina (Tradisional)
hr.fmuser.org -> Bahasa Croatia
cs.fmuser.org -> Bahasa Czech
da.fmuser.org -> Denmark
nl.fmuser.org -> Belanda
et.fmuser.org -> Estonia
tl.fmuser.org -> Orang Filipina
fi.fmuser.org -> Bahasa Finland
fr.fmuser.org -> Bahasa Perancis
gl.fmuser.org -> orang Galicia
ka.fmuser.org -> Orang Georgia
de.fmuser.org -> Jerman
el.fmuser.org -> Greek
ht.fmuser.org -> Haitian Creole
iw.fmuser.org -> Bahasa Ibrani
hi.fmuser.org -> Bahasa Hindi
hu.fmuser.org -> Bahasa Hungary
is.fmuser.org -> Bahasa Iceland
id.fmuser.org -> Bahasa Indonesia
ga.fmuser.org -> Ireland
it.fmuser.org -> Bahasa Itali
ja.fmuser.org -> Jepun
ko.fmuser.org -> Bahasa Korea
lv.fmuser.org -> Bahasa Latvia
lt.fmuser.org -> Bahasa Lithuania
mk.fmuser.org -> orang Macedonia
ms.fmuser.org -> Bahasa Melayu
mt.fmuser.org -> Malta
no.fmuser.org -> Bahasa Norway
fa.fmuser.org -> Parsi
pl.fmuser.org -> Bahasa Poland
pt.fmuser.org -> Portugis
ro.fmuser.org -> Romania
ru.fmuser.org -> Rusia
sr.fmuser.org -> Bahasa Serbia
sk.fmuser.org -> Bahasa Slovak
sl.fmuser.org -> Bahasa Slovenia
es.fmuser.org -> Sepanyol
sw.fmuser.org -> Swahili
sv.fmuser.org -> Sweden
th.fmuser.org -> Thai
tr.fmuser.org -> Turki
uk.fmuser.org -> Ukraine
ur.fmuser.org -> Bahasa Urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> Wales
yi.fmuser.org -> Bahasa Yiddish
Penyiaran terbahagi kepada dua jenis: "Siaran biasa" dan "Siaran teratur". Siaran biasa benar-benar tidak segerak dan boleh diterima oleh semua penerima siaran pada masa yang sama (secara logik). Kecekapan penyampaian mesej agak tinggi, tetapi kelemahannya ialah penerima tidak dapat meneruskan hasil pemprosesan ke penerima berikutnya, dan tidak dapat dihentikan. Penyebaran Maksud Siaran; namun, siaran yang dipesan adalah berdasarkan keutamaan yang dinyatakan oleh penerima (diisytiharkan dalam android: atribut keutamaan elemen niat-penapis, semakin besar bilangannya, semakin tinggi keutamaan, julat nilai: -1000 hingga 1000. Ini juga mungkin Panggil setPriority () objek IntentFilter untuk ditetapkan), dan penerima akan menerima siaran secara bergantian. Sebagai contoh, jika tahap A lebih tinggi daripada B, dan tahap B lebih tinggi daripada C, maka siaran pertama dihantar ke A, kemudian ke B, dan akhirnya ke C. Setelah A mendapat siaran, ia dapat menyimpan data dalam siaran. Semasa siaran dihantar ke B, B dapat memperoleh data yang disimpan oleh A dari siaran.
Context.sendBroadcast ()
Apa yang dihantar adalah siaran biasa, dan semua pelanggan berpeluang memperoleh dan memprosesnya.
Context.sendOrderedBroadcast ()
Menghantar adalah siaran yang teratur. Sistem akan melaksanakan penerima satu persatu mengikut keutamaan yang dinyatakan oleh penerima. Penerima sebelumnya mempunyai hak untuk menghentikan siaran (BroadcastReceiver.abortBroadcast ()). Sekiranya siaran ditamatkan oleh penerima sebelumnya, yang terakhir Penerima tidak lagi dapat menerima siaran. Untuk siaran yang dipesan, penerima sebelumnya dapat menyimpan hasil pemprosesan dalam Intent siaran, dan kemudian menyebarkannya ke penerima seterusnya.
Penerima siaran (BroadcastReceiver) digunakan untuk menerima Intent siaran, dan pengiriman Intent siaran direalisasikan dengan memanggil Context.sendBroadcast () dan Context.sendOrderedBroadcast (). Biasanya Intent siaran boleh diterima oleh beberapa penerima siaran yang melanggan Intent ini. Ciri ini serupa dengan penerima mesej Topik di JMS. Untuk melaksanakan kaedah penerima siaran adalah seperti berikut:
Langkah pertama: tentukan penerima siaran, mewarisi BroadcastReceiver, dan menulis semula kaedah onReceive ().
kelas awam IncomeSMSReceiver meluasBroadcastReceiver {
@ Override public void onReceive (Kontekskonteks, Sengaja) {
}
}
Langkah 2: Langgan siaran Maksud minat, terdapat dua kaedah langganan:
Jenis pertama: gunakan kod untuk melanggan (langganan dinamik)
IntentFilter filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
PenerimaSMSReceiver masuk = baruInssmSReceiver yang baru ();
registerReceiver (penerima, penapis);
Jenis kedua: Langgan di simpul dalam fail AndroidManifest.xml (langganan statik)
Mari kita perhatikan perbezaan antara langganan siaran dinamik dan langganan siaran statik:
Siaran langganan statik juga disebut: siaran penduduk. Apabila aplikasi anda ditutup, jika ada mesej siaran, penerima siaran yang anda tulis juga dapat menerimanya. Kaedah pendaftarannya adalah AndroidManifast dalam aplikasi anda. .xml untuk langganan.
Siaran langganan dinamik juga dipanggil: siaran bukan pemastautin. Apabila aplikasi berakhir, siaran secara semula jadi akan hilang. Sebagai contoh, anda melanggan siaran di onCreate atau onResume dalam aktiviti tersebut, dan anda mesti membatalkan langganan siaran di onDestory atau onPause. Jika tidak, pengecualian akan dilaporkan, jadi penerima siaran anda adalah bukan pemastautin.
Terdapat satu lagi perincian di sini iaitu dua kaedah langganan. Semasa menghantar siaran, anda perlu memperhatikan: Kaedah niat tersirat digunakan untuk pendaftaran dinamis, jadi anda perlu menggunakan maksud tersirat untuk mengirim ketika mengirim siaran. Jika tidak, penerima siaran tidak akan dapat menerima siaran tersebut. Perhatikan perkara ini. Tetapi ketika melanggan secara statik, kerana dilanggan di AndroidMainfest.xml, ada kemungkinan menggunakan Intent paparan dan Intent tersirat ketika mengirim siaran (tentu saja ini hanya untuk penerima siaran yang ditentukan oleh kita sendiri), jadi sekiranya berlaku, kita biasanya menggunakan implisit Niat untuk menghantar siaran.
Mari lihat contoh:
Lihat struktur projek:
Lihat siaran langganan statik:
pakej com.broadcast.demo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.example.androidbroadcastdemo.R;
/ **
* Siaran langganan statik
* @pengarang weijiang204321
*
*/
kelas awam StaticRegisterBroadcastActivity memperluaskan Aktiviti {
@Selamat
dilindungi void onCreate (Bundle disimpanInstanceState) {
super.onCreate (disimpanInstanceState);
setContentView (R.layout.activity_main);
Butang btn = (Butang) findViewById (R.id.btn);
Untuk
btn.setOnClickListener (OnClickListener baru () {
@Selamat
kekosongan awam onClick (Lihat v) {
// Gunakan cara statis untuk mendaftarkan siaran, anda dapat menggunakan maksud tampilan untuk mengirim siaran
Siaran niat = Niat baru ("com.broadcast.set.broadcast");
sendBroadcast (siaran, null);
}
Untuk
});
}
Untuk
}
Langgan di AndroidMainfest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
pakej = "com.example.androidbroadcastdemo"
android: versionCode = "1"
android: versionName = "1.0">
<uses-sdk
android: minSdkVersion = "8"
android: targetSdkVersion = "18" />
<aplikasi
android: allowBackup = "benar"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<aktiviti
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Jangan bimbang tentang kandungan lain buat masa ini, kerana kita akan membincangkannya nanti, di sini kita hanya menumpukan pada pendaftaran siaran statik
Mari lihat penerima siaran:
pakej com.broadcast.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/ **
* Penerima siaran
* @pengarang weijiang204321
*
*/
kelas awam UnSortBroadcastReceiver memperluas BroadcastReceiver {
@Selamat
kekosongan awam onReceive (Konteks konteks, maksud niat) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
Logik dalam kaedah onReceive dalam penerima siaran sangat mudah, iaitu mencetak kandungan Tindakan.
Jalankan program, hasilnya sangat mudah, ini bukan gambarnya.
Mari lihat langganan dinamik:
pakej com.broadcast.demo;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import com.broadcast.receiver.UnsortBroadcastReceiver;
import com.example.androidbroadcastdemo.R;
/ **
* Gunakan cara dinamik untuk mendaftar siaran
* @pengarang weijiang204321
*
*/
kelas awam DynamicRegisterBroadcastActivity meluaskan Aktiviti {
Untuk
rentetan akhir statik awam NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
penerima UnSortBroadcastReceiver yang dilindungi;
Untuk
@Selamat
dilindungi void onCreate (Bundle disimpanInstanceState) {
super.onCreate (disimpanInstanceState);
setContentView (R.layout.activity_main);
Butang btn0 = (Butang) cariViewById (R.id.btn);
btn0.setOnClickListener (OnClickListener baru () {
kekosongan awam onClick (Lihat v) {
// Hantar siaran
Maksudnya = Niat baru (NEW_LIFEFORM_DETECTED);
sendBroadcast (itu);
}
});
}
@Selamat
kekosongan dilindungi onResume () {
super.onResume ();
// Daftar untuk siaran
IntentFilter counterActionFilter = IntentFilter baru (NEW_LIFEFORM_DETECTED);
penerima = UnSortBroadcastReceiver baru ();
registerReceiver (penerima, counterActionFilter);
}
@Selamat
tidak sah dilindungiPause () {
super.onPause ();
// Batalkan siaran
unregisterReceiver (penerima);
}
}
Di sini kita melanggan siaran di onResume, dan berhenti berlangganan penyiaran di onPause.
Tukar Aktiviti yang dilancarkan ke DynamicRegisterBroadcastActivity di AndroidMainfest.xml. Kandungan lain tidak perlu diubah suai. Jalankan program dan cetak hasilnya sangat mudah, jadi saya tidak akan melihat gambarnya di sini.
Mari kita lihat penyiaran yang diperintahkan dan penyiaran yang tidak tersusun
Kami telah menyebutnya pada awalnya, mari kita lihat penyiaran yang tidak teratur:
Mula-mula kita menentukan dua penerima siaran:
Penerima siaran pertama:
pakej com.broadcast.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/ **
* Penerima siaran A
* @pengarang weijiang204321
*
*/
kelas awam SortBroadcastReceiverA meluaskan BroadcastReceiver {
@Selamat
kekosongan awam onReceive (Konteks konteks, maksud niat) {
Log.e ("Demo:", "penerima siaran A");
}
}
Penerima siaran kedua:
pakej com.broadcast.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/ **
* Penerima siaran B
* @pengarang weijiang204321
*
*/
kelas awam SortBroadcastReceiverB meluaskan BroadcastReceiver {
@Selamat
kekosongan awam onReceive (Konteks konteks, maksud niat) {
Log.e ("Demo:", "Siaran B");
}
Untuk
Untuk
}
Langgan siaran di AndroidMainfest.xml
hasil operasi:
Hasil berjalan agak pelik. Mengapa penerima B di depan dan penerima A di belakang? Sebabnya ialah apabila kita melanggan siaran di AndroidMainfest.xml, kita menetapkan nilai atribut android: priority di filter-intent. Semakin besar nilainya, semakin tinggi keutamaannya. , Keutamaan penerima B adalah 1000, keutamaan penerima A adalah 999, jadi B menerima siaran terlebih dahulu, dan kemudian A menerimanya, tetapi tidak ada hubungan antara penerima B dan penerima A, dan tidak ada interaksi Ya, kerana ini adalah siaran di luar pesanan dan tidak segerak, kita dapat melakukan eksperimen dengan menambahkan kod ke kaedah onReceiver di B:
abortBroadcast (); // Tamatkan penghantaran siaran ini
hasil operasi:
Kita dapat melihat kesalahan segera, iaitu siaran yang tidak dipesan tidak dibenarkan menghentikan siaran. Sebenarnya, penamatan tidak berguna, kerana penerima A masih menerima siaran.
Mari kita lihat penyiaran yang teratur, kodnya perlu diubah suai:
Yang pertama adalah semasa menghantar siaran:
Siaran niat = Niat baru ("com.broadcast.set.broadcast");
sendOrderedBroadcast (siaran, null);
Kemudian tambahkan kaedah untuk menghentikan siaran di penerima B:
abortBroadcast ();
Kod lain tidak perlu diubah suai, hasil operasi:
Hanya ada penerima B, penerima A tidak menerima siaran, kerana siaran ditamatkan di penerima B, dan penerima berikutnya tidak dapat menerimanya.
Ubah kod di bawah:
Penerima B:
pakej com.broadcast.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
/ **
* Penerima siaran B
* @pengarang weijiang204321
*
*/
kelas awam SortBroadcastReceiverB meluaskan BroadcastReceiver {
@Selamat
kekosongan awam onReceive (Konteks konteks, maksud niat) {
Log.e ("Demo:", "penerima siaran B");
Bundle bundle = Bundle baru ();
bundle.putString ("next_receiver", "penerima siaran seterusnya");
setResultExtras (bundle);
}
Untuk
}
Setelah B menerima siaran, ia menyimpan beberapa nilai dan meneruskannya ke penerima seterusnya.
Kod Penerima A:
pakej com.broadcast.receive
produk kami yang lain:
Pakej Peralatan Stesen Radio FM Profesional
|
||
|
Masukkan e-mel untuk mendapatkan kejutan
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Orang Afrika
sq.fmuser.org -> Bahasa Albania
ar.fmuser.org -> Bahasa Arab
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Belarus
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> Bahasa Catalan
zh-CN.fmuser.org -> Bahasa Cina (Ringkas)
zh-TW.fmuser.org -> Bahasa Cina (Tradisional)
hr.fmuser.org -> Bahasa Croatia
cs.fmuser.org -> Bahasa Czech
da.fmuser.org -> Denmark
nl.fmuser.org -> Belanda
et.fmuser.org -> Estonia
tl.fmuser.org -> Orang Filipina
fi.fmuser.org -> Bahasa Finland
fr.fmuser.org -> Bahasa Perancis
gl.fmuser.org -> orang Galicia
ka.fmuser.org -> Orang Georgia
de.fmuser.org -> Jerman
el.fmuser.org -> Greek
ht.fmuser.org -> Haitian Creole
iw.fmuser.org -> Bahasa Ibrani
hi.fmuser.org -> Bahasa Hindi
hu.fmuser.org -> Bahasa Hungary
is.fmuser.org -> Bahasa Iceland
id.fmuser.org -> Bahasa Indonesia
ga.fmuser.org -> Ireland
it.fmuser.org -> Bahasa Itali
ja.fmuser.org -> Jepun
ko.fmuser.org -> Bahasa Korea
lv.fmuser.org -> Bahasa Latvia
lt.fmuser.org -> Bahasa Lithuania
mk.fmuser.org -> orang Macedonia
ms.fmuser.org -> Bahasa Melayu
mt.fmuser.org -> Malta
no.fmuser.org -> Bahasa Norway
fa.fmuser.org -> Parsi
pl.fmuser.org -> Bahasa Poland
pt.fmuser.org -> Portugis
ro.fmuser.org -> Romania
ru.fmuser.org -> Rusia
sr.fmuser.org -> Bahasa Serbia
sk.fmuser.org -> Bahasa Slovak
sl.fmuser.org -> Bahasa Slovenia
es.fmuser.org -> Sepanyol
sw.fmuser.org -> Swahili
sv.fmuser.org -> Sweden
th.fmuser.org -> Thai
tr.fmuser.org -> Turki
uk.fmuser.org -> Ukraine
ur.fmuser.org -> Bahasa Urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> Wales
yi.fmuser.org -> Bahasa Yiddish
FMUSER Wirless Menghantar Video Dan Audio Lebih Mudah!
Hubungi Kami
alamat:
No.305 Bilik HuiLan Bangunan No.273 Huanpu Road Guangzhou China 510620
Kategori
Buletin