Android中使用通知

首先打开手机的开发者选项中的USB调试
使用通知
通知是Android系统中比较有特色的一个功能,当某个应用程序希望用户发出一些提示信息,而应用程序不在前台运行时,就可以借助通知来实现。发出一条通知后,手机最上方的状态栏会显示一个通知图标,下拉状态栏后可以看到通知的详细内容。
基本用法:
首先需要一个NotificationManager来对通知进行管理,可以调用Context的getSystemService()方法获取到。getSystemService()方法接收一个字符串参数用于确定获取系统的哪个服务,这里传入Context.NOTIFICATION_SERVICE。获取NotificationManager的实例就可以写成:
NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
然后使用一个Builder构造器来创建Notification对象,support-v4库中提供了一个NotificationCampat类,使用这个类的构造器来完成创建Notification对象
Notification notification=new NotificationCompat.Builder(context).build();
setContentTitle()方法用于指定通知的标题内容,下拉系统状态栏就可以看到这部分内容。
setContentText()方法用于指定通知的正文内容,同样下拉状态栏就可以看到这部分内容。
setWhen()方法用于指定通知被创建的时间,以毫秒为单位,当下拉系统状态栏时,这里指定的时间会显示在相应的通知上。
setSmallIcon()方法用于设置通知的小图标,注意只能使用纯alpha图层的图片进行设置,小图标会显示在状态栏上。
setLargeIcon()方法用于设置通知的大图标,当下拉系统状态栏时,就可以看到设置的大图标了
调用NotificationManager的notify()方法就可以让通知显示出来
notify()方法接收两个参数,第一个参数时id:要保证每个通知所指定的id都是不同的,第二个参数是Notification对象,这里直接将我们创建好的Notification对象闯入即可。
manager.notify(1,notification);
PendingIntent与Intent异同:
相同:他们都可以去指明某一个“意图”,都可以用于启动活动,启动服务,以及发送广播等。
不同:Intent更加倾向于去立即执行某个动作,而PendIntent更加倾向在某个合适的时机去执行某个动作。故也可以把PendingIntent简单理解为延迟执行的Intent
PendingIntent主要提供了几个静态方法用于获取pendingIntent的实例,可以根据需求选择是使用getActivity()方法,getBroadcast()方法还是getService()方法。他们的参数都是相同的,第一个参数是Context,不用多做解释。第二个参数一般用不到,通常传入0即可,第三个参数是一个Intent对象,我们可以提供这个对象构建出PendingIntent对象。因此这里可以通过这个对象构建出PendingIntent的意图。第四个参数用于确定PendingIntent的行为,有4种值可以选择通常传入0即可
系统状态栏通知图标一直显示在i系统状态栏上,有以下两种方法解决:
一种是显式的调用NotificationCompat.Builder中再连缀一个setAutoCancel()方法
另一种式显式的调用Notificationmanager 的cancel()方法将他取消
通知的进阶技巧
setSound()方法可以再通知发出的时候播放一段音频,这样就能更好告知用户有通知的到来。setSound()方法接收一个Uri参数,所以指定音频文件的时候还要先获取到音频文件对应的URI
.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/luna.ogg"))).build();
还可以在通知的时候让手机进行振动,使用vibrate这个属性。是一个长整形数组,用时设置手机静止和振动的时长,一毫秒为单位,下表为0的值表示手机静止的时长
下表为1的值表示手机振动的时长,下标为2的值表示手机静止的时长,以此来推
手机振动还需要声明权限

让手机的前置LED灯闪烁使用setLights(),接收3个参数第一个是灯的颜色,第二个是灯亮时长,以毫秒为单位,第三个是灯暗的时长
如果不想要繁杂的设置,可以直接使用通知的默认效果,他会根据当前手机的环境决定播放什么铃声,以及如何振动
通知的高级功能
setStyle()方法,这个方法允许我们构建出富文本的通知内容。也就是说通知中不光可以有文字和图标,还可以包含更多的东西,setStyle()方法接收一个NotificationCompat.Style参数,这个参数就是构建具体的富文本信息的,如长文,图片等。
setPriority()方法,他可以用来设置通知的重要程度,接收一个整形参数用来设置这条通知的重要程度,一个有五个常量值可选:
PRIORITY_DEFAULT表示默认的重要程度,和不设置效果一样
PRIORITY_MIN表示最低的重要程度,系统可能只会在特定的场景才会显示这条通知,比如用户下拉状态栏的时候,
PRIORITY_LOW表示较低的重要程度,系统可能会将这类通知缩小,或改变其显示的顺序,将其排在更重要的通知之后,
PRIORITY_HIGH表示较高的重要程度,系统可能会将这类通知放大,或改变其显示的顺序,将其排在比较靠前的位置
PRIORITY_MAX表示最高的重要程度,这类通知消息必须要让用户立刻看到,甚至需要用户做出相应操作。

发布了25 篇原创文章 · 获赞 1 · 访问量 706

猜你喜欢

转载自blog.csdn.net/weixin_43551957/article/details/104008122