Android通知(Notification)进阶技巧
现在你已经掌握了创建和取消通知的方法,并且知道了如何去响应通知的点击事件。不过通知的用法并不仅仅是这些呢,下面我们就来探究一下通知的更多技巧。
setSound
上一小节中创建的通知属于最基本的通知,实际上,NotificationCompat.Builder中提供了非常丰富的API来让我们创建出更加多样的通知效果。当然,每一个API都详细地讲一遍不太可能,我们只能从中选一些比较常用的API来进行学习。先来看看setSound()方法吧,它可以在通知发出的时候播放一段音频,这样就能够更好地告知用户有通知到来。setSound()方法接收一个Uri参数,所以在指定音频文件的时候还需要先获取到音频文件对应的URI。比如说,每个手机的/system/media/audio/ringtones目录下都有很多的音频文件,我们可以从中随便选一个音频文件,那么在代码中就可以这样指定:
Notification notification = new NotificationCompat.Builder(this)
...
.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg")))
.build();
setVibrate
除了允许播放音频外,我们还可以在通知到来的时候让手机进行振动,使用的是vibrate这个属性。它是一个长整型的数组,用于设置手机静止和振动的时长,以毫秒为单位。下标为0的值表示手机静止的时长,下标为1的值表示手机振动的时长,下标为2的值又表示手机静止的时长,以此类推。所以,如果想要让手机在通知到来的时候立刻振动1秒,然后静止1秒,再振动1秒,代码就可以写成:
Notification notification = new NotificationCompat.Builder(this)
...
.setVibrate(new long[] {0, 1000, 1000, 1000 })
.build();
不过,想要控制手机振动还需要声明权限。因此,我们还得编辑AndroidManifest.xml文件,加入如下声明:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.notificationtest"
android:versionCode="1"
android:versionName="1.0" >
...
<uses-permission android:name="android.permission.VIBRATE" />
...
</manifest>
setLights
学会了控制通知的声音和振动,下面我们来看一下如何在通知到来时控制手机LED灯的显示。
现在的手机基本上都会前置一个LED灯,当有未接电话或未读短信,而此时手机又处于锁屏状态时,LED灯就会不停地闪烁,提醒用户去查看。我们可以使用setLights()方法来实现这种效果,setLights()方法接收3个参数,第一个参数用于指定LED灯的颜色,第二个参数用于指定LED灯亮起的时长,以毫秒为单位,第三个参数用于指定LED灯暗去的时长,也是以毫秒为单位。所以,当通知到来时,如果想要实现LED灯以绿色的灯光一闪一闪的效果,就可以写成:
Notification notification = new NotificationCompat.Builder(this)
...
.setLights(Color.GREEN, 1000, 1000)
.build();
当然,如果你不想进行那么多繁杂的设置,也可以直接使用通知的默认效果,它会根据当前手机的环境来决定播放什么铃声,以及如何振动,写法如下:
Notification notification = new NotificationCompat.Builder(this)
...
.setDefaults(NotificationCompat.DEFAULT_ALL)
.build();
注意,以上所涉及的这些进阶技巧都要在手机上运行才能看得到效果,模拟器是无法表现出振动以及LED灯闪烁等功能的。
如果对你有帮助,就一键三连呗(关注+点赞+收藏),我会持续更新更多干货~~