android 通知notification

尊重原创,谢绝复制,转发请标明http://blog.csdn.net/zenmela2011/article/details/49663133

当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,可以借助通知来实现。发出一条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详细内容。

活动既可以在活动中创建,也可以在广播接收器、服务中创建。但是在活动中创建通知是比较少的,因为一般只有当程序进入到后台时才需要使用通知。

一、使用通知的步骤如下:

①通过getSystemService()方法得到NotificationManager对象,对通知进行管理。

NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
②创建一个Notification对象。这个对象用于存储通知所需的各种的信息。Notification有三个参数,第一个参数指定通知的图标;第二个参数指定通知的ticker内容,当通知刚创建的时候,它会在系统的状态栏一闪而过,属于一种瞬间的提示信息;第三个参数指定通知被创建的时间,已毫秒为单位,当下拉系统状态栏时,这里指定的时间会显示在响应的通知上。

Notification notification=new Notification(R.drawable.ic_launcher,"通知的提示内容",System.currentTimeMillis());
③对通知的布局进行设置。

这里调用Notification的setLatestEventInfo()方法给通知设置一个标准的布局。这个方法接收四个参数,第一个参数是Context;第二个参数指定通知的标题内容,下拉系统状态栏可以看到这部分内容;第三个参数指定通知的正文内容,同样下拉系统状态栏也可以看到这部分内容;第四个参数是PendingIntent。PendingIntent实现的是点击通知时进入指定的界面中。PendingIntent类提供了几个静态方法用于获取PendingIntent对象,可以根据需求选择使用getActivity()方法、getBroascast()方法、getService()方法。这几个方法接收的参数是相同的,第一个是Context,第二个参数一般用不到,通常传入0即可;第三个参数是Intent对象,构建出pendingItent的意图;第四个参数用于确定pendingIntent的行为,有FLAG_ONE_SHOT、FLAG_NO_CREATE、FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT这四种值。

Intent intent=new Intent(MainActivity.this,NotificationActivity.class);
				PendingIntent pendingIntent= PendingIntent.getActivity(MainActivity.this,0,intent,PendingIntent.FLAG_ONE_SHOT);
				notification.setLatestEventInfo(MainActivity.this, "通知的标题", "通知的内容", pendingIntent);

④调用NotificationManager的notify()方法让通知显示出来。notify()方法有两个参数,第一个参数是通知的ID,要保证为每一个通知所指定的id都是不同的;第二个参数是Notification对象。

notificationManager.notify(1, notification);
⑤点击下拉系统状态栏的通知后,将状态栏的通知取消。在NotificationActivity活动界面中调用NotificationManager的cancel()方法取消通知。cancel()方法接收一个参数,即将要取消的通知的ID。即你要取消那一条通知,就在cancel()方法中传入该通知的id就可以了。

public class NotificationActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_notification);
		
		NotificationManager manager=(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		manager.cancel(1);
	}

}

二、通知的高级技巧

1、在通知发出的时候播放一段音频

用到的是Notification类的sound属性,sound是一个Uri对象,所以在指定音频文件的时候需要先获取到音频文件对应的Uri。比如,在手机的/system/media/audio/ringtones目录下有一个Basic_tone.ogg音频文件,那么在代码中可以这样指定:

<span style="font-size:18px;">Uri soundUri=Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
notification.sound=soundUri;</span>
2、通知到来时手机震动

使用的是vibrate属性。它是一个长整型数组,用于设置手机静止和震动的时长,以毫秒为单位。下标为0的值表示手机静止的时长,下标为1的值表示手机震动的时长,下标为2的值又表示手机静止的时长,以此类推。所以,如果想要让手机在通知到来的时候立刻震动一秒,然后静止一秒,再震动一秒,代码可以这样写:

long[] vibrates={0,1000,1000,1000};
notification.vibrate = vibrates;
注意:要控制手机震动需要添加权限android.permission.VIBRATE

3、手机LED灯显示

手机前置一个LED灯,当有未接电话或未读短信,而手机又处于锁屏状态时,LED灯会不停闪烁,提醒用户去查看。用到的是ledARGB、ledOnMS、ledOffMS以及flags这几个属性。ledARGB用于控制LED灯的颜色,一般有红绿蓝三种颜色可选。ledOnMS用于指定灯亮起的时长,以毫秒为单位。ledOffMS用于指定LED灯暗去的时长,以毫秒为单位。flags用于指定通知的一些行为,其中就包括显示LED灯这一选项。所以,当通知到来时,如果想要实现LED灯以绿色的灯光一闪一闪的效果,就可以写成:

notification.ledARGB = Color.GREEN;
notification.ledOnMS = 1000;
notification.ledOffMS = 1000;
notification.flags = Notification.FLAG_SHOW_LIGHTS;
当然,如果不想进行那么繁琐的设置,可以使用通知的默认效果,它会根据当前手机的环境来决定播放什么铃声,以及如何震动,写法如下:

notification.defaults = Notification.DEFAULT_ALL;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值