任务十九、广播接收程序_第1页
任务十九、广播接收程序_第2页
任务十九、广播接收程序_第3页
任务十九、广播接收程序_第4页
任务十九、广播接收程序_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、任务十九、广播接收程序任务十九、广播接收程序本章任务本章任务本章相关词汇(蓝色为关键字)本章相关词汇(蓝色为关键字)单 词说 明broadcast广播receive接收目标l掌握发送和接收广播消息的方法什么是广播?什么是广播?l每个广播电台播放的内容都不相同。接受广播时广播(发送方)并不在意我们(接收方)接收到广播时如何处理。l好比我们收听交通电台的广播,电台中告诉我们现在在交通状况如何,但它并不关心我们接收到广播时做如何做出处理,这不是广播应该关心的问题。1.1 广播消息广播消息l广播消息lIntent的另一种用途是发送广播消息l应用程序和Android系统都可以使用Intent发送广播消息

2、l广播消息的内容可以是与应用程序密切相关的数据信息,也可以是Android的系统信息,例如网络连接变化、电池电量变化、接收到短信和系统设置变化等等l如果应用程序注册了BroadcastReceiver,则可以接收到指定的广播消息1.1 广播消息广播消息l广播信息的使用方法l创建一个Intentl注意:在构造Intent时必须用一个全局唯一的字符串标识其要执行的动作,通常使用应用程序包的名称l调用sendBroadcast()函数,就可把Intent携带的消息广播出去l如果要在Intent传递额外数据,可以用Intent的putExtra()方法1.1 广播消息广播消息l利用Intent发送广播

3、消息,并添加了额外的数据,然后调用sendBroadcast()发生了广播消息的代码1.String UNIQUE_STRING = “com.newer.BroadcastReceiverDemo;2.Intent intent = new Intent(UNIQUE_STRING);3.intent.putExtra(key1, value1);4.intent.putExtra(key2, value2);5.sendBroadcast(intent);1.1 广播消息广播消息lBroadcastReceiverlBroadcastReceiver用于监听广播消息l可以在AndroidM

4、anifest.xml文件或在代码中注册一个BroadcastReceiver,并在其中使用Intent 过滤器指定要处理的广播消息l创建BroadcastReceiver需继承BroadcastReceiver类,并重载onReceive()方法。代码如下1.public class MyBroadcastReceiver extends BroadcastReceiver 2.Override3.public void onReceive(Context context, Intent intent) 4./TODO: React to the Intent received.5.6.1.

5、1 广播消息广播消息lBroadcastReceiver的应用程序不需要一直运行,当Android系统接收到与之匹配的广播消息时,会自动启动此BroadcastReceiverl基于以上的特征,BroadcastReceiver适合做一些资源管理的工作l在BroadcastReceiver接收到与之匹配的广播消息后,onReceive()方法会被调用lonReceive()方法必须要在5秒钟执行完毕,否则Android系统会认为该组件失去响应,并提示用户强行关闭该组件1.1 广播消息1.BroadcastReceiverDemo示例说明了如何在应用程序中注册BroadcastReceiver,

6、并接收指定类型的广播消息 在点击“发生广播消息”按钮后,EditText控件中内容将以广播消息的形式发送出去, 示例内部的BroadcastReceiver将接收这个广播消息,并显示在用户界面的下方1.1 广播消息广播消息lBroadcastReceiverDemo.java文件中包含发送广播消息的代码,其关键代码如下l第3行代码创建Intent,将com.newer.BroadcastReceiverDem作为识别广播消息的字符串标识l第4行代码添加了额外信息l第5行代码调用sendBroadcast()函数发送广播消息1.button.setOnClickListener(new OnCl

7、ickListener()2.public void onClick(View view)3.Intent intent = new Intent(“com.newer.BroadcastReceiverDemo);4.intent.putExtra(message, entryText.getText().toString();5.sendBroadcast(intent);6.7.);1.1 广播消息广播消息l为了能够使应用程序中的BroadcastReceiver接收指定的广播消息,首先要在AndroidManifest.xml文件中添加Intent过滤器,声明BroadcastRece

8、iver可以接收的广播消息lAndroidManifest.xml文件的完整代码如下.2.1.1 广播消息广播消息l第14行代码中创建了一个节点l在第15行中声明了Intent过滤器的动作为“com.newer.BroadcastReceiverDemo”,这与BroadcastReceiverDemo.java文件中Intent的动作相一致,表明这个BroadcastReceiver可以接收动作为“com.newer.BroadcastReceiverDemo”的广播消息13. 14.15. 16.17. 18. 19. 20. 21. 1.1 广播消息广播消

9、息lMyBroadcastReceiver.java文件创建了一个自定义的BroadcastReceiver,其核心代码如下l第1行代码首先继承了BroadcastReceiver类l第3行代码重载了onReveive()函数。当接收到AndroidManifest.xml文件定义的广播消息后,程序将自动调用onReveive()函数1.public class MyBroadcastReceiver extends BroadcastReceiver 2.Override3.public void onReceive(Context context, Intent intent) 4.Str

10、ing msg = intent.getStringExtra(message);5.Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); 广播消息广播消息l第4行代码通过调用getStringExtra()函数,从Intent中获取标识为message的字符串数据,并使用Toast将信息显示在屏幕上l第5行代码的Toast是一个显示提示信息的类,调用makeText()函数可将提示信息短时间的浮现在用户界面之上makeText()函数的第1个参数是上下文信息第2个参数是需要显示的提示信息第3个参数是显示的时间,Toas

11、t.LENGTH_SHORT表示短时间显示,Toast.LENGTH_LONG表示长时间显示;最后调用show()方法将提示信息实际显示在界面之上系统广播接收器系统广播接收器landroid.os.BatteryManagerlregisterReceiver()方法。第1个参数,设置BroadcastReceiver实例第2个参数,设置注册Intent.ACTION_BATTERY_CHANGED处理的IntentFilter实例。l在BroadcastReceiver的onReceive()事件,接收到电池信息lIntent.ACTION_BATTERY_CHANGED,包括下面的信息。“

12、status”(int类型)状态,定义值是BatteryManager.BATTERY_STATUS_XXX。“health”(int类型)健康,定义值是BatteryManager.BATTERY_HEALTH_XXX。“present”(boolean类型)“level”(int类型)电池剩余容量“scale”(int类型)电池最大值。通常为100。“icon-small”(int类型)图标ID。“plugged”(int类型)连接的电源插座,定义值是BatteryManager.BATTERY_PLUGGED_XXX。“voltage”(int类型)mV。“temperature”(in

13、t类型)温度,0.1度单位。例如 表示197的时候,意思为19.7度。 “technology”(String类型)电池类型,例如,Li-ion等等。l系统广播可以捕捉系统发出的行为有: 1.“vider.Telephony.SMS_RECEIVED” 收到短信 l2. Intent.ACTION_BATTERY_CHANGED 剩余的手机电池量 l3. Intent.ACTION_MEDIA_MOUNTED SD卡成功挂载 l4. Intent.ACTION_MEDIA_UNMOUNTED SD卡未挂载 l5. Intent.ACTION_NEW_OUTGOING_CA

14、LL拨打电话 l6. Intent.ACTION_PACKAGE_ADDED执行安装l 7. Intent.ACTION_PACKAGE_REMOVED 执行卸载 提问提问lReceiver是接收谁发出的消息?lReceiver对象接收的消息本质上是Intent,系统内部已经定义了很多广播消息类型,例如电池电量低、屏幕开启或者关闭、系统引导完成等,系统内部广播这些消息使用的也是sendBroadcast()。l多数应用中,Receiver接收的是系统发出的消息。l如何发送广播消息启动相应的Receiver对象l如第一个问题所述,系统使用sendBroadcast()发送广播,应用程序也可以使用该方法发送广播。当系统发送这些广播后,同样经过Intent匹配找到相应的Receiver对象并启动。这与Activity或者Servcie一样。l如何得知系统都有哪些内置的广播消息类型?l系统内部定义的广播消息,可以查阅官方文档:lC:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论