您的位置:首页 > 移动开发 > Android开发

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);

}

备注:因为广播方式传递消息和参数,延时太长,不宜用于快速反应的应用!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: