diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index b7822d4..cfd2a51 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java @@ -13,6 +13,8 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.RectF; import android.hardware.Camera; +import android.os.Handler; +import android.os.Looper; import android.os.Bundle; import android.os.Handler; import android.util.Log; @@ -775,10 +777,25 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi public void onDialogClosed() { LogManager.logInfo(TAG, "门禁不可用弹窗关闭,恢复正常门禁监控"); // 人数异常弹窗关闭后,恢复正常的门禁监控状态 - // 这里不需要额外的操作,因为门禁状态监听器一直在运行 - // 只要确保GateABController继续正常工作即可 - if (gateABController != null) { - LogManager.logInfo(TAG, "门禁监控已恢复,当前门状态监听器正常运行"); + try { + // 检查UDP是否正常初始化,如果没有则重新初始化 + if (udpExample != null && !udpExample.isUDPInitialized()) { + LogManager.logInfo(TAG, "UDP未初始化,重新初始化UDP门禁控制"); + udpExample.initializeInFaceActivity(); + // 稍等片刻后启动轮询,确保初始化完成 + new Handler(Looper.getMainLooper()).postDelayed(() -> { + if (udpExample != null) { + udpExample.startGatePolling(); + LogManager.logInfo(TAG, "UDP门禁状态轮询已重新启动"); + } + }, 500); + } + + if (gateABController != null) { + LogManager.logInfo(TAG, "门禁监控已恢复,当前门状态监听器正常运行"); + } + } catch (Exception e) { + LogManager.logError(TAG, "恢复UDP门禁监控失败", e); } } }); diff --git a/app/src/main/java/com/ouxuan/oxface/device/OxUDPUsageExample.java b/app/src/main/java/com/ouxuan/oxface/device/OxUDPUsageExample.java index d73005d..d8ff97e 100644 --- a/app/src/main/java/com/ouxuan/oxface/device/OxUDPUsageExample.java +++ b/app/src/main/java/com/ouxuan/oxface/device/OxUDPUsageExample.java @@ -135,6 +135,14 @@ public class OxUDPUsageExample { } /** + * 检查UDP是否已初始化 + * @return true表示UDP已初始化,false表示未初始化 + */ + public boolean isUDPInitialized() { + return oxUDP != null && oxUDP.isInitialized(); + } + + /** * 人脸识别成功后开门处理 * 无论进场还是离场,都开启B门 * @param isEntry true: 进门, false: 出门(参数保留为兼容性,但不影响实际操作)