Notification与NotificationManager详细介绍

雪儿若馨

雪儿若馨

2016-02-19 11:27

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享Notification与NotificationManager详细介绍教程,希望对大家能有一点小小的帮助。
在Android系统中,发一个状态栏通知还是很方便的。下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置?
首先,发送一个状态栏通知必须用到两个类:NotificationManager、Notification。
NotificationManager:是状态栏通知的管理类,负责发通知、清楚通知等。
NotificationManager是一个系统Service,必须通过getSystemService()方法来获取。
NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification:是具体的状态栏通知对象,可以设置icon、文字、提示声音、振动等等参数。
下面是设置一个通知需要的基本参数:
Anicon(通知的图标)
Atitleandexpandedmessage(通知的标题和内容)
APendingIntent(点击通知执行页面跳转)
一、创建Notification
通过NotificationManager的notify(int,Notification)方法来启动Notification。
第一个参数唯一的标识该Notification,第二个参数就是Notification对象。
二、更新Notification
调用Notification的setLatestEventInfo方法来更新内容,然后再调用NotificationManager的notify()方法即可。(具体可以看下面的实例)
三、删除Notification
通过NotificationManager的cancel(int)方法,来清除某个通知。其中参数就是Notification的唯一标识ID。
当然也可以通过cancelAll()来清除状态栏所有的通知。
四、Notification设置(振动、铃声等)
1.基本设置
代码如下:

//新建状态栏通知
baseNF=newNotification();
//设置通知在状态栏显示的图标
baseNF.icon=R.drawable.icon;
//通知时在状态栏显示的内容
baseNF.tickerText="YouclickedBaseNF!";
//通知的默认参数DEFAULT_SOUND,DEFAULT_VIBRATE,DEFAULT_LIGHTS.
//如果要全部采用默认值,用DEFAULT_ALL.
//此处采用默认声音
baseNF.defaults=Notification.DEFAULT_SOUND;
//第二个参数:下拉状态栏时显示的消息标题expandedmessagetitle
//第三个参数:下拉状态栏时显示的消息内容expandedmessagetext
//第四个参数:点击该通知时执行页面跳转
baseNF.setLatestEventInfo(Lesson_10.this,"Title01","Content01",pd);
//发出状态栏通知
//ThefirstparameteristheuniqueIDfortheNotification
//andthesecondistheNotificationobject.
nm.notify(Notification_ID_BASE,baseNF);

2.添加声音
如果要采用默认声音,只要使用default就可以了。
代码如下:

baseNF.defaults=Notification.DEFAULT_SOUND;

如果要使用自定义声音,那么就要用到sound了。如下:
代码如下:

notification.sound=Uri.parse("file:///sdcard/notification/ringer.mp3");

上面这种方法,使用的是自己的铃声,如果想用系统自带的铃声,可以这样:
代码如下:

notification.sound=Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI,"6");

需要注意一点,如果default、sound同时出现,那么sound无效,会使用默认铃声。
默认情况下,通知的声音播放一遍就会结束。如果你想让声音循环播放,需要为flags参数加上FLAG_INSISTENT。这样声音会到用户响应才结束,比如下拉状态栏。
代码如下:

notification.flags|=notification.FLAG_INSISTENT;

3.添加振动
如果是使用默认的振动方式,那么同样也是使用default。
代码如下:

notification.defaults|=Notification.DEFAULT_VIBRATE;

当然也可以自己定义振动形式,这边需要用到Long型数组。
代码如下:

long[]vibrate={0,100,200,300};
notification.vibrate=vibrate;

这边的Long型数组中,第一个参数是开始振动前等待的时间,第二个参数是第一次振动的时间,第三个参数是第二次振动的时间,以此类推,随便定义多长的数组。但是采用这种方法,没有办法做到重复振动。
同样,如果default、vibrate同时出现时,会采用默认形式。
另外还需要注意一点:使用振动器时需要权限,如下:
代码如下:

uses-permissionandroid:name="android.permission.VIBRATE"/uses-permission

4.闪光
使用默认的灯光,如下:
代码如下:

notification.defaults|=Notification.DEFAULT_LIGHTS;

自定义:
代码如下:

notification.ledARGB=0xff00ff00;
notification.ledOnMS=300;
notification.ledOffMS=1000;
notification.flags|=Notification.FLAG_SHOW_LIGHTS;

其中ledARGB表示灯光颜色、ledOnMS亮持续时间、ledOffMS暗的时间。
注意:这边的颜色跟设备有关,不是所有的颜色都可以,要看具体设备。
5.其他有用的设置
代码如下:

flags:
Notification.FLAG_INSISTENT;//让声音、振动无限循环,直到用户响应
Notification.FLAG_AUTO_CANCEL;//通知被点击后,自动消失
Notification.FLAG_NO_CLEAR;//点击'Clear'时,不清楚该通知(QQ的通知无法清除,就是用的这个
//自定义下拉视图,比如下载软件时,显示的进度条。
Notificationnotification=newNotification();
notification.icon=R.drawable.icon;
notification.tickerText="Custom!";
RemoteViewscontentView=newRemoteViews(getPackageName(),R.layout.custom);
contentView.setImageViewResource(R.id.image,R.drawable.icon);
contentView.setTextViewText(R.id.text,"Hello,thismessageisinacustomexpandedview");
notification.contentView=contentView;
//使用自定义下拉视图时,不需要再调用setLatestEventInfo()方法
//但是必须定义contentIntent
notification.contentIntent=pd;
nm.notify(3,notification);
展开更多 73%)
分享
qqQQ
qzoneQQ空间
weibo微博

猜你喜欢

Notification与NotificationManager详细介绍

编程语言 网络编程
Notification与NotificationManager详细介绍

java与c#的语法区别详细介绍

编程语言 网络编程
java与c#的语法区别详细介绍

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Excel详细介绍SUMPRODUCT

电脑入门
Excel详细介绍SUMPRODUCT

Android Bitmap详细介绍

编程语言 网络编程
Android Bitmap详细介绍

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ToonBoom Harmony详细介绍

电脑网络
ToonBoom Harmony详细介绍

DOCTYPE类型详细介绍

Web开发
DOCTYPE类型详细介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Linux使用S3QL创建加密文件系统的方法

Linux使用S3QL创建加密文件系统的方法

js中几种去掉字串左右空格的方法

js中几种去掉字串左右空格的方法
下拉加载更多内容 ↓