Browse Source

fix alert after num check no show

dev
赵明涛 10 hours ago
parent
commit
8763199514
  1. 13
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java
  2. 9
      app/src/main/java/com/ouxuan/oxface/device/GateABController.java
  3. 27
      app/src/main/java/com/ouxuan/oxface/device/OxUDP.java

13
app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java

@ -747,20 +747,19 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
LogManager.logInfo(TAG, "门禁不可用弹窗关闭,恢复正常门禁监控");
// 人数异常弹窗关闭后恢复正常的门禁监控状态
try {
// 检查UDP是否正常初始化如果没有则重新初始化
if (gateABController != null && !gateABController.isUDPInitialized()) {
LogManager.logInfo(TAG, "UDP未初始化,重新初始化UDP门禁控制");
if (gateABController != null) {
// 修复关键问题无论UDP是否初始化都需要重新初始化来重置状态缓存
LogManager.logInfo(TAG, "重新初始化UDP门禁控制以重置状态缓存");
gateABController.reinitializeUDP();
// 稍等片刻后启动轮询确保初始化完成
new Handler(Looper.getMainLooper()).postDelayed(() -> {
if (gateABController != null) {
gateABController.startUDPPolling();
LogManager.logInfo(TAG, "UDP门禁状态轮询已重新启动");
LogManager.logInfo(TAG, "UDP门禁状态轮询已重新启动,状态缓存已重置");
}
}, 500);
}
if (gateABController != null) {
LogManager.logInfo(TAG, "门禁监控已恢复,当前门状态监听器正常运行");
}
} catch (Exception e) {

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

@ -1163,8 +1163,17 @@ public class GateABController {
public void reinitializeUDP() {
if (context != null && udpController != null) {
LogManager.logInfo(TAG, "重新初始化UDP控制器");
// 重置UDP状态缓存确保下次状态更新能正常触发
udpController.resetGateStateCache();
// 重新初始化UDP连接
udpController.initUDP(context);
// 重新设置监听器
setupUDPStateListener();
LogManager.logInfo(TAG, "UDP控制器重新初始化完成,状态缓存已重置");
} else {
LogManager.logWarning(TAG, "无法重新初始化UDP,context或udpController为空");
}

27
app/src/main/java/com/ouxuan/oxface/device/OxUDP.java

@ -443,11 +443,15 @@ public class OxUDP {
// Log.d(TAG, "门禁状态 - A门: " + (gateAState ? "开启" : "关闭") +
// ", B门: " + (gateBState ? "开启" : "关闭"));
Log.e(TAG, "parseGateState: isFirstStateUpdate:"+isFirstStateUpdate +" |lastGateAState:"+lastGateAState+" |lastGateBState:"+lastGateBState);
Log.e(TAG, "parseGateState: isFirstStateUpdate:" + isFirstStateUpdate +
" |lastGateAState:" + lastGateAState + " |lastGateBState:" + lastGateBState +
" |currentGateAState:" + gateAState + " |currentGateBState:" + gateBState);
// 检查状态是否发生变化只有变化时才通知监听器
if (isFirstStateUpdate || gateAState != lastGateAState || gateBState != lastGateBState) {
Log.i(TAG, "门禁状态变化 - A门: " + (lastGateAState ? "开启" : "关闭") + " -> " + (gateAState ? "开启" : "关闭") +
", B门: " + (lastGateBState ? "开启" : "关闭") + " -> " + (gateBState ? "开启" : "关闭"));
", B门: " + (lastGateBState ? "开启" : "关闭") + " -> " + (gateBState ? "开启" : "关闭") +
" [首次更新: " + isFirstStateUpdate + "]");
// 更新状态缓存
lastGateAState = gateAState;
@ -457,9 +461,9 @@ public class OxUDP {
// 通知监听器状态变化
notifyGateStateUpdate(gateAState, gateBState, response);
} else {
// 状态无变化不通知监听器记录调试日志
// Log.d(TAG, "门禁状态无变化 - A门: " + (gateAState ? "开启" : "关闭") +
// ", B门: " + (gateBState ? "开启" : "关闭"));
// 状态无变化记录调试日志
Log.d(TAG, "门禁状态无变化 - A门: " + (gateAState ? "开启" : "关闭") +
", B门: " + (gateBState ? "开启" : "关闭") + " [跳过通知]");
}
} catch (Exception e) {
@ -592,6 +596,19 @@ public class OxUDP {
}
/**
* 重置门状态缓存用于恢复监听器链条
*/
public void resetGateStateCache() {
Log.i(TAG, "重置前的门状态缓存 - A门: " + lastGateAState + ", B门: " + lastGateBState + ", 首次更新: " + isFirstStateUpdate);
lastGateAState = false;
lastGateBState = false;
isFirstStateUpdate = true;
Log.i(TAG, "门状态缓存已重置,下次状态更新将被视为首次更新,确保能正常触发状态变化检测");
}
/**
* 停止UDP服务
*/
public void stop() {

Loading…
Cancel
Save