package com.hotbitmapgg.moequest.notice;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import android.widget.RemoteViews;
import java.util.ArrayList;
import java.util.List;
public class HeadsUp {
private Context context;
//出现时间
private long duration = 9;
private Notification notification;
private Builder builder;
private boolean isSticky = false;
private boolean activateStatusBar = true;
private Notification silencerNotification;
//间隔时间
private long interval = 600;
private int code;
private List<NotificationCompat.Action> actions;
private CharSequence titleStr;
private CharSequence msgStr;
private int icon;
private View customView;
private boolean isExpand;
private HeadsUp(Context context) {
this.context = context;
}
public static class Builder extends NotificationCompat.Builder {
private List<NotificationCompat.Action> actions = new ArrayList<NotificationCompat.Action>();
private HeadsUp headsUp;
public Builder(Context context) {
super(context);
headsUp = new HeadsUp(context);
}
/**
* 显示全部界面
*/
public Builder setUsesChronometer(boolean isExpand) {
headsUp.setExpand(isExpand);
return this;
}
/**
* Set the first line of text in the platform notification template.
*/
public Builder setContentTitle(CharSequence title) {
headsUp.setTitle(title);
super.setContentTitle(title);
return this;
}
/**
* Set the second line of text in the platform notification template.
*/
public Builder setContentText(CharSequence text) {
headsUp.setMessage(text);
super.setContentText(text);
return this;
}
public Builder setSmallIcon(int icon) {
headsUp.setIcon(icon);
return this;
}
protected Builder setIcon(int icon) {
super.setSmallIcon(icon);
return this;
}
public Builder setSticky(boolean isSticky) {
headsUp.setSticky(isSticky);
return this;
}
@Override
public Builder addAction(int icon, CharSequence title, PendingIntent intent) {
NotificationCompat.Action action = new NotificationCompat.Action(icon, title, intent);
actions.add(action);
super.addAction(icon, title, intent);
return this;
}
public HeadsUp buildHeadUp() {
headsUp.setNotification(this.build());
headsUp.setActions(actions);
headsUp.setBuilder(this);
return headsUp;
}
private Notification silencerNotification() {
super.setSmallIcon(headsUp.getIcon());
setDefaults(0);
return this.build();
}
@Override
public Builder setSmallIcon(int icon, int level) {
setSmallIcon(icon);
return this;
}
@Override
public Builder setAutoCancel(boolean autoCancel) {
super.setAutoCancel(autoCancel);
return this;
}
@Override
public Builder setColor(int argb) {
super.setColor(argb);
return this;
}
@Override
public Builder setDefaults(int defaults) {
super.setDefaults(defaults);
return this;
}
@Override
public Builder setFullScreenIntent(PendingIntent intent, boolean highPriority) {
super.setFullScreenIntent(intent, highPriority);
return this;
}
@Override
public Builder setOngoing(boolean ongoing) {
super.setOngoing(ongoing);
return this;
}
@Override
public Builder setVibrate(long[] pattern) {
super.setVibrate(pattern);
return this;
}
@Override
public Builder setLargeIcon(Bitmap icon) {
super.setLargeIcon(icon);
return this;
}
@Override
public Builder setLights(int argb, int onMs, int offMs) {
super.setLights(argb, onMs, offMs);
return this;
}
@Override
public Builder setWhen(long when) {
super.setWhen(when);
return this;
}
@Override
public Builder setShowWhen(boolean show) {
super.setShowWhen(show);
return this;
}
@Override
public Builder setSubText(CharSequence text) {
super.setSubText(text);
return this;
}
@Override
public Builder setNumber(int number) {
super.setNumber(number);
return this;
}
@Override
public Builder setContentInfo(CharSequence info) {
super.setContentInfo(info);
return this;
}
@Override
public Builder setProgress(int max, int progress, boolean indeterminate) {
super.setProgress(max, progress, indeterminate);
return this;
}
@Override
public Builder setContent(RemoteViews views) {
super.setContent(views);
return this;
}
@Override
public Builder setContentIntent(PendingIntent intent) {
super.setContentIntent(intent);
return this;
}
@Override
public Builder setDeleteIntent(PendingIntent intent) {
super.setDeleteIntent(intent);
return this;
}
@Override
public Builder setTicker(CharSequence tickerText) {
super.setTicker(tickerText);
return this;
}
@Override
public Builder setTicker(CharSequence tickerText, RemoteViews views) {
super.setTicker(tickerText, views);
return this;
}
@Override
public Builder setSound(Uri sound) {
super.setSound(sound);
return this;
}
@Override
public Builder setSound(Uri sound, int streamType) {
super.setSound(sound, streamType);
return this;
}
@Override
public Builder setOnlyAlertOnce(boolean onlyAlertOnce) {
super.setOnlyAlertOnce(onlyAlertOnce);
return this;
}
@Override
public Builder setLocalOnly(boolean b) {
super.setLocalOnly(b);
return this;
}
@Override
public Builder setCategory(String category) {
super.setCategory(category);
return this;
}
@Override
public Builder setPriority(int pri) {
super.setPriority(pri);
return this;
}
@Override
public Builder addPerson(String uri) {
super.addPerson(uri);
return this;
}
@Override
public Builder setGroup(String groupKey) {
super.setGroup(groupKey);
return this;
}
@Override
public Builder setGroupSummary(boolean isGroupSummary) {
super.setGroupSummary(isGroupSummary);
return this;
}
@Override
public Builder setSortKey(String sortKey) {
super.setSortKey(sortKey);
return this;
}
@Override
public Builder addExtras(Bundle extras) {
super.addExtras(extras);
return this;
}
@Override
public Builder setExtras(Bundle extras) {
super.setExtras(extras);
return this;
}
@Override
public Builder addAction(NotificationCompat.Action action) {
actions.add(action);
super.addAction(action);
return this;
}
@Override
public Builder setStyle(NotificationCompat.Style style) {
super.setStyle(style);
return this;
}
@Override
public Builder setVisibility(int visibility) {
super.setVisibility(visibility);
return this;
}
@Override
public Builder setPublicVersion(Notification n) {
super.setPublicVersion(n);
return this;
}
}
protected void setIcon(int dRes) {
icon = dRes;
}
/**
* 设置消息标题
*/
protected void setTitle(CharSequence titleStr) {
this.titleStr = titleStr;
}
/**
* 设置消息内容
*/
protected void setMessage(CharSequence msgStr) {
this.msgStr = msgStr;
}
public Context getContext() {
return context;
}
public long getDuration() {
return duration;
}
public long getInterval() {
return interval;
}
public CharSequence getTitleStr() {
return titleStr;
}
public CharSequence getMsgStr() {
return msgStr;
}
public int getIcon() {
return icon;
}
public void setInterval(long interval) {
this.interval = interval;
}
public Notification getNotification() {
return notification;
}
protected void setNotification(Notification notification) {
this.notification = notification;
}
public View getCustomView() {
return customView;
}
public void setCustomView(View customView) {
this.customView = customView;
}
public int getCode() {
return code;
}
protected void setCode(int code) {
this.code = code;
}
protected List<NotificationCompat.Action> getActions() {
return actions;
}
protected void setActions(List<NotificationCompat.Action> actions) {
this.actions = actions;
}
protected boolean isExpand() {
return isExpand;
}
protected void setExpand(boolean isExpand) {
this.isExpand = isExpand;
}
protected Notification getSilencerNotification() {
return getBuilder().silencerNotification();
}
protected Builder getBuilder() {
return builder;
}
private void setBuilder(Builder builder) {
this.builder = builder;
}
public boolean isSticky() {
return isSticky;
}
public void setSticky(boolean isSticky) {
this.isSticky = isSticky;
}
protected boolean isActivateStatusBar() {
return activateStatusBar;
}
public void setActivateStatusBar(boolean activateStatusBar) {
this.activateStatusBar = activateStatusBar;
}
}