package cn.mutils.app.ui.pattern;
import android.os.Handler;
import android.os.Looper;
import cn.mutils.app.ui.AppActivity;
/**
* Helper class for pattern layer of gestures password
*/
@SuppressWarnings("unused")
public class PatternLayerHelper {
/**
* No checking gestures password for three minutes
*/
public static final long PATTERN_DISABLE_SHORT = 180000L;
/**
* No checking gestures password for five minutes
*/
public static final long PATTERN_DISABLE_LONG = 300000L;
protected static long sHeartbeatTime = 0;
/**
* Whether open UI heart beat
*/
protected boolean mHeartbeatEnable;
protected long mNoPatternDeadLine = 0;
protected long mNoPatternDuration = 0;
protected Handler mHeartbeatHandler;
protected Runnable mHeartbeatRunnable;
protected AppActivity mActivity;
public PatternLayerHelper(AppActivity context) {
mActivity = context;
}
public void show() {
mActivity.startPatternActivity();
}
public void onDestroy() {
if (mHeartbeatHandler != null) {
mHeartbeatHandler.removeCallbacksAndMessages(null);
}
}
public void onStart() {
if (mHeartbeatEnable) {
mHeartbeatHandler.postDelayed(mHeartbeatRunnable, 1000);
}
}
public void onResume() {
if (mHeartbeatEnable) {
if (mNoPatternDeadLine == 0) {
if (mActivity.checkPattern()) {
doCheck();
}
} else {
if (mNoPatternDeadLine < System.currentTimeMillis()) {
if (mActivity.checkPattern()) {
doCheck();
}
mNoPatternDeadLine = 0;
}
}
mActivity.enablePattern();
}
}
public void onStop() {
if (mHeartbeatEnable) {
mHeartbeatHandler.removeCallbacksAndMessages(null);
long currentTime = System.currentTimeMillis();
sHeartbeatTime = currentTime;
if (mNoPatternDuration != 0) {
mNoPatternDeadLine = currentTime + mNoPatternDuration;
mNoPatternDuration = 0;
}
}
}
public void disable(long duration) {
mNoPatternDuration = duration;
}
public void enable() {
mNoPatternDeadLine = 0;
mNoPatternDuration = 0;
}
public boolean isHeartbeatEnabled() {
return mHeartbeatEnable;
}
public void setHeartbeatEnabled(boolean enabled) {
mHeartbeatEnable = enabled;
if (mHeartbeatEnable) {
if (mHeartbeatHandler == null) {
mHeartbeatHandler = new Handler(Looper.getMainLooper());
mHeartbeatRunnable = new Runnable() {
@Override
public void run() {
sHeartbeatTime = System.currentTimeMillis();
mHeartbeatHandler.removeCallbacksAndMessages(null);
mHeartbeatHandler.postDelayed(mHeartbeatRunnable, 1000);
}
};
}
if (mActivity.isRunning()) {
mHeartbeatHandler.postDelayed(mHeartbeatRunnable, 1000);
}
}
}
public void doCheck() {
if (sHeartbeatTime == 0 || (System.currentTimeMillis() - sHeartbeatTime) > 1500) {
show();
}
}
}