相关文档:
Android基础——Notification使用浅析(一)
1. 设置优先级
优先级 | 描述 |
---|---|
Notification.PRIORITY_MAX | 重要而紧急的通知,通知用户这个事件是时间上紧迫的或者需要立即处理的。 |
Notification.PRIORITY_HIGH | 高优先级用于重要的通信内容,例如短消息或者聊天,这些都是对用户来说比较有兴趣的 |
Notification.PRIORITY_DEFAULT | 默认优先级用于没有特殊优先级分类的通知 |
Notification.PRIORITY_LOW | 低优先级可以通知用户但又不是很紧急的事件。只显示状态栏图标 |
Notification.PRIORITY_MIN | 用于后台消息 (例如天气或者位置信息)。只有用户下拉通知抽屉才能看到内容 |
builder.setPriority(Notification.PRIORITY_HIGH);
2. 事件
提供了 铃声/振动/呼吸灯 三种提醒方式,可以使用一种或同时使用多种
FLAG | 描述 |
---|---|
Notification.DEFAULT_SOUND | 添加默认声音提醒 |
Notification.DEFAULT_VIBRATE | 添加默认震动提醒 |
Notification.DEFAULT_LIGHTS | 添加默认呼吸灯提醒 |
Notification.DEFAULT_ALL | 时添加以上三种默认提醒 |
// 添加默认声音提醒
builder.setDefaults(Notification.DEFAULT_SOUND);
// 添加默认呼吸灯提醒,自动添加FLAG_SHOW_LIGHTS
builder.setDefaults(Notification.DEFAULT_LIGHTS);
添加自定义提醒:
/ 添加自定义声音提醒
builder.setSound(Uri.parse("path/to/sound"));
// 添加自定义震动提醒
// 延迟200ms后震动300ms,再延迟400ms后震动500ms
long[] pattern = new long[]{
200,300,400,500};
builder.setVibrate(pattern);
// 添加自定义呼吸灯提醒,自动添加FLAG_SHOW_LIGHTS
int argb = 0xffff0000; // led灯光颜色
int onMs = 300; // led亮灯持续时间
int offMs = 100; // led熄灯持续时间
builder.setLights(argb, onMs, offMs);
响应紧急事件(全屏通知事件,比如来电)
Intent intent = new Intent(ACTION);
intent.putExtra("op", op);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);
builder.setFullScreenIntent(pi, true);
3. 带下载进度条的Notification
通知可能包括动画形式的进度指示器,向用户显示正在进行的操作状态。 如果可以估计操作所需的时间以及任意时刻的完成进度,则使用“限定”形式的指示器(进度栏)。 如果无法估计操作的时长,则使用“非限定”形式的指示器(Activity 指示器)
要在 Android 4.0 及更高版本的平台上使用进度指示器,需调用 setProgress()
要显示限定形式的进度栏,需要通过调用 setProgress(max, progress, false)
将进度栏添加到通知,然后发出通知。随着操作的进行,递增 progress 并更新通知
int id = 1;
...
mNotifyManager = (NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder = new NotificationCompat.Builder(this);
mBuilder.setContentTitle("Picture Download")
.setContentText("Download in progress")
.setSmallIcon(R.drawable.ic_notification);
// Start a lengthy operation in a background thread
new Thread(
new Runnable() {
@Override
public void run() {
int incr;
for (incr = 0; incr <= 100; incr+=<