您的位置:首页 > 移动开发 > Android开发

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

2015-12-14 23:36 543 查看
通知是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建议的写法。
通知还有很多种的其他写法,比如大视图通知等,而且根据通知设定的不同,我们可以自定义很多个性化的东西再通知上。

这里难以一一介绍,就简单介绍到这里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息