package com.hss01248.notifyutil.builder; import android.app.Notification; import android.app.PendingIntent; import android.graphics.BitmapFactory; import android.net.Uri; import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import com.hss01248.notifyutil.NotifyUtil; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2017/2/13 0013. */ public class BaseBuilder { //最基本的ui public int smallIcon; public CharSequence contentTitle; public CharSequence contentText; public boolean headup; CharSequence summaryText; //最基本的控制管理 public int id; public int bigIcon; public CharSequence ticker = "您有新的消息"; public CharSequence subText; public int flag = NotificationCompat.FLAG_AUTO_CANCEL; public int priority = NotificationCompat.PRIORITY_DEFAULT; public Uri soundUri; public long[] vibratePatten; public int rgb; public int onMs; public int offMs; public int defaults = NotificationCompat.DEFAULT_LIGHTS;//默认只有走马灯提醒 public boolean sound = true; public boolean vibrate = true; public boolean lights = true; public BaseBuilder setLockScreenVisiablity(int lockScreenVisiablity) { this.lockScreenVisiablity = lockScreenVisiablity; return this; } public int lockScreenVisiablity = NotificationCompat.VISIBILITY_SECRET; public long when; //事件 public PendingIntent contentIntent; public PendingIntent deleteIntent; public PendingIntent fullscreenIntent; //种类 public NotificationCompat.Style style; public BaseBuilder setOnGoing() { this.onGoing = true; return this; } public boolean onGoing = false; public BaseBuilder setForgroundService() { this.forgroundService = true; this.onGoing = true; return this; } public boolean forgroundService = false; //带按钮的 public List<BtnActionBean> btnActionBeens; public BaseBuilder addBtn(int icon,CharSequence text,PendingIntent pendingIntent){ if(btnActionBeens == null){ btnActionBeens = new ArrayList<>(); } if(btnActionBeens.size()>5){ throw new RuntimeException("5 buttons at most!"); } btnActionBeens.add(new BtnActionBean(icon,text,pendingIntent)); return this; } public static class BtnActionBean{ public int icon; public CharSequence text; public PendingIntent pendingIntent; public BtnActionBean(int icon, CharSequence text, PendingIntent pendingIntent) { this.icon = icon; this.text = text; this.pendingIntent = pendingIntent; } } public NotificationCompat.Builder getcBuilder() { return cBuilder; } protected NotificationCompat.Builder cBuilder; public BaseBuilder setBase(int icon,CharSequence contentTitle,CharSequence contentText){ this.smallIcon = icon; this.contentTitle = contentTitle; this.contentText = contentText; return this; } public BaseBuilder setId(int id){ this.id = id; return this; } public BaseBuilder setSummaryText(CharSequence summaryText){ this.summaryText = summaryText; return this; } public BaseBuilder setContentText(CharSequence contentText){ this.contentText = contentText; return this; } public BaseBuilder setPriority(int priority){ this.priority = priority; return this; } public BaseBuilder setContentIntent(PendingIntent contentIntent){ this.contentIntent = contentIntent; return this; } public BaseBuilder setDeleteIntent(PendingIntent deleteIntent){ this.deleteIntent = deleteIntent; return this; } //todo public BaseBuilder setFullScreenIntent(PendingIntent fullscreenIntent){ this.fullscreenIntent = fullscreenIntent; return this; } public BaseBuilder setSmallIcon(int smallIcon){ this.smallIcon = smallIcon; return this; } public BaseBuilder setBigIcon(int bigIcon){ this.bigIcon = bigIcon; return this; } public BaseBuilder setHeadup(){ this.headup = true; return this; } public BaseBuilder setTicker(CharSequence ticker){ this.ticker = ticker; return this; } public BaseBuilder setSubtext(CharSequence subText){ this.subText = subText; return this; } public BaseBuilder setAction(boolean sound, boolean vibrate, boolean lights){ this.sound = sound; this.vibrate = vibrate; this.lights = lights; return this; } public void build(){ cBuilder = new NotificationCompat.Builder(NotifyUtil.context); cBuilder.setContentIntent(contentIntent);// 该通知要启动的Intent if(smallIcon >0){ cBuilder.setSmallIcon(smallIcon);// 设置顶部状态栏的小图标 } if(bigIcon >0){ cBuilder.setLargeIcon(BitmapFactory.decodeResource(NotifyUtil.context.getResources(), bigIcon)); } cBuilder.setTicker(ticker);// 在顶部状态栏中的提示信息 cBuilder.setContentTitle(contentTitle);// 设置通知中心的标题 if(!TextUtils.isEmpty(contentText)){ cBuilder.setContentText(contentText);// 设置通知中心中的内容 } cBuilder.setWhen(System.currentTimeMillis()); //cBuilder.setStyle() /* * 将AutoCancel设为true后,当你点击通知栏的notification后,它会自动被取消消失, * 不设置的话点击消息后也不清除,但可以滑动删除 */ cBuilder.setAutoCancel(true); // 将Ongoing设为true 那么notification将不能滑动删除 // notifyBuilder.setOngoing(true); /* * 从Android4.1开始,可以通过以下方法,设置notification的优先级, * 优先级越高的,通知排的越靠前,优先级低的,不会在手机最顶部的状态栏显示图标 */ cBuilder.setPriority(priority); //int defaults = 0; if (sound) { defaults |= Notification.DEFAULT_SOUND; } if (vibrate) { defaults |= Notification.DEFAULT_VIBRATE; } if (lights) { defaults |= Notification.DEFAULT_LIGHTS; } cBuilder.setDefaults(defaults); //按钮 if(btnActionBeens!=null && btnActionBeens.size()>0){ for(BtnActionBean bean: btnActionBeens){ cBuilder.addAction(bean.icon,bean.text,bean.pendingIntent); } } //headup if(headup){ cBuilder.setPriority(NotificationCompat.PRIORITY_MAX); cBuilder.setDefaults(NotificationCompat.DEFAULT_ALL); }else { cBuilder.setPriority(NotificationCompat.PRIORITY_DEFAULT); cBuilder.setDefaults(NotificationCompat.DEFAULT_LIGHTS); } if(TextUtils.isEmpty(ticker)){ cBuilder.setTicker("你有新的消息"); } cBuilder.setOngoing(onGoing); cBuilder.setFullScreenIntent(fullscreenIntent,true); cBuilder.setVisibility(lockScreenVisiablity); } public void show(){ build(); Notification notification = cBuilder.build(); if(forgroundService){ notification.flags = Notification.FLAG_FOREGROUND_SERVICE; } NotifyUtil.notify(id,notification); } }