- 浏览: 760957 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (139)
- 玩转Android (48)
- Android创意美工 (0)
- Android杂谈 (23)
- Android实例练习 (2)
- Android ROM研究 (5)
- Android NDK开发指南 (5)
- Android NDK (0)
- Android Tips (3)
- Windows Phone 7 (5)
- iPhone (0)
- HTML5学习室 (0)
- JAVA (9)
- SSH+ibatis (8)
- PHP (0)
- IT生活 (1)
- linux (2)
- C (4)
- C++ (1)
- web 前端 (1)
- 云计算 (0)
- 设计模式 (0)
- C# (2)
- 其他 (1)
- 数据结构 (5)
- Web开发 (10)
- 数据库 (3)
- 搜索引擎 (0)
- Go语言 (0)
最新评论
-
wi100sh:
多谢分享~
玩转Android---UI篇---ImageButton(带图标的按钮) -
zhanghaichang:
好文章的。
高性能web开发技术(一) -
yingang:
引用classes.dex.dex2jar.jar 拖入 j ...
Andorid杂谈---Apk文件的反编译 -
扶摇诺:
讲解的简明易懂,多谢啦!
玩转Android---UI篇---LinearLayout(线性布局) -
a13429921973:
更为详细的图文介绍,可参考这个http://blog.csdn ...
Android ROM研究---CyanogenMod源代码下载及编译
Braodcast Receiver顾名思义就是广播接收器,它和时间处理机制类似,但是事件处理机制是程序组件级别的(比如:按钮的单击事件),而广播事件处理机制是系统级别的。我们可以用Intent来启动一个组件,也可以用sendBroadcast()方法发起一个系统级别的事件广播来传递消息。我们同样可以在自己的应用程序中实现Broadcast Receiver来监听和响应广播的Intent。
事件的广播通过创建Intent对象并调用sendBroadcast()方法将广播发出。事件的接受是通过定义一个继承BroadcastReceiver的类来实现的,继承该类后覆盖其onReceive()方法,在该方法中响应时间。
下面是android系统中定义了很多标准的Broadcast Action来响应系统的广播事件。
①ACTION_TIME_CHANGED(时间改变时触发)
②ACTION_BOOT_COMPLETED(系统启动完成后触发)--比如有些程序开机后启动就是用这种方式来实现的
③ACTION_PACKAGE_ADDED(添加包时触发)
④ACTION_BATTERY_CHANGED(电量低时触发)
详细:标准广播ACTION常量
常量名称 |
常量值 |
意义 |
ACTION_BOOT_COMPLETED |
android.intent.action.BOOT_COMPLETED |
系统启动完成 |
ACTION_TIME_CHANGED |
android.intent.action.ACTION_TIME_CHANGED |
时间改变 |
ACITON_DATE_CHANGED |
android.intent.action.ACTION_DATE_CHANGED |
日期改变 |
ACTION_TIMEZONE_CHANGED |
android.intent.action.ACTION_TIMEZONE_CHANGED |
时区该表 |
ACTION_BATTERY_LOW |
android.intent.action.ACTION_BATTERY_LOW |
电量低 |
ACTION_MEDIA_EJECT |
android.intent.action.ACTION_MEDIA_EJECT |
插入或拔出外部媒体 |
ACTION_MEDIA_BUTTON |
android.intent.action.ACTION_MEDIA_BUTTON |
按下媒体按钮 |
ACTION_PACKAGE_ADDED |
android.intent.action.ACTION_PACKAGE_ADDED |
添加包 |
ACTION_PACKAGE_REMOVED |
android.intent.action.ACTION_PACKAGE_REMOVED |
删除包 |
在这里,要练习3个内容
①自定义Broadcast Receiver
②Notification和NotificationManager的使用
③AlarmManager的使用
1、首先看一个自定义的广播事件的例子
package org.hualang.broadcast; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class BroadCastTest extends Activity { /** Called when the activity is first created. */ private static final String MY_ACTION="org.hualang.broadcast.action.MY_ACTION"; private Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn=(Button)findViewById(R.id.button); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent(); intent.setAction(MY_ACTION); intent.putExtra("msg", "同志们好!同志们辛苦啦!"); sendBroadcast(intent); } }); } }
MyReceiver.java
package org.hualang.broadcast; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent arg1) { // TODO Auto-generated method stub String msg=arg1.getStringExtra("msg"); Toast.makeText(arg0, msg, Toast.LENGTH_LONG).show(); } }
注意:在AndroidManifest.xml文件中注册
<receiver android:name="MyReceiver"> <intent-filter> <action android:name="org.hualang.broadcast.action.MY_ACTION"/> </intent-filter> </receiver>
我们还可以在AndroidManifest.xml文件中注销一个广播接收器,一般在Activity.onResume()方法中使用Context.registerReceiver()方法来注册一个广播接收器,在Activity.onPause()中使用unregisterReceiver(r)方法注销一个广播接收器,例如:
//实例化intent过滤器
IntentFilter filter = new IntentFilte();
//实例化Receiver
MyReceiver r = new Receiver();
//注册Receiver
registerReceiver(r,filter);
为了注销一个BroadcastReceiver,应使用Context.unregisterReceiver方法,传入一个BroadcastReceiver实例
//注销
unregisterReceiver(r);
2、下面的是Notification的例子,比如手机来短信的时候,会在屏幕最上边有一个通知,那个就是Notification
DisplayActivity.java
package org.hualang.notify; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class DisplayActivity extends Activity { private Button cancelbtn; private Notification n; private NotificationManager nm; private static final int ID=1; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); cancelbtn = (Button)findViewById(R.id.button2); String service = NOTIFICATION_SERVICE; nm = (NotificationManager)getSystemService(service); n = new Notification(); int icon = n.icon =R.drawable.icon; String tickerText = "喜欢HTC的样子,喜欢defy的配置"; long when = System.currentTimeMillis(); n.icon = icon; n.tickerText = tickerText; n.when = when; Intent intent = new Intent(this,NotifyTest2.class); PendingIntent pi = PendingIntent.getActivity(this, 0 , intent , 0); n.setLatestEventInfo(this, "My Title", "My Content", pi); nm.notify(ID, n); cancelbtn.setOnClickListener(cancelListener); } private OnClickListener cancelListener=new OnClickListener() { public void onClick(View v) { nm.cancel(ID); } }; }
MyReceiver.java
package org.hualang.notify; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Intent i=new Intent(); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.setClass(context,DisplayActivity.class); context.startActivity(i); } }
NotifyTest2.java
package org.hualang.notify; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class NotifyTest2 extends Activity { /** Called when the activity is first created. */ private Button btn; private static final String MY_ACTION="org.hualang.notify.aciton.MY_ACITON"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn=(Button)findViewById(R.id.button); btn.setOnClickListener(listener); } private OnClickListener listener=new OnClickListener() { public void onClick(View v) { Intent intent=new Intent(); intent.setAction(MY_ACTION); sendBroadcast(intent); } }; }
注册AndroidManifest.xml
<receiver android:name="MyReceiver"> <intent-filter> <action android:name="org.hualang.notify.aciton.MY_ACITON"/> </intent-filter> </receiver> <activity android:name="DisplayActivity"> </activity>
运行结果如下:
3、下面是AlarmManager的例子,它是一个闹钟,感兴趣的朋友可以自己写一个小闹钟
AlarmManager常用的属性和方法
属性或方法名称 |
说明 |
ELAPSED_REALTIME |
设置闹钟时间,从系统启动开始 |
ELAPSED_REALTIME_WAKEUP |
设置闹钟时间,从系统启动开始,如火设备休眠则唤醒 |
INTERVAL_DAY |
设置闹钟时间,间隔一天 |
INTERVAL_FIFTEEN_MINUTES |
间隔15分钟 |
INTERVAL_HALF_DAY |
间隔半天 |
INTERVAL_HALF_HOUR |
间隔半小时 |
INTERVAL_HOUR |
间隔1小时 |
RTC |
设置闹钟时间,从系统当前时间开始(System.currentTimeMillis()) |
RTC_WAKEUP |
设置闹钟时间,从系统当前时间开始,设备休眠则唤醒 |
set(int type,long tiggerAtTime,PendingIntent operation) |
设置在某个时间执行闹钟 |
setRepeating(int type,long triggerAtTiem,long interval,PendingIntent operation) |
设置在某个时间重复执行闹钟 |
setInexactRepeating(int type,long triggerAtTiem,long interval,PendingIntent operation) |
是指在某个时间重复执行闹钟,但不是间隔固定时间 |
AlarmTest.java
package org.hualang.alarm; import android.app.Activity; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class AlarmTest extends Activity { /** Called when the activity is first created. */ private Button btn1,btn2; private static final String BC_ACTION="org.hualang.alarm.action.BC_ACTION"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn1 = (Button)findViewById(R.id.button1); btn2 = (Button)findViewById(R.id.button2); final AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); Intent intent = new Intent(); intent.setAction(BC_ACTION); intent.putExtra("msg", "你该起床了"); final PendingIntent pi = PendingIntent.getBroadcast(AlarmTest.this, 0, intent, 0); final long time = System.currentTimeMillis(); btn1.setOnClickListener(new OnClickListener() { public void onClick(View v) { am.setRepeating(AlarmManager.RTC_WAKEUP, time, 5*1000, pi); } }); btn2.setOnClickListener(new OnClickListener() { public void onClick(View v) { am.cancel(pi); } }); } }
MyReceiver.java
package org.hualang.alarm; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import android.widget.Toast; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String msg=intent.getStringExtra("msg"); Log.v("SERVICE","QIAN----------------------"); Toast.makeText(context, msg, Toast.LENGTH_LONG).show(); Log.v("SERVICE", "HOU-----------------------"); } }
注册AndroidManifest.xml
<receiver android:name="MyReceiver"> <intent-filter> <action android:name="org.hualang.alarm.action.BC_ACTION"/> </intent-filter> </receiver>
运行结果:
点击设置闹钟后,会每隔5秒弹出一个Toast,点击取消闹钟就不会弹出了
发表评论
-
玩转Android---2D图形及动画---动画分析(Tween详细分析)
2011-09-26 21:59 2628在Android系统中提供了两种动画实现方式:一种是Tween ... -
玩转Android---2D图形及动画---图片处理
2011-09-26 13:08 1781在Android中很多地方都使 ... -
玩转Android--UI篇--PreferenceActivity(开启wifi和音乐等)
2011-09-01 11:57 4851本测试主要是为了测试PreferenceActivity的使用 ... -
玩转Android---2D图形及动画---Gif动画
2011-08-05 09:36 2220由于Gif本身就是动画,所以如果能够直接使用的话,会省去很多的 ... -
玩转Android---2D图形及动画---Frame动画
2011-08-01 20:53 2086Frame动画其实就是逐帧动画,用法也比Tween动画简单,只 ... -
玩转Android---2D图形及动画---Tween动画
2011-07-31 22:53 2180Android平台提供了两类动画,分别是Tween动画,和Fr ... -
玩转Android---2D图形及动画---View类使用
2011-07-30 23:39 2800由于游戏界面是由大量美工资源图片构成的,所以,在设计游戏界面的 ... -
玩转Android--组件篇---Handler的使用
2011-07-30 14:01 5359public class Handler ... -
玩转Android---UI篇---ZoomControls放大缩小图片
2011-07-27 13:03 7249ZoomControls控件是一个可以缩放但控件,效果如下图 ... -
玩转Android---组件篇---TextSwitcher
2011-07-25 09:21 2193还记得有一次淘宝的电话面试的时候问了我一个关于Android的 ... -
玩转Android---组件篇---AnalogClock,DigitalClock
2011-07-10 19:28 2941首先要说的是,这两个控件并不是经常的使用,但是如果程序需要的话 ... -
玩转Android---组件篇---SeekBar,RatingBar,Chronometer
2011-07-10 19:12 2856今天补充三个组件的使用,避免日后忘记。它们分别是 SeekB ... -
玩转Android---组件篇---Handler的使用(2)
2011-05-28 17:15 2821对于Handler来说,它和与它调用它的Activity是出于 ... -
玩转Android---组件篇---Handler的使用(1)
2011-05-28 15:37 2173在android中,有很多功能是不能放在onCreate或者o ... -
玩转Android---事件监听篇---第2篇
2011-05-27 10:30 5251事件监听篇---第二篇 下面是各种常用控件的事件监听的 ... -
玩转Android---事件监听篇---第1篇
2011-05-26 21:29 9933事件就是用户与UI界面的交互时所触发的操作。比如点击某一个按钮 ... -
玩转Android---组件篇---数据存储之SQLite
2011-04-17 17:05 8484Android中通过SQLite数据库引擎来实现结构化数据存储 ... -
玩转Android---组件篇---数据存储之File
2011-04-17 11:07 2047我们可以将一些数据直接以文件的形式保存在设备中。例如,一些文本 ... -
玩转Andorid---组件篇---数据存储之preference
2011-04-14 21:58 2303程序是数据的输入、处 ... -
玩转Andorid---组件篇---Service(服务)之RPC远程进程调用
2011-04-08 21:17 3465在Andorid平台中,各个组件运行在自己的进程中,他们 ...
相关推荐
一个简单的Android广播接收器库。 介绍 该库旨在使用“观察者”设计模式处理所有广播接收器操作,以保持更新所有广播侦听器。 例如,通过使用此库,无论您在应用程序中的哪个位置,都可以跟踪应用程序网络状态。 只...
BroadcastReceiver(广播接收器)是接收广播的关键类,让我们深入探讨一下Broadcast实例在Android开发中的应用及其相关知识点。 首先,BroadcastReceiver的工作原理是基于Intent的发布和订阅模式。当一个广播意图被...
此外,理解Android的组件模型,如活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider),是构建功能完整应用的基础。 总之,"android-sdk_r24.4.1-windows.zip...
在Android开发中,Broadcast Receiver(广播接收者)是四大组件之一,它负责监听系统或应用程序发送的广播消息,并在接收到这些消息时执行相应的操作。本项目“android-simple-broadcast-receiver-app”提供了一个...
在Android开发中,广播接收者(BroadcastReceiver)是Android四大组件之一,它是系统用来传递全局消息的一种机制。当你创建一个BroadcastReceiver,你可以监听系统或应用发送的广播,并在接收到广播时执行相应的处理...
在Android应用开发过程中,Broadcast Receiver是一种重要的组件,它主要用于接收来自系统或其他应用程序发送的广播消息。通过这种方式,应用可以了解到外部环境的变化,比如网络状态改变、电量变化等,并据此作出...
当一个Broadcast被发送时,所有注册了与该Broadcast匹配的BroadcastReceiver(广播接收器)都会收到这个消息,并可以执行相应的处理操作。这种机制使得不同应用程序之间可以相互协作,例如,当手机接收到短信时,...
在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图(Intent)。本学习资料主要围绕“android-broadcast”这一主题,适合初学者入门。以下是对Android...
广播接收器是Android四大组件之一,在Android系统中内置了很多系统级别的广播。 一、广播接收器的概念 广播接收器(BroadcastReceiver)是一种用来过滤、接收并响应广播的组件,通过广播接收器可以监听系统中的广播...
cineio-broadcast-android, cine.io Android广播 SDK cine.io sdk 用于 cine.io 广播的android库 。这个库在 Android 5.0 + ( Lollipop ) 上不稳定。 对由此带来的任何不便,我们深表歉意. 在我们做之前,我们喜欢...
- **接收广播**:广播接收器接收到广播后会调用`onReceive()`方法进行响应处理。 #### 三、广播接收器的定义与使用 ##### 1. 定义广播接收器 定义广播接收器需要继承`BroadcastReceiver`类,并重写`onReceive()`...
在Android开发中,广播(Broadcast)是一种非常重要的组件,它允许应用程序之间进行异步通信,无需直接耦合。本文将详细讲解如何实现一个简单的Android广播发送与接收的Demo,包括如何创建并发送广播、如何注册并...
2. 广播接收器(BroadcastReceiver):负责接收广播Intent的组件,当接收到匹配的广播时,它的onReceive()方法会被调用。广播接收器可以静态注册(在AndroidManifest.xml中声明)或动态注册(在代码中实现)。 二、...
在Android系统中,四大组件是应用程序的核心组成部分,包括Activity、Service、Content Provider和Broadcast Receiver(广播接收者)。本文将深入探讨Broadcast(广播)这一组件,它是Android系统中用于应用程序间...
在Android系统中,广播接收器(Broadcast Receiver)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图(Intent)。本资源提供的“android 广播接收完整源码”应该包含了一个实现广播接收功能的完整...
在Android系统中,广播(Broadcast)是一种非常重要的组件,它使得应用程序之间能够进行无须先建立连接的通信。广播机制是Android系统事件分发的重要方式,允许应用在接收到特定事件时执行相应的操作。本篇将详细...
在Android系统中,广播接收器(Broadcast Receiver)是一种重要的组件,它允许应用程序监听并响应系统或应用程序发送的各种广播意图(Intent)。广播是Android系统中的一种全局通知机制,用于在不同的应用之间传递...
标题中的"MyFirstRep-Broadcast-Receiver-with-Vibrate-Alert-"表明这是一个关于Android平台上的广播接收器(Broadcast Receiver)实现项目,特别的是,它包含了振动警报功能。在Android开发中,广播接收器是一种...
2. **框架层**:这是Android系统的核心部分,包括各种服务和组件,如Activity Manager、Content Provider、Broadcast Receiver等。Android 19引入了对全屏模式的支持,使得应用能更好地适应无按钮的设备。源码中可以...
在Android应用开发中,BroadcastReceiver是一种非常重要的组件,它允许应用程序在不直接交互的情况下接收和响应系统或自定义广播事件。本教程将深入探讨如何利用BroadcastReceiver在两个不同的Activity之间传递数据...