Android多媒体应用——通知的使用(Notification)

来源:互联网 发布:windows 10 周年更新 编辑:程序博客网 时间:2024/06/05 18:08

通知是android的一大特色。

与其他的语言相比,比如java、c#,想要达到通知这样的效果,你需要自定义许多的东西,而且实现起来难度不低。

但在android中,系统已经提供好了组件,只需要你根据API做调用,就可以很轻易的实现这样的效果。

在android中,经过多个版本的更迭,通知的写法也在演变。

Notification的写法一:

这里,我们直接贴上代码,并在代码中注明解释:

        public void noticeSend(){nManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);Notification notification=new Notification(R.drawable.ic_launcher, "流星",System.currentTimeMillis());Intent intent=new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);PendingIntent piIntent=PendingIntent.getActivity(MainActivity.this, 0, intent, 0);        //震动long [] vis={0,1000,1000,1000};notification.vibrate=vis;//颜色notification.ledARGB=Color.RED;notification.ledOnMS=1000;notification.ledOffMS=1000;notification.flags=Notification.FLAG_SHOW_LIGHTS;notification.setLatestEventInfo(MainActivity.this, "标题", "通知内容", piIntent);nManager.notify(1, notification);}
这就是一个传统的notification的写法。

1、开始是获取NotificationManager的一个实例;

2、然后定义一个notification。该notification的三个参数分别为通知显示的图标、ticker(通知来时,一闪而过的提示)、通知的时间;

3、定义一个PenddingIntent,这个可以理解为是Intent的特殊的一种,是Intent的延迟实现。这个作为一个参数,作用是你点击通知时,意图做什么;这里表示,当你点击通知时,会跳转到辅助设置界面;

4、设置震动,震动是一个long型数组赋值,奇数位表示静止的时长,偶数位表示震动的时长。当你用这个时,你需要在AndroidManifest.xml设置震动权限;

5、颜色,这个设置是用来表示LED的显示。我们这里用醒目的红色来提示,ledOnMS表示开启LED等的时长,ledOffMS表示关闭LED的时长。这样就达到一闪一闪的LED提示效果;

6、最后,用setLatestEventInfo方法,将通知内容设置好;

7、用NotificationManager的实例,来启动这个通知。首个参数是通知的ID。

通过以上几个步骤,我们就完成了一个通知和一些属性的设置。可能你觉得麻烦,因为我们再里面设置了挺多的效果。

简化后,这样其实也是实现了通知:

        public void noticeSend(){nManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);Notification notification=new Notification(R.drawable.ic_launcher, "流星",System.currentTimeMillis());Intent intent=new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);PendingIntent piIntent=PendingIntent.getActivity(MainActivity.this, 0, intent, 0);       notification.setLatestEventInfo(MainActivity.this, "标题", "通知内容", piIntent);nManager.notify(1, notification);}

设置的话,你可以添加一句,notification.defaults=Notification.DEFAULT_ALL.来设置,这就是默认设置。

当通知显示出来后,你会发现,你点击后通知居然还在,这和你平常见到的不一样啊。

这个时候,你可以用nManager.cancel(1),来取消这个通知。(或者用取消全部通知方法)

用以上的写法,可以实现通知,但在新版本的android上,已经不建议这么使用了。会有过时标签提醒,那还有另外的写法吗?

Notication的写法二:

                NotificationCompat.Builder  builder=new NotificationCompat.Builder(this);builder.setAutoCancel(true).setTicker("测试通知来了!").setContentTitle("测试标题").setContentText("测试内容").setDefaults(Notification.DEFAULT_VIBRATE).setPriority(Notification.PRIORITY_DEFAULT).setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL)).setSmallIcon(R.drawable.ic_launcher);                nManager.notify(1, builder.build());

以上,是现在主流的通知的写法,其实写法和设置上大体相同,但这种写法是高版本API建议的写法。

通知还有很多种的其他写法,比如大视图通知等,而且根据通知设定的不同,我们可以自定义很多个性化的东西再通知上。

这里难以一一介绍,就简单介绍到这里。


1 0