版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Android开发实战经典第9章:Android组件通信 广播接收者:BroadcastReceiver北京魔乐科技软件学院李兴华研发部本章目标掌握广播的主要作用及基本实现;可以使用广播启动Service;理解闹钟服务的使用;E-MAIL:范例:广播组件的定义结构E-MAIL:package org.lxh.demo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class
2、 MyBroadCastDemo extends BroadcastReceiver Overridepublic void onReceive(Context context, Intent intent) / 此处编写代码范例:实现广播机制E-MAIL:范例:定义布局管理文件 main.xmlE-MAIL:布局管理器高度为屏幕高度默认显示文字范例:定义广播组件,组件类继承BroadcastReceiver类E-MAIL:package org.lxh.demo;import android.content.Bro
3、adcastReceiver;import android.content.Context; import android.content.Intent; import android.widget.Toast;public class MyBroadcastReceiverUtil extends BroadcastReceiver / 继承BroadcastReceiverpublic MyBroadcastReceiverUtil()/ 构造方法System.out.println(* 每次广播都会实例化一个新的广播组件进行操作。);Overridepublic void onRecei
4、ve(Context context, Intent intent) Toast.makeText(context, 广播已经启动, Toast.LENGTH_LONG).show();/ 显示信息范例:定义Activity程序发送广播 MyBroadcastDemo.javaE-MAIL:package org.lxh.demo;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View;import an
5、droid.view.View.OnClickListener;import android.widget.Button;public class MyBroadcastDemo extends Activity private Button mybut ;/ 按钮组件Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);/ 设置默认布局管理器this.mybut = (Button) super
6、.findViewById(R.id.mybut) ;/ 取得组件this.mybut.setOnClickListener(new OnClickListenerImpl();/ 设置private class OnClickListenerImpl implements OnClickListener Overridepublic void onClick(View v) Intent it = new Intent(Intent.ACTION_EDIT);/ 启动ActionMyBroadcastDemo.this.sendBroadcast(it);/ 进行广播范例:在AndroidM
7、anifest.xml文件之中注册广播组件E-MAIL:启用广播匹配Action操作时广播手工注册广播:Activity类对Broadcast的支持:public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter)public void unregisterReceiver(BroadcastReceiver receiver)等价于如下配置:E-MAIL:IntentFilter类提供的常用方法E-MAIL:No.方法类型
8、描述1public IntentFilter()构造创建一个空的IntentFilter对象2public IntentFilter(String action)构造创建一个IntentFilter对象,并指定Action3public final void addAction(String action)普通增加一个要过滤的Action4public final void addCategory(String category)普通增加一个要过滤的Category5public final boolean hasAction(String action)普通判断指定的Action是否存在6p
9、ublic final boolean hasCategory(String category)普通判断指定的Category是否存在范例:定义布局管理文件 main.xmlE-MAIL:布局管理器高度为屏幕高度默认显示文字范例:定义Activity程序,手工进行广播的配置 MyBroadcastDemo.javaE-MAIL:public class MyBroadcastDemo extends Activity private Button mybut ;/ 按钮组件private MyBroadcastReceiverUtil bro
10、adUtil = null ;/ 广播接收者Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); super.setContentView(R.layout.main);/ 设置默认布局管理器this.mybut = (Button) super.findViewById(R.id.mybut) ;/ 取得组件this.mybut.setOnClickListener(new OnClickListenerImpl();/ 设置private class OnCli
11、ckListenerImpl implements OnClickListener Overridepublic void onClick(View v) Intent it = new Intent(org.lxh.action.MLDN) ;/ 指 定 Action it.putExtra(msg, );/ 附加数据IntentFilter filter = new IntentFilter(org.lxh.action.MLDN) ; MyBroadcastDemo.this.broadUtil = new MyBroadcastReceiverUtil()
12、 ; MyBroadcastDemo.this.registerReceiver(MyBroadcastDemo.this.broadUtil, filter); / 注册广播MyBroadcastDemo.this.sendBroadcast(it);/ 进行广播Overrideprotected void onStop() super.unregisterReceiver(MyBroadcastDemo.this.broadUtil) ;/ 注销广播super.onStop();范例:定义广播组件 MyBroadcastDemoE-MAIL:package org
13、.lxh.demo;import android.content.BroadcastReceiver;import android.content.Context; import android.content.Intent; import android.widget.Toast;public class MyBroadcastDemo extends BroadcastReceiver / 继承BroadcastReceiverOverridepublic void onReceive(Context context, Intent intent) / 处理广播if (org.lxh.ac
14、tion.MLDN.equals(intent.getAction() / 判断是指定的Action String msg = intent.getStringExtra(msg) ;/ 取得附加信息Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); / 显示信息范例:通过BroadCast启动Service在前面的部分已经讲解过通过Activity程序启动Service的操作,实际上Service也可以通过BroadCast启动,如果一个Service要通过Broadcast启动并没有任何特殊的操作,只需要在Broadcast中调用
15、startService()方法即可完成。E-MAIL:范例:定义一个Service类E-MAIL:public class MyServiceUtil extends Service / 继承Service Overridepublic IBinder onBind(Intent intent) / 绑定时触发return null;Overridepublic void onCreate() / 创建时触发System.out.println(* Service onCreate(); super.onCreate();Overridep
16、ublic void onDestroy() / 销毁时触发System.out.println(* Service onDestroy(); super.onDestroy();Overridepublic int onStartCommand(Intent intent,int flags, int startId) / 启动时触发System.out.println(* Service onStartCommand() Intent = + intent); return Service.START_CONTINUATION_MASK;范例:定义Broadcast处理类 MyBroadc
17、ast.javaE-MAIL:package org.lxh.demo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyBroadcastReceiverUtil extends BroadcastReceiver / 继承BroadcastReceiverOverridepublic void onReceive(Context context, Intent intent) con
18、text.startService(new Intent(context, MyServiceUtil.class);/ 启动Service范例:定义信息显示的资源文件 strings.xmlE-MAIL:www.MLDNJAVA.cn广播服务范例:定义布局管理文件E-MAIL:布局管理器的高度为屏幕高度默认显示文字范例:定义Activity程序E-MAIL:package org.lxh.demo;import android.app.Activity; import android.content.Intent;
19、 import android.os.Bundle;public class MyBroadcastDemo extends Activity private MyBroadcastReceiverUtil broadUtil = null ;/ 广播接收者Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); super.setContentView(R.layout.main);/ 设置默认布局管理器Intent it = new Intent(org.lxh.a
20、ction.MLDN) ;/ 指定ActionMyBroadcastDemo.this.broadUtil = new MyBroadcastReceiverUtil() ; MyBroadcastDemo.this.sendBroadcast(it) ;/ 启动广播Overrideprotected void onStop() super.unregisterReceiver(MyBroadcastDemo.this.broadUtil) ;/ 注销广播super.onStop();范例:修改AndroidManifest.xml文件E-MAIL:显示文字对话框风格
21、显示匹配Action操作定义服务启用广播匹配Action操作时广播范例:闹钟设置E-MAIL:AlarmManager类的常用方法E-MAIL:No.常量及方法类型描述1public static final int RTC_WAKEUP常量设置的闹钟时间一到则自动唤醒设备2public void cancel (PendingIntent operation)普通取消闹钟3public void set(int type, long triggerAtTime, PendingIntentoperation)普通设置闹钟4public vo
22、id setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)普通设置闹钟重复响起5public void setTime(long millis)普通设置时间范例:定义闹钟的提示Activity程序类 AlarmMessageE-MAIL:package org.lxh.demo;import java.text.SimpleDateFormat;import java.util.Date;import android.app.Activity;import
23、android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;public class AlarmMessage extends Activity Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);new AlertDialog.Builder(this)/ 建立对话框.setIcon(R.drawable.pic_m)/ 设置图标.setTit
24、le(闹钟时间已到!)/ 设置对话框标题.setMessage(/ 定义显示文字闹钟响起,现在时间:+new SimpleDateFormat(yyyy年MM月dd日 HH时mm分ss秒).format(new Date(System.currentTimeMillis().setPositiveButton(关闭, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int whichButton) AlarmMessage.this.finish();/ 关闭对话框后程序结束).
25、show();/ 显示对话框类 MyAlarmReceiver范例:定义广播E-MAIL:package org.lxh.demo;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyAlarmReceiver extends BroadcastReceiver Overridepublic void onReceive(Context context, Intent intent) In
26、tent it = new Intent(context, AlarmMessage.class);/ 定义要操作的Intent it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);/ 传递一个新的任务标记context.startActivity(it);/ 启动Intent范例:定义布局管理器 main.xmlE-MAIL:所有组件水平居中对齐 组件高度为自身高度默认显示文字默认显示文字默认显示文字范例:定义Activity,操作闹钟(A)E-MAIL:public class MyAlarmManage
27、rDemo extends Activity private AlarmManager alarm = null;/ 闹钟管理private Button set = null;/ 按钮组件private Button delete = null;/ 按钮组件private TextView msg = null;/ 文本显示组件private Calendar calendar = Calendar.getInstance();/ 取得Calendar对象private TimePicker time = null;/ 时间选择器private int hourOfDay = 0;/ 保存设
28、置的时private int minute = 0;/ 保存设置的分Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);/ 调用布局管理器this.time = (TimePicker) super.findViewById(R.id.time); / 取得时间选择器this.set = (Button) super.findViewById(R.id.set);/ 取得按钮组件this.del
29、ete = (Button) super.findViewById(R.id.delete); / 取得按钮组件this.msg = (TextView) super.findViewById(R.id.msg);/ 取得组件this.set.setOnClickListener(new SetOnClickListenerImpl(); / 设置单击this.delete.setOnClickListener(new DeleteOnClickListenerImpl(); / 设置单击this.alarm = (AlarmManager) super.getSystemService(Co
30、ntext.ALARM_SERVICE); / 取得闹钟服务this.time.setOnTimeChangedListener(new OnTimeChangedListenerImpl();/ 设置时间改变this.time.setIs24HourView(true);/ 24小时制范例:定义Activity,操作闹钟(B)E-MAIL:private class OnTimeChangedListenerImpl implements OnTimeChangedListener Overridepublic void onTimeChanged(TimePick
31、er view, int hourOfDay, int minute) MyAlarmManagerDemo.this.calendar.setTimeInMillis(System.currentTimeMillis();/ 设置当前时间MyAlarmManagerDemo.this.calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);/ 设置小时MyAlarmManagerDemo.this.calendar.set(Calendar.MINUTE, minute);/ 设置分钟MyAlarmManagerDemo.this.calendar.set(
32、Calendar.SECOND, 0);/ 设置秒MyAlarmManagerDemo.this.calendar.set(Calendar.MILLISECOND, 0);/ 设置毫秒MyAlarmManagerDemo.this.hourOfDay = hourOfDay; / 保存设置的小时MyAlarmManagerDemo.this.minute = minute;/ 保存设置的分钟范例:定义Activity,操作闹钟(C)E-MAIL:private class SetOnClickListenerImpl implements OnClickListen
33、er Overridepublic void onClick(View view) Intent intent = new Intent(MyAlarmManagerDemo.this,MyAlarmReceiver.class);/ 指定跳转的Intent intent.setAction(org.lxh.action.setalarm);/ 定 义 广 播 的 Action PendingIntent sender = PendingIntent.getBroadcast(MyAlarmManagerDemo.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); / 指定PendingIntentMyAlarmManagerDemo.th
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年交通安全培训长尾词
- 广东省广州市蓝天中学2020-2021学年七年级下学期期末模拟道德与法治试题(含答案)
- 人工踝关节置换术个案护理
- 骨质疏松症患者安全防护与活动指导
- 新兴公司运营责任书(8篇)
- 2024-2025学年反射疗法师大赛理论每日一练试卷完整答案详解
- 市场调研活动启动说明6篇范文
- 2024-2025学年度护士资格证试题含完整答案详解【夺冠】
- 2026年药品生产质量管理规范考试题及答案
- 2024-2025学年临床执业医师自我提分评估附答案详解【突破训练】
- 路亚快艇转让协议书
- 企业自行监测指南培训
- 2025中考英语作文复习:12个写作话题写作指导+满分范文
- 证书合作合同协议
- 尾矿坝工程项目施工方案
- 零基预算研究分析
- 郑州大学高层次人才考核工作实施办法
- 土壤氡浓度检测方案
- 学校食堂副食品配送服务投标方案(技术方案)
- 数学竞赛辅导:《高中数学竞赛辅导班》教案
- 麻醉科应急预案及流程
评论
0/150
提交评论