Notification的使用
2012-10-30 14:15 ...平..淡... 阅读(334) 评论(1) 编辑 收藏 举报一直都没有看Notification,刚好遇到,就静下来学习下。虽然简单,但是还稍稍总结下。
// 创建NotificationManager对象 NotificationManager manager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); // 创建Notification对象 Notification notification = new Notification(); // 配置其他属性 // 设置显示在手机最上边的状态栏的图标 notification.icon = R.drawable.ic_launcher; // 通知被点击后自动消失 notification.flags = Notification.FLAG_AUTO_CANCEL; // 当当前的notification被放到状态栏上的时候,提示内容 notification.tickerText = "来通知啦!!!"; /*** * notification.contentIntent:一个PendingIntent对象,当用户点击了状态栏上的图标时,该Intent会被触发 * notification.contentView:我们可以不在状态栏放图标而是放一个view * notification.deleteIntent 当当前notification被移除时执行的intent * notification.vibrate 当手机震动时,震动周期设置 */ // 添加声音提示 notification.defaults=Notification.DEFAULT_SOUND; // audioStreamType的值必须AudioManager中的值,代表着响铃的模式 notification.audioStreamType= android.media.AudioManager.ADJUST_LOWER; Intent intent = new Intent(Cbtest1.this,other.class); PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0); notification.setLatestEventInfo(this, "标题", "我是通知的内容~~~", pIntent); manager.notify(R.drawable.ic_launcher, notification);
(ps:我之前又忘了在AndroiManifest.xml文件中声明下other.java这个activity...⊙﹏⊙b)
当下拉通知栏,点击通知事件后,会跳转到other.java这个activity来处理。
分析:NotificationManager里的notify(id,notification)中的id是用来唯一标识我们当前的这个notification的标识符,我们通过cancel方法删除通知时,传递的就是这个值。可能读者在看很多文档的时候,发现这个地方指定了一个莫名奇妙的值,例如R.drawable.ic_launcher,为什么呢?因为id号满足了"这个参数必须是唯一标识"的原理,很巧妙的用了我们系统中的图片资源或者其他资源的索引ID,我们都知道,这些值肯定都是唯一的!
------------------------------------------------------------------------------------------------------
其他相关知识(摘抄):
NoticificationManager 很容易可以放在状态栏,也很容易实现从statusbar进入程序中,NoticificationManager中通过intent执行此程序的activity就可以了
NotificationManager(通知管理器): NotificationManager负责通知用户事件的发生。
NotificationManager有三个公共方法:
1. cancel(int id) 取消以前显示的一个通知.假如是一个短暂的通知,试图将隐藏,假如是一个持久的通知,将从状态条中移走.
2. cancelAll() 取消以前显示的所有通知.
3. notify(int id, Notification notification) 把通知持久的发送到状态条上.
//初始化NotificationManager:
NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification 代表着一个通知。
Notification的属性: audioStreamType 当声音响起时,所用的音频流的类型 contentIntent 当通知条目被点击,就执行这个被设置的Intent. contentView 当通知被显示在状态条上的时候,同时这个被设置的视图被显示. defaults 指定哪个值要被设置成默认的. deleteIntent 当用户点击"Clear All Notifications"按钮区删除所有的通知的时候,这个被设置的Intent被执行. icon 状态条所用的图片. iconLevel 假如状态条的图片有几个级别,就设置这里. ledARGB LED灯的颜色. ledOffMS LED关闭时的闪光时间(以毫秒计算) ledOnMS LED开始时的闪光时间(以毫秒计算) number 这个通知代表事件的号码 sound 通知的声音 tickerText 通知被显示在状态条时,所显示的信息 vibrate 振动模式. when 通知的时间戳.
将Notification发送到状态栏上:
Notification notification = new Notification(); nm.notify(0, notification); //发送到状态栏上
------------------------------------------------------------------------------------------------------------
Notification提供了丰富的手机提示方式:
a)在状态栏(Status Bar)显示的通知文本提示,如:
notification.tickerText = "hello";
b)发出提示音,如:
notification.defaults = Notification.DEFAULT_SOUND; notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3"); notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
c)手机振动,如:
notification.defaults = Notification.DEFAULT_VIBRATE; long[] vibrate = {0,100,200,300}; notification.vibrate = vibrate;
d)LED灯闪烁,如:
notification.defaults = Notification.DEFAULT_LIGHTS; notification.ledARGB = 0xff00ff00; notification.ledOnMS = 300; notification.ledOffMS = 1000; notification.flags = Notification.FLAG_SHOW_LIGHTS;