安卓基础:通知的使用


一、通知的基本使用 
           //1、获取一个NotificationManager对象,注意是使用getSystemService(NOTIFICATION_SERVICE)的方式
           NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
           /**
            * 2、获取一个notification(直接new)
            * 参数1:通知的图标
            * 参数2:用于指定通知的 ticker 内容,当通知刚被创建的时候,它会在系统的状态栏一闪而过,属于一种瞬时的提示信息
            * 参数3:用于指定通知被创建的时间,以毫秒为单位,当下拉系统状态栏时,这里指定的时间会显示在相应的通知上
            */
           Notification notification = new Notification(R.drawable.ic_launcher,
                     "This is ticker text", System.currentTimeMillis());
           /**
            * 3、对通知的布局进行设定,这里只需要调用Notification 的 setLatestEventInfo()方法就可以给通知设置一个标准的布局
            * 参数1:上下文context
            * 参数2:标题
            * 参数3:通知内容
            * 参数4:暂时还用不到,可以先传入 null
            */
           notification.setLatestEventInfo(this, "This is content title",
                     "This is content text", null);
           /**
            * 4、显示通知
            * 参数1: id,要保证为每个通知所指定的 id 都是不同的
            * 参数2: Notification 对象
            */
           manager.notify(1, notification);
 
二、然后发现我们点击之后没反应,这就引入了另一个知识点 PendingIntent
可以把 PendingIntent 简单地理解为延迟执行的 Intent
  
           NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

           Notification notification = new Notification(R.drawable.ic_launcher,
                     "This is ticker text", System.currentTimeMillis());
           /**
            * 3、对通知的布局进行设定,这里只需要调用Notification 的 setLatestEventInfo()方法就可以给通知设置一个标准的布局
            * 参数1:上下文context
            * 参数2:标题
            * 参数3:通知内容
            * 参数4:暂时还用不到,可以先传入 null
            */
            Intent intent = new Intent(this, NotificationActivity.class);
           PendingIntent pi = PendingIntent.getActivity(this, 0, intent,
           PendingIntent.FLAG_CANCEL_CURRENT);
          //还记得我们刚才用的参数4吧,当时我们只是传入了一个null,其实这个PendingIntent就是要传到这里的。这里我们创建了一个新的Activity,当我们点击通知的时候,就会跳转到指定的页面
           notification.setLatestEventInfo(this, "This is content title",
                     "This is content text",pi);

           manager.notify(1, notification);

三、让通知的图标消失   逻辑就是当我们进入到我们点击通知的页面时,把通知给cancel()掉

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
//这里我们传入的参数1就是上面我们notify的时候指定的id
           manager.cancel(1);
四、通知的高级技巧

在通知发出的时候播放一段 音频
Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
notification.sound = soundUri;

振动
四个参数下标为 0 的值表示手机静止的时长,下标为 1 的值表示手机振动的时长,下标为 2 的值又表示手
机静止的时长,以此类推。所以,如果想要让手机在通知到来的时候立刻振动 1 秒,然后静
止 1 秒,再振动 1 秒,代码就可以写成
long[] vibrates = {0, 1000, 1000, 1000};
notification.vibrate = vibrates;
注意手机振动还是要申请权限的:
<uses-permission android:name="android.permission.VIBRATE" />

在通知到来时控制手机 LED 灯的显示
ledARGB 用于控制 LED 灯的颜色,一般有红绿蓝三种颜色可选。ledOnMS 用于指定 LED 灯亮起的时长,以毫秒为单位。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;
注意,以上所涉及的这些高级技巧都要在手机上运行才能看得到效果,模拟器是无法表
现出振动、以及 LED 灯闪烁等功能的。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值