android广播事件处理机制学习小结_android事件处理机制
android广播事件处理机制学习小结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“android事件处理机制”。
Android广播事件处理机制
广播事件处理机制是系统级别的,可以通过构建Intent 对象 然后调用sendBroadcast()方法将广播发出。事件的接受是通过定一个继承BroadcastReceiver的类来实现的,继承该类后覆盖onReceiver()方法,在该方法中响应事件。
以下内容包括:自己定义BroadcastReceiver来处理广播事件、系统广播事件的使用、Notification和NotificationManager的使用
1.自己定义BroadcastReceiver:
a.利用按钮点击发送广播 按钮的onClick()中:
…..// 定义一个Action常量
private static final String MY_ACTION = “com.hunsion.action.MY_ACTION”;// 此常量跟
中的属性相对应.………
public void onClick(View v){
}
b.自定义BroadcastReceiver 如下:
继承至 BroadcastReceiver
public cla MyReceiver extends BroadcastReceiver{
@Override//覆盖了onReceive方法 public void onReceive(Context cxt, Intent intent){// 从Intent中获得信息 // 实例化Intent对象 Intent intent = new Intent();// 设置Intent action属性 intent.setAction(MY_ACTION);// 为Intent添加附加信息 intent.putExtra(“msg”, “msg”);// 发出广播 sendBroadcast(intent);
}} String msg = intent.getStringExtra(“msg”);// 使用Toast显示 Toast.makeText(cxt, msg, Toast.LENGTH_LONG).show();
C 如果要使用系统广播事件
则同样要继承BroadcastReceiver 并覆盖onReceive()方法,这里不需要自己构建Intent对象 只是在 配置时使用系统的广播事件,如下:
其中android.intent.action.BOOT_COMPLETED 指的是 系统启动完成的广播事件
常见的标准的广播Action常量:有
android.intent.action.BOOT_COMPLETED系统启动完成android.intent.action.ACTIOPN_TIME_CHANGED时间改变
android.intent.action.ACTIOPN_DATE_CHANGED系统日期改变
android.intent.action.ACTION_TIMEZONES_CHANGED时区改变
android.intent.action.ACTION_BATTERY_LOW电量低
android.intent.action.ACTION_MEDIA_EJECT插入或者播拔出外部媒体
android.intent.action.ACTION_MEDIA_BUTTON按下媒体按钮
android.intent.action.ACTION_PACKAGE_ADDED添加包
android.intent.action.ACTION_PACKEAGE_REMOVED删除包
2.使用Notification和NotificationManger 显示广播消息方法比较简单 一般先获得
NotificationManger,然后实例化Notification 设置其属性,通过
NotificationManger发送通知。
基本步骤为:
a.获得NotificationManager
private NotificationManager nm =
(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
b.实例化Notification对象
Notification n = new Notification();
// 设置显示图标,该图标会在状态栏显示
/*也可以通过这个构造方法来设置 Notification n = new
Notification(icon,tickertext,when);*/
int icon = n.icon = R.drawable.happy;
// 设置显示提示信息,该信息也会在状态栏显示
String tickerText = “aaaaaaa”;
// 显示时间
long when = System.currentTimeMillis();
n.icon = icon;
n.tickerText = tickerText;
n.when = when;
c.调用setLatestEventInfo()方法 在视图中(非状态栏)设置图标和时间。并发出通知、// 实例化Intent
Intent intent = new Intent(MainActivity.this, MainActivity.cla);// 获得PendingIntent
PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
// 设置事件信息
n.setLatestEventInfo(MainActivity.this, “My Title”, “My Content”, pi);// 发出通知
nm.notify(ID, n);
// ID 可以理解为给每个通知一个固定的编号,所以如果我们想取消某个通知。可以调用 nm.cancel(ID);
另:我们可以为Notification对象设置很多其他属性用来进行提示。例如:设置上声音。振动和闪光灯。
a.提示音:
n.defaults |=Notification.DEFAULT_SOUND;
n.sound = Uri.parse(“file:///sdcard/sound.mp3”);//本地声音
n.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI,”6”);b.振动
n.defaults |=Notification.DEFAULT_VIBRATE;
long[] vibrate = {0,50,100,150};
n.vibrate = vibrate;
c.闪光灯
n.defaults |=Notification.DEFAULT_LIGHTS;
n.ledARGB = 0xff00ff00
n.ledOnMS = 300;
n.ledOffMS = 1000;
n.flags |= Notification.FLAG_SHOW_LIGHTS;