android 广播的方法
2016-08-17 18:15
435 查看
依赖包类:
import android.content.Context;
import android.content.BroadcastReceiver;
import android.os.Bundle;
import android.content.Intent;
import android.app.Activity;
发送广播,实现实例如下:
{
public static final String DVB_CHANNEL_SEARCH_BROADCAST_ACTION=
"android.com.dvbbase.action.DVB_CHANNEL_SEARCH_BROADCAST_ACTION";
public static final String DVB_CHANNEL_SEARCH_BROADCAST_EXTR_CMD =
"dvb search Broadcast Commod";
public static final String DVB_CHANNEL_SEARCH_BROADCAST_EXTR_PARAM =
"dvb search Broadcast Parameter";
public static final String DVB_CHANNEL_SEARCH_DB_CLEARN = "clearn";
public static final String DVB_CHANNEL_SEARCH_BROADCAST_MSG_START = "search start";
public static final String DVB_CHANNEL_SEARCH_BROADCAST_MSG_FINISH = "search finish";
private
void SendBroadcastMassage(int cmd)
{
String broadcast_cmd = "";
String broadcast_param = "";
Intent intent = new Intent();
intent.setAction(DVB_CHANNEL_SEARCH_BROADCAST_ACTION);
switch (cmd) {
case BROADCAST_MSG_SEARCH_START:
broadcast_cmd = DVB_CHANNEL_SEARCH_BROADCAST_MSG_START;
broadcast_param = mTvInputId;
break;
case BROADCAST_MSG_SEARCH_FINISH:
{
int chNum= 0;
broadcast_cmd = DVB_CHANNEL_SEARCH_BROADCAST_MSG_FINISH;
if (mdbImpleHandle != null) {
chNum = mdbImpleHandle.getChannelNumFormDB();
}
if((nitScan == 1) && (chNum > 0))
{
broadcast_param = DVB_CHANNEL_SEARCH_DB_CLEARN;
}
else
{
broadcast_param = "";
}
}
break;
default:
broadcast_cmd = "";
broadcast_param = "";
break;
}
intent.putExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_CMD, broadcast_cmd);
intent.putExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_PARAM, broadcast_param);
Log.i(TAG, "ChannelScanImpl send broadcast:" + broadcast_cmd + "\n");
this.sendBroadcast(intent);
}
}
接收广播的方法:
{
private
BroadcastReceiver mBroadcastReceiver = null;
mBroadcastReceiver = new EpgDbImplIntentReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(DvbBase.DVB_CHANNEL_SEARCH_BROADCAST_ACTION);
mcontext.registerReceiver(mBroadcastReceiver, intentFilter);
private
class ChannelDbImplIntentReceiver extends BroadcastReceiver
{
@Override public void onReceive(Context context, Intent intent)
{
Message newmsg = null;
String msgParam;
String action = intent.getAction();
Log.i(TAG, "ChannelDbImpl Intent Receiver action = " + action);
if (action.equals(DVB_CHANNEL_SEARCH_BROADCAST_ACTION)) {
String msg = intent.getStringExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_CMD);
if (Objects.equals(msg, DVB_CHANNEL_SEARCH_BROADCAST_MSG_START)) {
msgParam = intent.getStringExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_PARAM);
Log.i(TAG, "@@@#### TvInput boroadcase receiver dvb search start;tvinput id:" + msgParam + " \n");
} else if (Objects.equals(msg, DVB_CHANNEL_SEARCH_BROADCAST_MSG_FINISH)) {
msgParam = intent.getStringExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_PARAM);
Log.i(TAG, "@@@#### TvInput boroadcase receiver dvb search stop;db clearn:" + msgParam + " \n");
}
}
}
}
}
另外一种接收方法:在AndroidManifest.xml中声明,而不需要在context中registerReceiver,声明如下:
<receiver android:name="ChannelDbImplIntentReceiver">
<intent-filter>
<action android:name="android.com.dvbbase.action.DVB_CHANNEL_SEARCH_BROADCAST_ACTION" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<data android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_UNMOUNTED" />
<data android:scheme="file" />
</intent-filter>
</receiver>
结束:
{
mcontext.unregisterReceiver(mBroadcastReceiver);
}
备注:因为广播方式传递消息和参数,延时太长,不宜用于快速反应的应用!
import android.content.Context;
import android.content.BroadcastReceiver;
import android.os.Bundle;
import android.content.Intent;
import android.app.Activity;
发送广播,实现实例如下:
{
public static final String DVB_CHANNEL_SEARCH_BROADCAST_ACTION=
"android.com.dvbbase.action.DVB_CHANNEL_SEARCH_BROADCAST_ACTION";
public static final String DVB_CHANNEL_SEARCH_BROADCAST_EXTR_CMD =
"dvb search Broadcast Commod";
public static final String DVB_CHANNEL_SEARCH_BROADCAST_EXTR_PARAM =
"dvb search Broadcast Parameter";
public static final String DVB_CHANNEL_SEARCH_DB_CLEARN = "clearn";
public static final String DVB_CHANNEL_SEARCH_BROADCAST_MSG_START = "search start";
public static final String DVB_CHANNEL_SEARCH_BROADCAST_MSG_FINISH = "search finish";
private
void SendBroadcastMassage(int cmd)
{
String broadcast_cmd = "";
String broadcast_param = "";
Intent intent = new Intent();
intent.setAction(DVB_CHANNEL_SEARCH_BROADCAST_ACTION);
switch (cmd) {
case BROADCAST_MSG_SEARCH_START:
broadcast_cmd = DVB_CHANNEL_SEARCH_BROADCAST_MSG_START;
broadcast_param = mTvInputId;
break;
case BROADCAST_MSG_SEARCH_FINISH:
{
int chNum= 0;
broadcast_cmd = DVB_CHANNEL_SEARCH_BROADCAST_MSG_FINISH;
if (mdbImpleHandle != null) {
chNum = mdbImpleHandle.getChannelNumFormDB();
}
if((nitScan == 1) && (chNum > 0))
{
broadcast_param = DVB_CHANNEL_SEARCH_DB_CLEARN;
}
else
{
broadcast_param = "";
}
}
break;
default:
broadcast_cmd = "";
broadcast_param = "";
break;
}
intent.putExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_CMD, broadcast_cmd);
intent.putExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_PARAM, broadcast_param);
Log.i(TAG, "ChannelScanImpl send broadcast:" + broadcast_cmd + "\n");
this.sendBroadcast(intent);
}
}
接收广播的方法:
{
private
BroadcastReceiver mBroadcastReceiver = null;
mBroadcastReceiver = new EpgDbImplIntentReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(DvbBase.DVB_CHANNEL_SEARCH_BROADCAST_ACTION);
mcontext.registerReceiver(mBroadcastReceiver, intentFilter);
private
class ChannelDbImplIntentReceiver extends BroadcastReceiver
{
@Override public void onReceive(Context context, Intent intent)
{
Message newmsg = null;
String msgParam;
String action = intent.getAction();
Log.i(TAG, "ChannelDbImpl Intent Receiver action = " + action);
if (action.equals(DVB_CHANNEL_SEARCH_BROADCAST_ACTION)) {
String msg = intent.getStringExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_CMD);
if (Objects.equals(msg, DVB_CHANNEL_SEARCH_BROADCAST_MSG_START)) {
msgParam = intent.getStringExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_PARAM);
Log.i(TAG, "@@@#### TvInput boroadcase receiver dvb search start;tvinput id:" + msgParam + " \n");
} else if (Objects.equals(msg, DVB_CHANNEL_SEARCH_BROADCAST_MSG_FINISH)) {
msgParam = intent.getStringExtra(DVB_CHANNEL_SEARCH_BROADCAST_EXTR_PARAM);
Log.i(TAG, "@@@#### TvInput boroadcase receiver dvb search stop;db clearn:" + msgParam + " \n");
}
}
}
}
}
另外一种接收方法:在AndroidManifest.xml中声明,而不需要在context中registerReceiver,声明如下:
<receiver android:name="ChannelDbImplIntentReceiver">
<intent-filter>
<action android:name="android.com.dvbbase.action.DVB_CHANNEL_SEARCH_BROADCAST_ACTION" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<data android:scheme="file" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_UNMOUNTED" />
<data android:scheme="file" />
</intent-filter>
</receiver>
结束:
{
mcontext.unregisterReceiver(mBroadcastReceiver);
}
备注:因为广播方式传递消息和参数,延时太长,不宜用于快速反应的应用!
相关文章推荐
- [Android]获取局域网广播地址的两种方法
- 同wifi环境下android设备自动获取socket服务端的ip地址和端口号的方法-UDP广播
- Android通过广播接收者调用服务内方法
- [Android]获取局域网广播地址的两种方法
- Android学习小记----监听电量的变化(不能静态注册的广播), 保持Service不被杀死的好方法
- Android使用wifi通过UDP协议发送广播数据包给PC接收不到问题解决方法
- (八)React Native实现调用android原生java方法并实现广播的发送和接受
- [android] 代码注册广播接收者&利用广播调用服务的方法
- Android注册广播的两种方法分析
- Android通过广播接收者调用服务(service)内方法
- Android -- service 利用广播调用服务的方法
- Android开发:广播机制:Broadcast——自定义广播方法
- Android 通知PendingIntent意图发送广播,但Intent数据无更新? 解决方法
- android,一般动态注册广播的创建和适用具体方法
- Android实现静态广播监听器的方法
- android,利用广播接收者调用服务的方法,代码注册广播接收者
- Android 利用广播调用服务中的方法
- Android 广播机制(两种注册方法)与中断广播
- android中监听wifi广播的方法
- Android侦听应用(Package)变化的方法(1)侦听广播