package com.transengines.;
import android.app.AlarmManager;
import android.content.Context;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import android.view.View;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
public class ActionHandling {
public static final boolean DEBUG = false;
public static final boolean DEBUG_mHandlerTask = false;
public static final boolean DEBUG_TAG = false;
public static final boolean DEBUG_TIME = true;
/**
* 构造初始化
*/
public ActionHandling() {
//mLastActionTime = System.currentTimeMillis();
//开始计时
// startTimer();
// startTimerIpReset();
startTimer1();
startTimerIpReset1();
//noOperationTimeOut.start();
}
uiManage.uiRegR.setOnClickCallBack(new UIRegR.OnClickCallBack() {
@Override
public void onClick(View v) {
if (playerSpeaker.isPlaying()) {
playerSpeaker.clearList(true);
// playerSpeaker.stop(true);
}
mHandlerTask.sendEmptyMessage(handlerClickButton);
Message msg = new Message();
msg.what = handlerTaskEvent;
Event event = new Event();
event.setValue(Event.cancelOrReturn, 1);
msg.obj = event;
if (DEBUG_mHandlerTask)
LogPrint.d("mHandlerTask send event returnCancel button");
mHandlerTask.sendMessage(msg);
}
@Override
public void onTouch(View v, int type) {
if (type == 1) {
playBuzzer.playError();//每次触碰都响蜂鸣器
if (!playerSpeaker.contains(1066)) {
playerSpeaker.play(State.OutOfServer, 1066, true);
}
} else if (type == 2) {
playBuzzer.playError();//每次触碰都响蜂鸣器
if (!playerSpeaker.contains(1065)) {
playerSpeaker.play(State.OutOfServer, 1065, true);
}
}
}
});
}
public static void addEvent(Event event) {
Message msg = new Message();
msg.what = handlerTaskEvent;
msg.obj = event;
mHandlerTask.sendMessage(msg);
if (DEBUG_mHandlerTask) {
LogPrint.d("mHandlerTask send event ");
event.printEventList(blockEvevt);
}
}
/**
* 打印未定义事件
*
* @param event
*/
private void printUndefinedEvent(Event event) {
if (DEBUG_mHandlerTask) {
LogPrint.d("未定义的事件");
event.printEventList(blockEvevt);
}
}
private void initHandler() {
if (mHandlerThreadStateMachine == null) {
mHandlerThreadStateMachine = new HandlerThread("StateMachineTask");
mHandlerThreadStateMachine.start();
}
if (mHandlerTask == null) {
mHandlerTask = new Handler(mHandlerThreadStateMachine.getLooper()) {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case handlerFactorySettings:
globalValue.updateUI.post(new Runnable() {
@Override
public void run() {
uiManage.uiRegN.getFloorDataAndRefresh();
if (ActionHandling.signalProcess != null) {
ActionHandling.signalProcess.setSendEnable(true);
ActionHandling.signalProcess.setReceEnable(true);
ActionHandling.signalProcess.setHeartBeatEnable(true);
ActionHandling.signalProcess.sendResetMPU();
}
}
});
break;
case handlerTaskEvent:
//事件处理
Event event = (Event) msg.obj;
if (event == null) {
LogPrint.d("event is null! skip.");
return;
}
if (DEBUG_mHandlerTask) {
LogPrint.d("mHandlerTask rece event");
// event.printEventList(blockEvevt);
event.printEventList(null);
}
changeStateByEvent(event);
break;
case handlerTaskUI:
//界面更改
if (DEBUG_mHandlerTask)
LogPrint.d("mHandlerTask rece event change ui " + msg.arg1);
changeUIByState(msg.arg1);
break;
case handlerTimeTask:
LogPrint.e("====handlerTimeTask====1");
Calendar calendar = (Calendar) msg.obj;
// calendar.setTimeInMillis(1603158733918L);
// calendar.set(Calendar.YEAR, 2020);
// calendar.set(Calendar.MONTH, 9);
// calendar.set(Calendar.DAY_OF_MONTH, 10);
// calendar.set(Calendar.HOUR_OF_DAY, 22);
// calendar.set(Calendar.MINUTE, 18);
long when = calendar.getTimeInMillis();
// android.provider.Settings.Global.putInt(globalValue.mContext.getContentResolver(),
// android.provider.Settings.Global.AUTO_TIME_ZONE, 0);
android.provider.Settings.System.putString(globalValue.mContext.getContentResolver(),
android.provider.Settings.System.TIME_12_24, "24");
if (when / 1000 < Integer.MAX_VALUE) {
LogPrint.e( "====handlerTimeTask=222=" + when+"==="+System.currentTimeMillis());
LogPrint.e( "====handlerTimeTask=333=" + (when -System.currentTimeMillis()));
// SystemClock.setCurrentTimeMillis(when);
((AlarmManager) globalValue.mContext.getSystemService(Context.ALARM_SERVICE)).setTime(when);
}
// long now = Calendar.getInstance().getTimeInMillis();
// SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String dateString = formatter.format(now);
// LogPrint.d("=====time set tm=" + when + ", now tm=" + now + ", " + dateString);
break;
case handlerClickScreen:
uiManage.uiRegN.setUIDormancyHide();
uiManage.uiRegR.setUIDormancyHide();
uiManage.uiRegD.setUIDormancyHide();
resetScreenTimeOut();
break;
case handlerClickButton:
resetScreenTimeOut();
playBuzzer.playNormal();
break;
case handlerSaveEnergy:
if (DEBUG_TIME)
LogPrint.e("======进行屏幕亮度的调节");
//接到屏幕无操作超时时,进行屏幕亮度的调节
globalValue.updateUI.post(new Runnable() {
@Override
public void run() {
uiManage.uiRegN.setUIDormancyShow();
uiManage.uiRegR.setUIDormancyShow();
uiManage.uiRegD.setUIDormancyShow();
SystemUtil.setBackLight((float) (ConfigManage.jsonBean.getDisplay().getBrightnessEnergy() / 100.0));
File file = new File("/sdcard/usb-ts-error");
try {
file.createNewFile();
} catch (IOException e) {
}
}
});
break;
case handlerSaveEnergyIpReset:
if (DEBUG_TIME)
LogPrint.d("======进行屏幕亮度的调节handlerSaveEnergyIpReset");
//接到屏幕无操作超时时,进行屏幕亮度的调节
globalValue.updateUI.post(new Runnable() {
@Override
public void run() {
File file = new File("/sdcard/usb-ts-error");
try {
file.createNewFile();
} catch (IOException e) {
}
}
});
break;
case handlerRefreshFloorButton:
if (DEBUG)
LogPrint.d("flush floor button");
uiManage.uiRegN.showExtFloor();
break;
default:
break;
}
}
};
}
}
private void resetScreenTimeOut() {
if (DEBUG_TIME)
LogPrint.e("=====中断");
globalValue.isTimeForEnergy = false;
/* endDate = new Date(System.currentTimeMillis());
synchronized (noOperationTimeOut) {
noOperationTimeOut.interrupt();
noOperationTimeOut.notify();
}*/
// 停止计时任务
/* stopTimer();
stopTimerIpReset();
startTimer();
startTimerIpReset();*/
stopTimer1();
stopTimerIpReset1();
startTimer1();
startTimerIpReset1();
globalValue.updateUI.post(new Runnable() {
@Override
public void run() {
SystemUtil.setBackLight((float) (ConfigManage.jsonBean.getDisplay().getBrightness() / 100.0));
}
});
}
private Timer mTimer; //计时器,每1秒执行一次任务
private MyTimerTask mTimerTask; //计时任务,判断是否未操作时间到达3s
private long mLastActionTime; //上一次操作时间
long timeForEnergy = ConfigManage.jsonBean.getDisplay().getTimeForEnergy() * 60 * 1000;
private class MyTimerTask extends TimerTask {
@Override
public void run() {
//3s未操作,则结束计时
if (DEBUG_TIME)
LogPrint.e("======3s未操作,则结束计时" + (System.currentTimeMillis() - mLastActionTime) + "====" + timeForEnergy);
if (System.currentTimeMillis() - mLastActionTime > timeForEnergy) {
if (DEBUG_TIME)
LogPrint.e("======3屏幕变暗");
//结束计时
removeTimer();
// 停止计时任务
stopTimer();
}
}
}
//开始计时
private void startTimer() {
if (ConfigManage.jsonBean.getDisplay().getTimeForEnergy() != 0) {
mTimer = new Timer(true);
mTimerTask = new MyTimerTask();
mTimer.schedule(mTimerTask, 0, 1000); //延时1000ms后执行,1000ms检查一次
// 初始化上次操作时间为登录成功的时间
mLastActionTime = System.currentTimeMillis();
}
}
//倒计时完毕的操作
private void removeTimer() {
if (DEBUG_TIME)
LogPrint.e("=====removeTimer");
if (globalValue.isUIBrightness) {
if (DEBUG_TIME)
LogPrint.e("=====removeTimer====1111");
globalValue.isTimeForEnergy = true;
ActionHandling.mHandlerTask.sendEmptyMessage(handlerSaveEnergy);
}
}
// 停止计时任务
private void stopTimer() {
if (DEBUG_TIME)
LogPrint.e("=====stopTimer");
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
if(mTimerTask!=null){
mTimerTask.cancel();
mTimerTask=null;
}
}
static Date curDate, endDate;
private Thread noOperationTimeOut = new Thread() {
@Override
public void run() {
while (true) {
try {
if (ConfigManage.jsonBean.getDisplay().getTimeForEnergy() == 0) {
synchronized (this) {
this.wait();
}
continue;
}
curDate = new Date(System.currentTimeMillis());
endDate = new Date(System.currentTimeMillis());
long timeForEnergy = ConfigManage.jsonBean.getDisplay().getTimeForEnergy() * 60 * 1000;
sleep(timeForEnergy);
//判断是否要延迟时间
while (true) {
long time = endDate.getTime() - curDate.getTime();
if (time < 1000) {
break;
}
if (0 < time && time < timeForEnergy) {
sleep(timeForEnergy - time);
} else {
break;
}
}
if (globalValue.isUIBrightness) {
globalValue.isTimeForEnergy = true;
ActionHandling.mHandlerTask.sendEmptyMessage(handlerSaveEnergy);
}
} catch (InterruptedException e) {
}
}
}
};
Timer mTimerIpReset; //计时器,每1秒执行一次任务
private MyTimerTaskIpReset mTimerTaskIpReset; //计时任务,判断是否未操作时间到达3s
private long mLastActionTimeIpReset; //上一次操作时间
long timeForEnergyIpReset = ConfigManage.jsonBean.getDisplay().getIpResetSetting() * 1000;
private class MyTimerTaskIpReset extends TimerTask {
@Override
public void run() {
//3s未操作,则结束计时
if (DEBUG_TIME)
LogPrint.d("======3s未操作,MyTimerTaskIpReset" + (System.currentTimeMillis() - mLastActionTimeIpReset) + "====" + timeForEnergyIpReset);
if (System.currentTimeMillis() - mLastActionTimeIpReset > timeForEnergyIpReset) {
if (DEBUG_TIME)
LogPrint.d("======3屏幕变暗MyTimerTaskIpReset");
//结束计时
removeTimerIpReset();
// 停止计时任务
stopTimerIpReset();
}
}
}
//开始计时
private void startTimerIpReset() {
if (ConfigManage.jsonBean.getDisplay().getTimeForEnergy() != 0
&& ConfigManage.jsonBean.getDisplay().getIpResetSetting() != 0) {
mTimerIpReset = new Timer(true);
mTimerTaskIpReset = new MyTimerTaskIpReset();
mTimerIpReset.schedule(mTimerTaskIpReset, 0, 1000); //延时1000ms后执行,1000ms检查一次
// 初始化上次操作时间为登录成功的时间
mLastActionTimeIpReset = System.currentTimeMillis();
}
}
//倒计时完毕的操作
private void removeTimerIpReset() {
if (DEBUG_TIME)
LogPrint.d("=====removeTimerIpReset");
if (globalValue.isUIBrightness) {
if (DEBUG_TIME)
LogPrint.d("=====removeTimerIpReset====1111");
//globalValue.isTimeForEnergy = true;
ActionHandling.mHandlerTask.sendEmptyMessage(handlerSaveEnergyIpReset);
}
}
// 停止计时任务
private void stopTimerIpReset() {
if (DEBUG_TIME)
LogPrint.d("=====removeTimerIpReset");
if (mTimerIpReset != null) {
mTimerIpReset.cancel();
mTimerIpReset = null;
}
if(mTimerTaskIpReset!=null){
mTimerTaskIpReset.cancel();
mTimerTaskIpReset = null;
}
}
//========================================================
//开始计时
boolean isRunning;
private void startTimer1() {
if (ConfigManage.jsonBean.getDisplay().getTimeForEnergy() != 0) {
if(timer1 == null){
getCountDownTimer();
}
timer1.start();
}
}
private CountDownTimer timer1;
public void getCountDownTimer(){
timer1 = new CountDownTimer(timeForEnergy, 1000) {
@Override
public void onTick(long millisUntilFinished) {
isRunning=true;
LogPrint.e("======88888===="+millisUntilFinished / 1000);
}
@Override
public void onFinish() {
isRunning=false;
LogPrint.e("======88888====onFinish");
removeTimer1();
stopTimer1();
}
};
}
// 停止计时任务
private void stopTimer1() {
if (DEBUG_TIME)
LogPrint.e("=====88888stopTimer停止");
if (timer1 != null) {
timer1.cancel();
timer1 = null;
isRunning=false;
}
}
//倒计时完毕的操作
private void removeTimer1() {
if (DEBUG_TIME)
LogPrint.e("=====removeTimer");
if (globalValue.isUIBrightness) {
if (DEBUG_TIME)
LogPrint.e("=====removeTimer====1111");
globalValue.isTimeForEnergy = true;
ActionHandling.mHandlerTask.sendEmptyMessage(handlerSaveEnergy);
}
}
//========================================================
//开始计时
boolean isRunningIpReset1;
private void startTimerIpReset1() {
if (ConfigManage.jsonBean.getDisplay().getTimeForEnergy() != 0
&& ConfigManage.jsonBean.getDisplay().getIpResetSetting() != 0) {
if(timerIpReset1 == null){
getCountDownTimerIpReset1();
}
timerIpReset1.start();
}
}
private CountDownTimer timerIpReset1;
public void getCountDownTimerIpReset1(){
timerIpReset1 = new CountDownTimer(timeForEnergyIpReset, 1000) {
@Override
public void onTick(long millisUntilFinished) {
isRunningIpReset1=true;
LogPrint.e("======88888===="+millisUntilFinished / 1000);
}
@Override
public void onFinish() {
isRunningIpReset1=false;
LogPrint.e("======88888====onFinish");
removeTimerIpReset1();
stopTimerIpReset1();
}
};
}
// 停止计时任务
private void stopTimerIpReset1() {
if (DEBUG_TIME)
LogPrint.e("=====88888stopTimer停止");
if (timerIpReset1 != null) {
timerIpReset1.cancel();
timerIpReset1 = null;
isRunningIpReset1=false;
}
}
//倒计时完毕的操作
private void removeTimerIpReset1() {
if (DEBUG_TIME)
LogPrint.e("=====removeTimer");
if (globalValue.isUIBrightness) {
if (DEBUG_TIME)
LogPrint.e("=====removeTimer====1111");
globalValue.isTimeForEnergy = true;
ActionHandling.mHandlerTask.sendEmptyMessage(handlerSaveEnergyIpReset);
}
}
}