一、前言
在日常的Andorid开发当中,Notification是很常用的,比如我们接收到短信信息,接收客户端App推送信息等等...这时候就会在手机顶部通知栏的地方弹出一条信息提示我们。它的作用一般可用于:显示接收到短信信息消息、显示第三方推送或者服务器传递过来的信息等等...
二、概述
Notification支持文字内容显示、震动、三色灯、铃声等多种提示形式,三色灯不建议使用,因为现在这个的需求相对还是比较少的,其实主要就是适配起来也是非常难的,大家有知道,毕竟安卓手机那么多,这里我就不多说了、我们一般在日常开发当中,建议采用的是默认情况下,也就是使用Notification来显示消息标题、消息内容、送达时间这3项内容就好。因为这个比较符合普通一般的需求,所以我个人比较建议。下面看看通知的基本布局。
这个基本布局图是我从别人博客拿过来的是为了大家方便,下面让我们来一起看看通用的Notification布局一般元素分别有哪些?
1. 标题 Title/Name
2. 大图标 Icon/Photo
3. 内容文字
4. 内容信息 MESSAGE
5. 小图标 Secondary Icon
6. 通知的时间 Timestamp,默认为系统发出通知的时间,也可通过setWhen()来设置
这里需要注意的是,在大图标icon当中,不同分辨率设备中,存放的icon图片需要我们去考虑,因为,过大icon图片或者过小的icon图片,可能会造成Notification显示icon的时候被切图等等,具体适配icon方案可自行百度。
三、使用分析
状态通知栏主要涉及到2个类: Notification 和 NotificationManager
Notification 是通知信息类,可以在里面设置一些属性和信息等等
NotificationManager 是状态栏通知的管理类,负责发通知、清除通知等操作。
四、基本用法
在这里,主要分为四步走!
第一步、获取NotificationManager 状态栏通知管理器,代码如下
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
第二步、实例化通知栏构造器
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
第三步、实例化通知栏构造器好了之后,我们构造器对象mBuilder进行标题、内容、属性等等进行设置
mBuilder.setContentTitle("标题")//设置通知栏标题
.setContentText("内容") //设置通知栏显示内容
.setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL)) //设置通知栏点击意图
.setWhen(System.currentTimeMillis())//通知产生的时间,这里是获取当前系统时间
.setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消
.setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合
.setAutoCancel(true)
.setSmallIcon(R.mipmap.ic_launcher);//设置通知小ICON
第四步、发送请求通知
mNotificationManager.notify(0, mBuilder.build());
这样,我们就能创建出一个常用的默认系统Nofitication通知栏出来了,这个虽然是日常开发中常见的,但是大家有时候会发现有更多的需求,比如接收到消息之后,我们还要给用户给予震动的提示、声音提示等等,这时候就涉及到了通知栏构造器的更多方法了。下面我将罗列出来。这里我们用到NotificationCompat构造器,所以我们就通过NotificationCompat这个构造器来调用方法。
五、NotificationCompat构造器常用方法
方法1、setDefaults(int defaults)
功能:向通知添加声音、闪灯和振动效果的
对应属性:
Notification.DEFAULT_VIBRATE //添加默认震动提醒 需要注意的是:如果用到这个震动提醒,我们需要在清单文件中加入VIBRATE permission
Notification.DEFAULT_SOUND // 添加默认声音提醒
Notification.DEFAULT_LIGHTS // 添加默认三色灯提醒
Notification.DEFAULT_ALL // 添加默认以上3种全部提醒
比如我们想添加默认声音提醒,可以这样写
.setDefaults(Notification.DEFAULT_SOUND)
方法2、setVibrate(long[] pattern)
功能:设置震动的方式间隔时间,这里参数传递是一个长整数的数组,说明我们需要传递多个参数
虽然这个需求是很少见的,但是我们还可以先了解下
比如我们想要实现效果:首先从0ms开始,然后振动500ms,再延迟1000ms,接着再振动1500ms。可以这样写
.setVibrate(new long[]{0,500,1000,1500});
功能:用来设置自定义提醒声音,就像我们手机短信来的时候,那个自定义的声音一样。所以我们还可以用这个给通知栏传递自定义声音,在这里我们只需要传递一个url即可
基本用法:
.setSound(Uri.parse("file:///sdcard/xx/xx.mp3"))
今天的Nitification通知栏基本用法和构造器常用方法讲到这里,希望对大家能有所帮助!