Android学习笔记——Notification

        有一段时间没有写Android学习笔记了,中间掉了很多内容,期待后面抽时间补上。今天写一个小播放器用到了Notification,顺便将这个类总结一下。

        Android的通知用来提示用户的某个非紧急事件的发生,会在statusBar上面做出一些图片、文字的提示,打开通知栏之后能看到更多的信息,甚至是通过点击进入一个应用。

下面先来看看Notification这个类:

一、首先是一些常量:

public static final int DEFAULT_ALL = ~0;  // 表示所有的提示方式都采用默认的

public static final int DEFAULT_SOUND = 1;  //采用默认的提示声音

public static final int DEFAULT_VIBRATE = 2;  //采用默认的振动方式。如果需要振动需要打开VIBRATE权限

public static final int DEFAULT_LIGHTS = 4;  // 采用默认的闪灯模式。

以上的这些常量可以通过位操作叠加在notification.deflaults属性上。如:notification.flags |= DEFAULT_SOUND; (notification为一个Notification实例)

 public static final int FLAG_SHOW_LIGHTS        = 0x00000001;   // 闪灯

 public static final int FLAG_ONGOING_EVENT      = 0x00000002;  // 放在通知栏的运行里

 public static final int FLAG_INSISTENT          = 0x00000004;  // 一直进行

 public static final int FLAG_ONLY_ALERT_ONCE    = 0x00000008;  // 振一下或发个声音

 public static final int FLAG_AUTO_CANCEL        = 0x00000010;  // 该通知能被状态栏清除按钮清除掉

 public static final int FLAG_NO_CLEAR           = 0x00000020;  // 不能清除

 public static final int FLAG_FOREGROUND_SERVICE = 0x00000040;  // 到前台来运行的服务

 public static final int FLAG_HIGH_PRIORITY = 0x00000080; // 高优先级,即使屏蔽了statusBar也出现。一般对于电话提醒使用。
以上这些常量可以通过位操作叠加到notification.flags属性上。

二、再来看看类中一些常用的属性:

when  // 时间戳。表示通知出现的时间,一般使用System.currentTimeMillis();

icon  // 通知提示时显示的图标资源ID。

contentIntent  设置PendingIntent对象,点击时发送该Intent

sound 设置声音

tickerText 显示在状态栏中的文字

deflauts与flags上面已经介绍过了。另外还有text,自定义的一些view之类的。

三、常用方法:

1.构造方法:public Notification(int icon, CharSequence tickerText, long when)
构造一个简单的通知,三个参数在上面都已经有了介绍。

2.public void setLatestEventInfo(Context context,
            CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent)
设置最近的事件信息。里面传入了通知的标题、内容以及一个最重要的东西PendingIntent实例对象,用来指示用户的点击响应操作。这部分东西主要是用在通知栏里面。

    关于Notification这个类其实主要就包含了上面这些内容。当然在最新的SDK里面,上面的的这些方法都已经过期不再使用,而是使用一个Builder内部类来实现通知。

四、跟通知密不可分的一个服务NotificationManager。
    一台Android设备只有一个通知管理器,我们可以通过getSystemService(Context.NOTIFICATION_SERVICE)或得通知管理器的服务。当需要使用通知时,通过上面的Notification类构建通知内容,然后通过通知管理器来统一管理发布。
发布通知方法:notificationManager.notify(id, notification); // 这里第一个参数是一个ID,尽量保证在整个设备中唯一,在通知栏里取消通知时会用到此ID;第二个参数即为上面构造好的通知实例对象。


    通过上面这两个类,我们就可以实现通知的发布了,当然这里使用的是系统默认的一些布局,如果想要实现更炫的效果,则需要自己写布局文件,然后设置布局到Notification实例中。下面贴一段简单的代码来看一个简单通知的发布。
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.filemp3, "音乐播放器", System.currentTimeMillis());
notification.flags |= Notification.FLAG_NO_CLEAR;
Intent notificationIntent = new Intent(AudioPlayerActivity.this, AudioPlayerActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, "title", "content", pendingIntent);
notificationManager.notify(R.drawable.filemp3, notification);


五、在来看看google官方上的一些信息。

        Notification从3.0开始引入了Builder类来构造一个通知,如果应用需要安装在较低版本,可以使用官方提供的兼容包,里面包含了NotificationCompat.Builder类来实现同样的功能。

        Notification提供了两种显示方式,一种普通方式还有一种大图方式(从4.1开始支持)。

普通方式:

        普通方式最为常用,其显示高度为64dp,即使您设置了更大的图标也只能显示这么高。其显示的大致格式见下图:


           1. ContentTitle            2. LargeIcon            3.ContentText            4. ContentInfo                 5. SmallIcon              6. Time (setWhen())

           上面的6个部分的内容都可以在Notification中找到相应的设置方法,可以根据自己的需要设置相应的值。

大图方式:

        大图方式从4.1开始支持,它其实就是在普通方式的基础上进行了一个扩展。当用户通过手势滑动操作后展开为大图方式,显示格式如下:


        大图方式的显示内容跟普通方式差不多,就多了一个7:detail area。 这部分内容设置比较灵活,可以是图片、文字等,详细见官方文档。

六、下面再来看看如何创建一个通知。我们通过NotificationCompat.Builder.build()方法来创建一个通知对象,并使用NotificationManager.notify()方法将它传递给系统。

        1.必须设置的一些参数:

         上面已经介绍了一个Notification可以显示的信息,总共有6(7)项,实际在创建一个通知对象时不需要所有的元素都显示,但有几个是必须要设置的,它们及其对应的设置方法如下:

       smallIcon —— setSmallIcon();

      contentTitle —— setContentTitle();

      contentText —— setContentText();

当然其它参数如果需要显示,也使用与其对应的方法来一一设置即可。

        2.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值