第二十一讲:Broadcast Receiver 使用入门

本讲内容: Broadcast Receiver 的使用
1、Broadcast Receiver简介
2、Broadcast Receiver接收系统自带的广播
3、自定义广播

一、Broadcast Receiver简介

Android中的四大组件是 Activity、Service、Broadcast和Content Provider。而Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。那么Broadcast Receiver组件就提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。

二、Broadcast Receiver接收系统自带的广播

我们做一个例子,功能是在系统启动时播放一首音乐。

1、建立一个项目Lesson21_BroadcastReceiver,拷贝一首音乐进res/raw目录

2、建立HelloBroadcastReceiver.java 内容如下:

01package android.basic.lesson21;
02  
03import android.content.BroadcastReceiver;
04import android.content.Context;
05import android.content.Intent;
06import android.media.MediaPlayer;
07import android.util.Log;
08  
09public class HelloBroadReciever extends BroadcastReceiver {
10  
11    //如果接收的事件发生
12    @Override
13    public void onReceive(Context context, Intent intent) {
14        //则输出日志     
15        Log.e("HelloBroadReciever", "BOOT_COMPLETED!!!!!!!!!!!!!!!!!!!!!!!!!");
16        Log.e("HelloBroadReciever", ""+intent.getAction());
17          
18        //则播放一首音乐
19        MediaPlayer.create(context, R.raw.babayetu).start();        
20    }
21}

3、在AndroidManifest.xml中注册此Receiver :

01<?xml version="1.0" encoding="utf-8"?>
02<MANIFEST package="android.basic.lesson21" android:versioncode="1" android:versionname="1.0" xmlns:android="http://schemas.android.com/apk/res/android">
03    <APPLICATION android:label="@string/app_name" android:icon="@drawable/icon">
04        <ACTIVITY android:label="@string/app_name" android:name=".MainBroadcastReceiver">
05            <INTENT -filter>
06                <ACTION android:name="android.intent.action.MAIN" />
07                <CATEGORY android:name="android.intent.category.LAUNCHER" />
08            </INTENT>
09        </ACTIVITY>
10    <!-- 定义Broadcast Receiver 指定监听的Action -->
11    <RECEIVER android:name="HelloBroadReciever">
12            <INTENT -filter>
13                <ACTION android:name="android.intent.action.BOOT_COMPLETED" />
14            </INTENT>
15    </RECEIVER>    
16</APPLICATION></MANIFEST>

4、发布程序,启动模拟器,可以在Logcat中看到:

~OY1$Y7O3}O64K{UCN_@$79

同时能听到音乐播放的声音。说明我们确实接收到了系统启动的广播事件,并做出了响应。

image

三、自定义广播

下面我们学习自己制作一个广播。我们接着刚才的例子,继续写下去。

5、在MainBroadcastReceiver.java中填写如下代码:

01package android.basic.lesson21;
02  
03import android.app.Activity;
04import android.content.Intent;
05import android.os.Bundle;
06import android.view.View;
07import android.widget.Button;
08  
09public class MainBroadcastReceiver extends Activity {
10    /** Called when the activity is first created. */
11    @Override
12    public void onCreate(Bundle savedInstanceState) {
13        super.onCreate(savedInstanceState);
14        setContentView(R.layout.main);
15  
16        Button b1 = (Button) findViewById(R.id.Button01);
17  
18        b1.setOnClickListener(new View.OnClickListener() {
19  
20            @Override
21            public void onClick(View v) {
22                //定义一个intent
23                Intent intent = new Intent().setAction(
24                        "android.basic.lesson21.Hello").putExtra("yaoyao",
25                        "yaoyao is 189 days old ,27 weeks -- 2010-08-10");
26                //广播出去
27                sendBroadcast(intent);
28            }
29        });
30    }
31}

6、更改 HelloBroadReceiver.java 内容如下:

01package android.basic.lesson21;
02  
03import android.content.BroadcastReceiver;
04import android.content.Context;
05import android.content.Intent;
06import android.media.MediaPlayer;
07import android.util.Log;
08  
09public class HelloBroadReciever extends BroadcastReceiver {
10  
11    //如果接收的事件发生
12    @Override
13    public void onReceive(Context context, Intent intent) {
14        //对比Action决定输出什么信息
15        if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
16            Log.e("HelloBroadReciever", "BOOT_COMPLETED !!!!!!!!!!!!!!!!!!!!!!!!!");
17        }
18          
19        if(intent.getAction().equals("android.basic.lesson21.Hello")){
20            Log.e("HelloBroadReciever", "Say Hello to Yaoyao !!!!!!!!!!!!!!!!!!!!!!!!!");
21            Log.e("HelloBroadReciever", intent.getStringExtra("yaoyao"));
22        }
23          
24        //播放一首音乐
25        MediaPlayer.create(context, R.raw.babayetu).start();        
26    }
27}

7、更改 AndroidManifest.xml 内容如下:

01<?xml version="1.0" encoding="utf-8"?>
02<MANIFEST package="android.basic.lesson21" android:versioncode="1" android:versionname="1.0" xmlns:android="http://schemas.android.com/apk/res/android">
03    <APPLICATION android:label="@string/app_name" android:icon="@drawable/icon">
04        <ACTIVITY android:label="@string/app_name" android:name=".MainBroadcastReceiver">
05            <INTENT -filter>
06                <ACTION android:name="android.intent.action.MAIN" />
07                <CATEGORY android:name="android.intent.category.LAUNCHER" />
08            </INTENT>
09        </ACTIVITY>
10    <!-- 定义Broadcast Receiver 指定监听的Action 这里我们的接收器,接收了2个Action,一个系统的一个我们自定义的  -->
11    <RECEIVER android:name="HelloBroadReciever">
12            <INTENT -filter>
13                <ACTION android:name="android.intent.action.BOOT_COMPLETED" />
14            </INTENT>
15            <INTENT -filter>
16                <ACTION android:name="android.basic.lesson21.HelloYaoYao" />
17            </INTENT>
18             
19    </RECEIVER>    
20</APPLICATION>
21<USES android:minsdkversion="8" -sdk />
22</MANIFEST>

8、运行程序,点击按钮,查看LogCat,听听声音

image

3@({Q[{​{(E1EA7UQTZ[TDGK

好了,本讲就到这里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值