diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index cb2a2b5..e99a02b 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java @@ -711,11 +711,15 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi @Override public void onGateAvailable() { - LogManager.logInfo(TAG, "门禁恢复可用,隐藏弹窗"); + LogManager.logInfo(TAG, "门禁恢复可用,隐藏弹窗并恢复摄像头预览"); + // 隐藏门禁不可用弹窗 if (gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) { gateUnavailableDialog.hide(); } + + // 恢复摄像头预览(与弹窗的onDialogHide回调保持一致) + resumeCamera(); } }); diff --git a/app/src/main/java/com/ouxuan/oxface/device/GateABController.java b/app/src/main/java/com/ouxuan/oxface/device/GateABController.java index eabbef5..cc1ba8b 100644 --- a/app/src/main/java/com/ouxuan/oxface/device/GateABController.java +++ b/app/src/main/java/com/ouxuan/oxface/device/GateABController.java @@ -997,11 +997,23 @@ public class GateABController { // 如果状态发生变化且有监听器,通知监听器 if (stateChanged && gateStateListener != null) { final boolean finalShouldShowDialog = shouldShowDialog; + final boolean shouldHideDialog = oldShouldShow && !newShouldShow; + syncHandler.post(() -> { gateStateListener.onGateStateChanged(currentGateState); - // 如果需要显示弹窗,额外通知 - if (finalShouldShowDialog && gateStateListener instanceof GateUnavailableListener) { - ((GateUnavailableListener) gateStateListener).onGateUnavailable(currentGateState.getUnavailableReason()); + + if (gateStateListener instanceof GateUnavailableListener) { + GateUnavailableListener unavailableListener = (GateUnavailableListener) gateStateListener; + + // 如果需要显示弹窗,触发不可用回调 + if (finalShouldShowDialog) { + unavailableListener.onGateUnavailable(currentGateState.getUnavailableReason()); + } + // 如果需要隐藏弹窗(门状态恢复正常),触发可用回调 + else if (shouldHideDialog) { + LogManager.logInfo(TAG, "触发门禁恢复可用回调,隐藏弹窗并恢复摄像头"); + unavailableListener.onGateAvailable(); + } } }); }