// 双击灭屏用在onClick()方法中
public voidonClick(View v) {
checkDoubleTapToSleep(v,null);
}
// 双击灭屏用在onTouch()方法中
public booleanonTouch(View v, MotionEvent event) {
checkDoubleTapToSleep(v,event);
return false;
}
private int mTapCount = 0;
private long mFirstTapTime = 0l;
private long mSecondTapTime = 0l;
private Handler mDoubleTapResetHandler = new Handler() {
@Override
public voidhandleMessage(Message msg) {
mTapCount = 0;
mFirstTapTime = 0l;
mSecondTapTime = 0l;
}
};
private voidcheckDoubleTapToSleep(View v, MotionEvent event) {
if (event == null || event.getAction() == MotionEvent.ACTION_DOWN) {
switch (++mTapCount){
case 1:
mFirstTapTime = System.currentTimeMillis();
mDoubleTapResetHandler.removeMessages(0);
mDoubleTapResetHandler.sendEmptyMessageDelayed(0,500);
break;
case 2:
mSecondTapTime = System.currentTimeMillis();
if (mSecondTapTime- mFirstTapTime < 500) {
PowerManagerpm = (PowerManager) mContext
.getSystemService(Context.POWER_SERVICE);
pm.goToSleep(SystemClock.uptimeMillis());
mDoubleTapResetHandler.removeMessages(0);
mDoubleTapResetHandler.sendEmptyMessage(0);
}
break;
default:
break;
}
}
}