diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index 08b415a..4fe7492 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java @@ -1712,10 +1712,72 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi return; } + // 新增:离场场景下gate_open_enable为true时直接开门 + if (isLeaveScene) { + VenueSceneUtils.GateConfig gateConfig = VenueSceneUtils.getGateConfig(this); + // gate_enter_open_enable + if (gateConfig != null && gateConfig.gateEnterOpenEnable) { + LogManager.logInfo(TAG, "检测到离场场景且gate_open_enable为true,直接执行openGateAB开门"); + + // 直接执行AB门开门操作 + if (gateABController != null) { + // 暂停摄像头预览10秒后再恢复,避免频繁执行开门操作 + pauseCamera(); + LogManager.logInfo(TAG, "暂停摄像头预览10秒,避免频繁执行开门操作"); + + // 10秒后恢复摄像头预览 + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + resumeCamera(); + LogManager.logInfo(TAG, "10秒后恢复摄像头预览"); + } + }, 10000); + + gateABController.openGateAB(new GateABController.GateControlCallback() { + @Override + public void onSuccess(String message) { + LogManager.logInfo(TAG, "离场场景gate_open_enable直接开门成功: " + message); + + // 显示简单的成功提示 + runOnUiThread(() -> { + showLoadingStatus("开门成功"); + + // 5秒后隐藏提示 + new Handler().postDelayed(() -> { + hideLoadingStatus(); + }, 5000); + }); + } + + @Override + public void onError(String errorMessage) { + LogManager.logError(TAG, "离场场景gate_open_enable直接开门失败: " + errorMessage); + + // 显示错误提示 + runOnUiThread(() -> { + showLoadingStatus("开门失败: " + errorMessage); + + // 5秒后隐藏提示 + new Handler().postDelayed(() -> { + hideLoadingStatus(); + }, 5000); + }); + } + }); + } else { + LogManager.logError(TAG, "gateABController为空,无法执行开门操作"); + } + + // 直接返回,不再继续执行后续逻辑 + return; + } + } + LogManager.logInfo(TAG, "继续执行正常的人脸识别流程 - 场景: " + (isLeaveScene ? "离场" : "进场") + ", 网络: " + (isNetworkAvailable ? "可用" : "不可用")); } catch (Exception e) { - LogManager.logError(TAG, "离场网络中断检测异常,继续正常流程", e); + LogManager.logError(TAG, "离场检测异常,继续正常流程", e); } // 当未检测到人脸UI显示 diff --git a/app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java b/app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java index 456b3b6..473bf4d 100644 --- a/app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java +++ b/app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java @@ -132,6 +132,10 @@ public class VenueSceneUtils { gateConfig.gateEnterOpenEnable = padConfig.getExtension() != null && padConfig.getExtension().getPadSetting() != null && padConfig.getExtension().getPadSetting().isGateEnterOpenEnable(); + + gateConfig.gateEnterOpenEnable = padConfig.getExtension() != null && + padConfig.getExtension().getPadSetting() != null && + padConfig.getExtension().getPadSetting().gateAbEnable(); gateConfig.gateAbGpio = padConfig.getExtension() != null && padConfig.getExtension().getPadSetting() != null && @@ -141,9 +145,15 @@ public class VenueSceneUtils { padConfig.getExtension().getPadSetting() != null && padConfig.getExtension().getPadSetting().isGateAbUdp(); + // 添加gate_open_enable配置 + gateConfig.gateOpenEnable = padConfig.getExtension() != null && + padConfig.getExtension().getPadSetting() != null && + padConfig.getExtension().getPadSetting().isGateOpenEnable(); + Log.d(TAG, "门禁配置 - EnterOpenEnable: " + gateConfig.gateEnterOpenEnable + ", AbGpio: " + gateConfig.gateAbGpio + - ", AbUdp: " + gateConfig.gateAbUdp); + ", AbUdp: " + gateConfig.gateAbUdp + + ", OpenEnable: " + gateConfig.gateOpenEnable); return gateConfig; } else { @@ -163,6 +173,7 @@ public class VenueSceneUtils { public boolean gateEnterOpenEnable = false; // 门禁进入开启使能 public boolean gateAbGpio = false; // 门禁AB GPIO public boolean gateAbUdp = false; // 门禁AB UDP + public boolean gateOpenEnable = false; // 离场核销直接开门使能 @Override public String toString() { @@ -170,6 +181,7 @@ public class VenueSceneUtils { "gateEnterOpenEnable=" + gateEnterOpenEnable + ", gateAbGpio=" + gateAbGpio + ", gateAbUdp=" + gateAbUdp + + ", gateOpenEnable=" + gateOpenEnable + '}'; } }