通知的使用

  相比于广播接收器和服务,在活动里创建通知的场景还是比较少的,一般只有当程序进入到后台的时候我们才需要使用通知。但是无论在哪里创建通知,整体的步骤都是相同的。

NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

  由于几乎Android系统的每一个版本都会对通知这部分功能进行或多或少的修改,API稳定性的问题显得尤其严重,为了解决这个问题,可以使用support库中提供的兼容API。support-v4库中提供了一个NotificationCompat类,使用这个类的构造器来创建Notification对象,就可以保证我们的程序在所有Android系统的版本上都能正常工作。如下创建一个空的Notification对象:

Notification notification = new NotificationCompat.Builder(context).build();

常用更丰富的基本设置如下:

Notification notification = new NotificationCompat.Builder(context)
                        .setContentTitle("content title")
                        .setContentText("content text")
                        .setWhen(System.currentTimeMillis())
                        .setSmallIcon(R.drawable.small_icon)
                        .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.large_icon))
                        .build();

说明:setWhen()方法用于指定通知被创建的时间,以毫秒为单位,当下拉系统状态栏时,这里指定的时间会显示在相应的通知上

manager.notify(1, notification); //第一个参数id,确保每个通知不同

为响应通知的点击事件

Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
Notification notification = new NotificationCompat.Builder(context)
                .set...
                .setContentIntent(pi)
                .build();
manager.notify(1, notification);

点击通知后该通知仍在系统状态栏显示,有两点方法可以解决点击通知后消失。
方法1:

Notification n = new NotificationCompat.Builder(this).setAutoCancel(true).build();

方法2:
PendingIntent跳转到的Activity中,onCreate()方法中添加:

NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
manager.cancel(1); //参数为相应通知的id

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

Notification notification = new NotificationCompat.Builder(this)
                .set...
                .setSound(Uri.fromFile(new File("/../music.ogg")))
                .build();

在通知发出的时候进行振动:
说明:参数为手机静止和振动时长,单位毫秒,下标0是静止时长,下标1是振动时长,下标2是静止时长,以此类推

Notification notification = new NotificationCompat.Builder(this)
                .set...
                .setVibrate(new long[]{0, 1000, 1000, 1000})
                .build();

同时需要添加权限:

<uses-permission android:name="android.permission.VIBRATE"/>

在通知到来时控制手机LED灯的显示:
说明:参数1是LED灯的颜色,参数2是LED灯亮起的时长单位毫秒,参数3是LED灯暗去的时长单位毫秒,实现绿光一闪一闪的效果如下

Notification notification = new NotificationCompat.Builder(this)
                .set...
                .setLights(Color.GREEN, 1000, 1000)
                .build();

默认效果设置

Notification notification = new NotificationCompat.Builder(this)
                .set...
                .setDefaults(NotificationCompat.DEFAULT_ALL)
                .build();

在通知中显示一段长文字

Notification notification = new NotificationCompat.Builder(this)
                .set...
                .setStyle(new NotificationCompat.BigTextStyle().bigText("长文字内容"))
                .build();

在通知里显示一张大图片

Notification notification = new NotificationCompat.Builder(this)
                .set...
                .setStyle(new NotificationCompat.BigPictureStyle().bigPicture
                    (BitmapFactory.decodeResource(getResources(), R.drawable.big_image)))
                .build();

设置通知的重要程度,共5个常量可选即PRIORITY_DEFAULT, PRIORITY_MIN, PRIORITY_LOW, PRIORITY_HIGH, PRIORITY_MAX

Notification notification = new NotificationCompat.Builder(this)
                .set...
                .setPriority(NotificationCompat.PRIORITY_MAX)
                .build();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打不死的迪仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值