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

通知是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建议的写法。

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值