赵明涛 6 hours ago
parent
commit
4ecc1d9c01
  1. 20
      app/src/main/java/com/ouxuan/oxface/device/GateABController.java

20
app/src/main/java/com/ouxuan/oxface/device/GateABController.java

@ -955,6 +955,8 @@ public class GateABController {
public void updateGateState(boolean gateAOpen, boolean gateBOpen, boolean udpConnected, String errorMessage) {
boolean stateChanged = false;
boolean shouldShowDialog = false;
boolean oldShouldShow = false;
boolean newShouldShow = false;
// 检查状态是否发生变化
if (currentGateState.gateAOpen != gateAOpen ||
@ -963,18 +965,14 @@ public class GateABController {
stateChanged = true;
// 检查是否需要触发门禁不可用弹窗
boolean oldShouldShow = currentGateState.shouldShowUnavailableDialog();
// 暂时更新状态以检查新状态
boolean tempGateAOpen = currentGateState.gateAOpen;
boolean tempGateBOpen = currentGateState.gateBOpen;
boolean tempUdpConnected = currentGateState.udpConnected;
oldShouldShow = currentGateState.shouldShowUnavailableDialog();
// 更新状态信息
currentGateState.gateAOpen = gateAOpen;
currentGateState.gateBOpen = gateBOpen;
currentGateState.udpConnected = udpConnected;
boolean newShouldShow = currentGateState.shouldShowUnavailableDialog();
newShouldShow = currentGateState.shouldShowUnavailableDialog();
// 如果从正常状态变为需要显示弹窗状态则触发弹窗
if (!oldShouldShow && newShouldShow) {
@ -983,12 +981,14 @@ public class GateABController {
} else if (oldShouldShow && !newShouldShow) {
LogManager.logInfo(TAG, "门状态已恢复正常,可以隐藏门禁不可用弹窗");
}
}
// 更新状态信息
} else {
// 即使状态没有变化也要更新状态信息
currentGateState.gateAOpen = gateAOpen;
currentGateState.gateBOpen = gateBOpen;
currentGateState.udpConnected = udpConnected;
}
// 更新其他状态信息
currentGateState.lastUpdateTime = System.currentTimeMillis();
currentGateState.errorMessage = errorMessage != null ? errorMessage : "";

Loading…
Cancel
Save