FMUSER Truyền video và âm thanh không dây dễ dàng hơn!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Người Afrikaans
sq.fmuser.org -> Tiếng Albania
ar.fmuser.org -> tiếng Ả Rập
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Tiếng Belarus
bg.fmuser.org -> Tiếng Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Tiếng Trung (Giản thể)
zh-TW.fmuser.org -> Trung Quốc (truyền thống)
hr.fmuser.org -> Tiếng Croatia
cs.fmuser.org -> Tiếng Séc
da.fmuser.org -> Đan Mạch
nl.fmuser.org -> Hà Lan
et.fmuser.org -> Tiếng Estonia
tl.fmuser.org -> Phi Luật Tân
fi.fmuser.org -> Phần Lan
fr.fmuser.org -> Pháp
gl.fmuser.org -> Galicia
ka.fmuser.org -> tiếng Georgia
de.fmuser.org -> Đức
el.fmuser.org -> Hy Lạp
ht.fmuser.org -> Tiếng Creole của Haiti
iw.fmuser.org -> Tiếng Do Thái
hi.fmuser.org -> Tiếng Hindi
hu.fmuser.org -> Hungary
is.fmuser.org -> tiếng Iceland
id.fmuser.org -> tiếng Indonesia
ga.fmuser.org -> Ailen
it.fmuser.org -> Ý
ja.fmuser.org -> Nhật Bản
ko.fmuser.org -> Hàn Quốc
lv.fmuser.org -> Tiếng Latvia
lt.fmuser.org -> Tiếng Litva
mk.fmuser.org -> Người Macedonian
ms.fmuser.org -> Mã Lai
mt.fmuser.org -> Maltese
no.fmuser.org -> Na Uy
fa.fmuser.org -> tiếng Ba Tư
pl.fmuser.org -> Tiếng Ba Lan
pt.fmuser.org -> tiếng Bồ Đào Nha
ro.fmuser.org -> Rumani
ru.fmuser.org -> tiếng Nga
sr.fmuser.org -> Tiếng Serbia
sk.fmuser.org -> Tiếng Slovak
sl.fmuser.org -> Tiếng Slovenia
es.fmuser.org -> tiếng Tây Ban Nha
sw.fmuser.org -> Tiếng Swahili
sv.fmuser.org -> Thụy Điển
th.fmuser.org -> Thái
tr.fmuser.org -> Thổ Nhĩ Kỳ
uk.fmuser.org -> Tiếng Ukraina
ur.fmuser.org -> Tiếng Urdu
vi.fmuser.org -> Tiếng việt
cy.fmuser.org -> tiếng Wales
yi.fmuser.org -> Yiddish
Phát sóng được chia thành hai loại khác nhau: "Chương trình phát sóng bình thường" và "Chương trình phát sóng có thứ tự". Quảng bá thông thường là hoàn toàn không đồng bộ và có thể được nhận bởi tất cả các máy thu quảng bá cùng một lúc (về mặt logic). Hiệu quả phát bản tin tương đối cao nhưng có nhược điểm là máy thu không thể chuyển kết quả xử lý cho máy thu tiếp theo, không thể kết thúc. Broadcast Intent tuyên truyền; tuy nhiên, quảng bá có thứ tự dựa trên mức độ ưu tiên được khai báo bởi người nhận (được khai báo trong thuộc tính android: priority của phần tử bộ lọc ý định, số càng lớn, mức độ ưu tiên càng cao, phạm vi giá trị: -1000 đến 1000. Nó cũng có thể Gọi setPutor () của đối tượng IntentFilter để thiết lập), và người nhận lần lượt nhận được quảng bá. Ví dụ, nếu mức của A cao hơn mức của B và mức của B cao hơn mức C, thì chương trình phát sóng đầu tiên được truyền đến A, sau đó đến B và cuối cùng là C. Sau khi A nhận được chương trình phát sóng, nó có thể lưu trữ dữ liệu trong chương trình phát sóng. Khi chương trình phát sóng được gửi đến B, B có thể lấy dữ liệu được lưu trữ bởi A từ chương trình phát sóng.
Context.sendBroadcast ()
Những gì được gửi là một chương trình phát sóng thông thường và tất cả người đăng ký đều có cơ hội lấy và xử lý nó.
Context.sendOrderedBroadcast ()
Gửi là một chương trình phát sóng có trật tự. Hệ thống sẽ thực hiện lần lượt các đầu thu theo mức độ ưu tiên mà đầu thu đã khai báo. Người nhận trước có quyền kết thúc chương trình phát sóng (BroadcastReceiver.abortBroadcast ()). Nếu chương trình phát sóng bị kết thúc bởi bộ thu trước, bộ thu sau đó không còn có thể thu được chương trình phát sóng nữa. Đối với quảng bá có thứ tự, máy thu trước có thể lưu trữ kết quả xử lý trong Intent quảng bá, rồi chuyển nó cho máy thu tiếp theo.
Bộ thu phát sóng (BroadcastReceiver) được sử dụng để nhận Ý định quảng bá và việc gửi Ý định quảng bá được thực hiện bằng cách gọi Context.sendBroadcast () và Context.sendOrderedBroadcast (). Thông thường, một Intent quảng bá có thể được nhận bởi nhiều máy thu quảng bá đã đăng ký Intent này. Tính năng này tương tự như bộ nhận tin nhắn Chủ đề trong JMS. Để thực hiện một phương pháp thu quảng bá như sau:
Bước đầu tiên: xác định bộ thu phát sóng, kế thừa BroadcastReceiver và viết lại phương thức onReceive ().
public class IncomingSMSReceiver expandBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Bước 2: Đăng ký chương trình phát sóng Ý định quan tâm, có hai phương thức đăng ký:
Loại đầu tiên: sử dụng mã để đăng ký (đăng ký động)
Bộ lọc IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
Bộ thu IncomingSMSReceiver = newIncomingSMSReceiver ();
registerReceiver (bộ thu, bộ lọc);
Loại thứ hai: Đăng ký trong nút trong tệp AndroidManifest.xml (đăng ký tĩnh)
Hãy cùng xem xét sự khác biệt giữa đăng ký phát sóng động và đăng ký phát sóng tĩnh:
Quảng bá thuê bao tĩnh còn được gọi là: quảng bá thường trú. Khi ứng dụng của bạn bị đóng, nếu có tin nhắn quảng bá, bộ thu phát sóng bạn đã viết cũng có thể nhận được tin nhắn đó. Phương thức đăng ký của nó là AndroidManifast trong ứng dụng của bạn. .xml để đăng ký.
Quảng bá thuê bao động còn được gọi là: quảng bá không thường trú. Khi ứng dụng kết thúc, chương trình phát sóng sẽ tự nhiên biến mất. Ví dụ: bạn đăng ký chương trình phát sóng trong onCreate hoặc onResume trong hoạt động và bạn phải hủy đăng ký chương trình phát sóng trong onDestory hoặc onPause. Nếu không, một ngoại lệ sẽ được báo cáo, vì vậy bộ thu phát sóng của bạn sẽ không phải là người thường trú.
Có một chi tiết ở đây là hai phương thức đăng ký. Khi gửi các chương trình phát sóng, bạn cần chú ý: Phương thức ý định ngầm được sử dụng để đăng ký động, vì vậy bạn cần sử dụng ý định ngầm để gửi khi gửi chương trình phát sóng. , Nếu không bộ thu phát sóng sẽ không thể thu được chương trình phát sóng. Hãy chú ý đến điểm này. Nhưng khi đăng ký tĩnh, vì nó được đăng ký trong AndroidMainfest.xml, nên có thể sử dụng Intent hiển thị và Intent ngầm định khi gửi các chương trình phát sóng (tất nhiên điều này chỉ dành cho các bộ thu phát sóng do chính chúng tôi xác định), vì vậy đề phòng, chúng tôi thường sử dụng Ý định gửi chương trình phát sóng.
Hãy xem một ví dụ:
Hãy xem cấu trúc dự án:
Hãy xem chương trình phát sóng đăng ký tĩnh:
gói com.broadcast.demo;
nhập android.app.Activity;
nhập android.content.Intent;
nhập android.os.Bundle;
nhập android.view.View;
nhập android.view.View.OnClickListener;
nhập android.widget.Button;
nhập com.example.androidbroadcastdemo.R;
/ **
* Phát sóng đăng ký tĩnh
* @tác giả weijiang204321
*
*/
public class StaticRegisterBroadcastActivity mở rộng Hoạt động {
@Ghi đè
void onCreate được bảo vệ (Gói đã lưuInstanceState) {
super.onCreate (saveInstanceState);
setContentView (R.layout.activity_main);
Nút btn = (Nút) findViewById (R.id.btn);
Đến
btn.setOnClickListener (OnClickListener mới () {
@Ghi đè
public void onClick (View v) {
// Sử dụng một cách tĩnh để đăng ký chương trình phát sóng, bạn có thể sử dụng mục đích hiển thị để gửi chương trình phát sóng
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendBroadcast (phát sóng, null);
}
Đến
});
}
Đến
}
Đăng ký trong AndroidMainfest.xml:
<tệp kê khai xmlns:android="http://schemas.android.com/apk/res/android"
package = "com.example.androidbroadcastdemo"
android: versionCode = "1"
android: versionName = "1.0">
<sử dụng-sdk
android: minSdkVersion = "8"
android: targetSdkVersion = "18" />
<ứng dụng
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<hoạt động
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Đừng lo lắng về nội dung khác bây giờ, vì chúng ta sẽ nói ở phần sau, ở đây chúng ta chỉ tập trung vào việc đăng ký các chương trình phát sóng tĩnh
Chúng ta hãy nhìn vào máy thu phát sóng:
gói com.broadcast.receiver;
nhập android.content.BroadcastReceiver;
nhập android.content.Context;
nhập android.content.Intent;
nhập android.util.Log;
/ **
* Phát sóng thu
* @tác giả weijiang204321
*
*/
public class UnSortBroadcastReceiver mở rộng BroadcastReceiver {
@Ghi đè
public void onReceive (Bối cảnh ngữ cảnh, Mục đích ý định) {
Log.e ("Intent_Action:", ý định.getAction () + "");
}
}
Logic trong phương thức onReceive trong bộ thu phát sóng rất đơn giản, đó là in nội dung của Action.
Chạy chương trình, kết quả rất đơn giản, đây không phải là hình.
Hãy xem xét các đăng ký động:
gói com.broadcast.demo;
nhập android.app.Activity;
nhập android.content.Intent;
nhập android.content.IntentFilter;
nhập android.os.Bundle;
nhập android.view.View;
nhập android.view.View.OnClickListener;
nhập android.widget.Button;
nhập com.broadcast.receiver.UnSortBroadcastReceiver;
nhập com.example.androidbroadcastdemo.R;
/ **
* Sử dụng cách động để đăng ký chương trình phát sóng
* @tác giả weijiang204321
*
*/
public class DynamicRegisterBroadcastActivity mở rộng Hoạt động {
Đến
public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
bộ thu UnSortBroadcastReceiver được bảo vệ;
Đến
@Ghi đè
void onCreate được bảo vệ (Gói đã lưuInstanceState) {
super.onCreate (saveInstanceState);
setContentView (R.layout.activity_main);
Nút btn0 = (Nút) findViewById (R.id.btn);
btn0.setOnClickListener (OnClickListener mới () {
public void onClick (View v) {
// Gửi chương trình phát sóng
Intent it = new Intent (NEW_LIFEFORM_DETECTED);
sendBroadcast (nó);
}
});
}
@Ghi đè
void onResume được bảo vệ () {
super.onResume ();
// Đăng ký phát sóng
IntentFilter counterActionFilter = new IntentFilter (NEW_LIFEFORM_DETECTED);
receiver = new UnSortBroadcastReceiver ();
registerReceiver (máy thu, counterActionFilter);
}
@Ghi đè
được bảo vệ void onPause () {
super.onPause ();
// Huỷ chương trình phát sóng
unregisterReceiver (người nhận);
}
}
Ở đây chúng tôi đang đăng ký phát sóng trong onResume và hủy đăng ký phát sóng trong onPause.
Thay đổi Hoạt động đã khởi chạy thành DynamicRegisterBroadcastActivity trong AndroidMainfest.xml. Các nội dung khác không cần phải sửa đổi. Chạy chương trình và in ra kết quả rất đơn giản nên mình sẽ không thấy hình ở đây.
Chúng ta hãy xem xét phát sóng có thứ tự và phát sóng không theo thứ tự
Chúng tôi đã đề cập đến vấn đề này ngay từ đầu, hãy xem quá trình phát sóng bị rối loạn:
Đầu tiên, chúng tôi xác định hai bộ thu phát sóng:
Máy thu phát sóng đầu tiên:
gói com.broadcast.receiver;
nhập android.content.BroadcastReceiver;
nhập android.content.Context;
nhập android.content.Intent;
nhập android.util.Log;
/ **
* Máy thu phát sóng A
* @tác giả weijiang204321
*
*/
public class SortBroadcastReceiverA mở rộng BroadcastReceiver {
@Ghi đè
public void onReceive (Bối cảnh ngữ cảnh, Mục đích ý định) {
Log.e ("Demo:", "máy thu phát sóng A");
}
}
Máy thu phát sóng thứ hai:
gói com.broadcast.receiver;
nhập android.content.BroadcastReceiver;
nhập android.content.Context;
nhập android.content.Intent;
nhập android.util.Log;
/ **
* Máy thu phát sóng B
* @tác giả weijiang204321
*
*/
public class SortBroadcastReceiverB mở rộng BroadcastReceiver {
@Ghi đè
public void onReceive (Bối cảnh ngữ cảnh, Mục đích ý định) {
Log.e ("Demo:", "Broadcast B");
}
Đến
Đến
}
Đăng ký phát trong AndroidMainfest.xml
kết quả hoạt động:
Kết quả chạy là một chút kỳ lạ. Tại sao máy thu B ở phía trước và máy thu A ở phía sau? Lý do là khi chúng tôi đăng ký chương trình phát sóng trong AndroidMainfest.xml, chúng tôi đã đặt giá trị thuộc tính android: priority trong bộ lọc ý định. Giá trị càng lớn thì mức độ ưu tiên càng cao. , Mức độ ưu tiên của máy thu B là 1000, mức độ ưu tiên của máy thu A là 999, vì vậy B nhận quảng cáo trước, sau đó A nhận nó, nhưng không có kết nối giữa máy thu B và máy thu A và không thể có tương tác. bởi vì đây là một chương trình truyền phát không theo thứ tự và không đồng bộ, chúng tôi có thể thực hiện một thử nghiệm bằng cách thêm mã vào phương thức onReceiver trong B:
abortBroadcast (); // Chấm dứt việc truyền chương trình phát sóng này
kết quả hoạt động:
Chúng ta có thể thấy lỗi nhắc, đó là phát sóng không theo thứ tự không được phép kết thúc phát sóng. Trên thực tế, việc chấm dứt là vô ích, vì máy thu A vẫn nhận được chương trình phát sóng.
Hãy xem truyền phát có thứ tự, mã cần được sửa đổi:
Đầu tiên là khi gửi một chương trình phát sóng:
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendOrderedBroadcast (phát sóng, null);
Sau đó, thêm một phương thức để kết thúc phát sóng trong máy thu B:
abortBroadcast ();
Mã khác không cần phải sửa đổi, kết quả hoạt động:
Chỉ có máy thu B, máy thu A không nhận được chương trình phát sóng, vì quá trình phát sóng bị chấm dứt ở máy thu B và các máy thu tiếp theo không thể nhận được.
Sửa đổi mã bên dưới:
Người nhận B:
gói com.broadcast.receiver;
nhập android.content.BroadcastReceiver;
nhập android.content.Context;
nhập android.content.Intent;
nhập android.os.Bundle;
nhập android.util.Log;
/ **
* Máy thu phát sóng B
* @tác giả weijiang204321
*
*/
public class SortBroadcastReceiverB mở rộng BroadcastReceiver {
@Ghi đè
public void onReceive (Bối cảnh ngữ cảnh, Mục đích ý định) {
Log.e ("Demo:", "máy thu phát sóng B");
Gói bó = new Bundle ();
bó.putString ("next_receiver", "máy thu phát tiếp theo");
setResultExtras (gói);
}
Đến
}
Sau khi B nhận được chương trình phát sóng, nó sẽ lưu trữ một số giá trị và chuyển cho người nhận tiếp theo.
Mã của người nhận A:
gói com.broadcast.receive
sản phẩm khác của chúng tôi:
Gói thiết bị đài FM chuyên nghiệp
|
||
|
Nhập email để nhận bất ngờ
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Người Afrikaans
sq.fmuser.org -> Tiếng Albania
ar.fmuser.org -> tiếng Ả Rập
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Tiếng Belarus
bg.fmuser.org -> Tiếng Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Tiếng Trung (Giản thể)
zh-TW.fmuser.org -> Trung Quốc (truyền thống)
hr.fmuser.org -> Tiếng Croatia
cs.fmuser.org -> Tiếng Séc
da.fmuser.org -> Đan Mạch
nl.fmuser.org -> Hà Lan
et.fmuser.org -> Tiếng Estonia
tl.fmuser.org -> Phi Luật Tân
fi.fmuser.org -> Phần Lan
fr.fmuser.org -> Pháp
gl.fmuser.org -> Galicia
ka.fmuser.org -> tiếng Georgia
de.fmuser.org -> Đức
el.fmuser.org -> Hy Lạp
ht.fmuser.org -> Tiếng Creole của Haiti
iw.fmuser.org -> Tiếng Do Thái
hi.fmuser.org -> Tiếng Hindi
hu.fmuser.org -> Hungary
is.fmuser.org -> tiếng Iceland
id.fmuser.org -> tiếng Indonesia
ga.fmuser.org -> Ailen
it.fmuser.org -> Ý
ja.fmuser.org -> Nhật Bản
ko.fmuser.org -> Hàn Quốc
lv.fmuser.org -> Tiếng Latvia
lt.fmuser.org -> Tiếng Litva
mk.fmuser.org -> Người Macedonian
ms.fmuser.org -> Mã Lai
mt.fmuser.org -> Maltese
no.fmuser.org -> Na Uy
fa.fmuser.org -> tiếng Ba Tư
pl.fmuser.org -> Tiếng Ba Lan
pt.fmuser.org -> tiếng Bồ Đào Nha
ro.fmuser.org -> Rumani
ru.fmuser.org -> tiếng Nga
sr.fmuser.org -> Tiếng Serbia
sk.fmuser.org -> Tiếng Slovak
sl.fmuser.org -> Tiếng Slovenia
es.fmuser.org -> tiếng Tây Ban Nha
sw.fmuser.org -> Tiếng Swahili
sv.fmuser.org -> Thụy Điển
th.fmuser.org -> Thái
tr.fmuser.org -> Thổ Nhĩ Kỳ
uk.fmuser.org -> Tiếng Ukraina
ur.fmuser.org -> Tiếng Urdu
vi.fmuser.org -> Tiếng việt
cy.fmuser.org -> tiếng Wales
yi.fmuser.org -> Yiddish
FMUSER Truyền video và âm thanh không dây dễ dàng hơn!
Liên hệ
Địa Chỉ:
Phòng số 305 Tòa nhà HuiLan Số 273 đường Huanpu Quảng Châu Trung Quốc 510620
Categories
Đăng ký bản tin