关于Android 自定义通知栏UI(RemoteViews)的使用(二):Notification的进阶使用

566 阅读2分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战

紧接着上一篇的内容,下面简单介绍下Notification的进阶使用!

什么是进阶使用,就是比基础使用更高级一点,使用的场景不是特别多,但是可以做到特殊的操作

Notification的进阶使用

其实也不是什么特别高级的使用,就是对通知做一些高级的设置,比如声音,显示效果,震动等等 废话不多说,直接上代码

设置震动

notification.setVibrate(new long[]{0,1000,1000,1000})

这个是需要权限的,申请权限:\

<uses-permission android:name="android.permission.VIBRATE"/>

设置声音

.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg"))) //设置通知提示音

设置通知的显示效果

.setLights(Color.GREEN,1000,1000)//设置前置LED灯进行闪烁, 第一个为颜色值 第二个为亮的时长 第三个为暗的时长

这些效果可以连接在一起显示,全部设置完如下:

NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Intent intent = new Intent(MainActivity.this,NotificationActivity.class); 
PendingIntent pi = PendingIntent.getActivity(MainActivity.this,0,intent,0);

Notification notification = new NotificationCompat.Builder(MainActivity.this)
                    .setContentText("这是测试通知内容")
                    .setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
                    .setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg"))) 
                    .setVibrate(new long[]{0,1000,1000,1000})
                    .setLights(Color.GREEN,1000,1000)
                    .setContentIntent(pi)
                    .setDefaults(NotificationCompat.DEFAULT_ALL)
                    .build();
                manager.notify(1,notification);

全部设置完,就可以发送通知了,pendingIntent是点击通知内容的事件处理,跳转到点击后的页面,这些都是Notification的自带的属性设置,如果想设置 显示图片,或者显示的内容很多,或者添加通知内容的显示样式,这些都是需要对通知的内容做特殊处理,比如设置显示文本的style,设置图片的显示,图片可以支持本地,也可以支持网络图片,当然自带的显示只能支持bitmap类型,需要对网络图片做处理后,转换成bitmap后才能显示,这些我们下一篇文章再介绍,以及可以自定义的显示我们的通知样式。