前面学习了通知的基本使用,下面学习一下通知的进阶和高级用法。
一、来通知时播放音频
Notification notification = new NotificationCompat.Builder(MainActivity.this)
..................
.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg")))
.build();
二、来通知时振动
使用的是vibrate属性,用于设置手机静止和振动的时长,以毫秒为单位,下标为0的值表示手机静止的时长,下标为1的值表示手机振动的时长,下标为2的值又表示手机的静止时长。所以,想要让手机在通知到来时立刻振动1秒,然后静止1s,再振动,可以这样写
Notification notification = new NotificationCompat.Builder(MainActivity.this)
............
.setVibrate(new long[] {0,1000,1000,1000})
.build();
想要使用振动,还需要声明权限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.notificationtest">
<uses-permission android:name="android.permission.VIBRATE"/>
............
三、设置一张大照片
Notification notification = new NotificationCompat.Builder(MainActivity.this)
..................
.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher_background)))
.build();
四、设置通知的重要度
setPriority()方法接收一个整型参数用于设置这条通知的重要度,共有5个常量值:PRIORITY_DEFAULT表示默认的重要程度,和不设置效果一样;PRIORITY_MIN表示最低的重要程度,系统可能只会在特定场景显示,如用户下拉状态栏时;PRIORITY_LOW表示较低的重要程度,系统可能会将这类通知缩小,或改变显示顺序;PRIORITY_HIGH表示较高的重要程度,系统可能会放大,排在比较靠前的位置;PRIORITY_MAX表示最高的重要程度,这类通知需要让用户立刻看到,并作出响应操作。
Notification notification = new NotificationCompat.Builder(MainActivity.this)
..............
.setPriority(NotificationCompat.PRIORITY_MAX)
.build();
以上的效果如下: