From 2a04532ba0573f782d88e2849ba6fb30b7aeafc8 Mon Sep 17 00:00:00 2001 From: MTing Date: Thu, 18 Sep 2025 09:52:12 +0800 Subject: [PATCH] fix open select twice --- .../com/ouxuan/oxface/OXFaceOnlineActivity.java | 26 ++++++++++++++++++++++ .../oxface/orderOX/OrderSelectionActivity.java | 9 ++++++++ 2 files changed, 35 insertions(+) diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index 89c6d04..1a9f5be 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java @@ -203,6 +203,9 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi private GateABController gateABController; private ABGateManager abGateManager; private boolean isGateCheckEnabled = false; // AB门检测是否开启 + + // 方案二:添加状态标识控制订单选择页面的显示,避免重复弹出 + private static boolean isOrderSelectionActivityShowing = false; // 订单选择页面是否正在显示 @Override protected void onCreate(Bundle savedInstanceState) { @@ -211,6 +214,9 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi android.util.Log.d(TAG, "onCreate方法开始执行"); LogManager.logInfo(TAG, "OXFaceOnlineActivity onCreate开始"); + + // 方案二:初始化订单选择页面显示状态 + isOrderSelectionActivityShowing = false; mContext = this; // 初始化LoginDataManager @@ -461,6 +467,15 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi @Override public void navigateToOrderSelectionPage(String orderData, int verificationType, String faceBase64) { + // 方案二:检查订单选择页面是否已经显示,避免重复弹出 + if (isOrderSelectionActivityShowing) { + LogManager.logInfo(TAG, "订单选择页面已经在显示中,避免重复启动"); + return; + } + + // 设置标识为true,表示订单选择页面即将显示 + isOrderSelectionActivityShowing = true; + // 在跳转到订单选择页面时暂停摄像头 // pauseCameraWithTimeout(); pauseCamera(); @@ -2335,6 +2350,9 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi resumeCamera(); LogManager.logInfo(TAG, "恢复摄像头预览 - 使用resumeCamera方法"); + // 方案二:重置订单选择页面显示状态 + isOrderSelectionActivityShowing = false; + if (resultCode == RESULT_OK && data != null) { // 处理订单选择结果 String selectedOrderJson = data.getStringExtra("selected_order"); @@ -2772,6 +2790,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi IntentFilter filter = new IntentFilter(); filter.addAction("com.ouxuan.oxface.ACTION_PAUSE_CAMERA"); filter.addAction("com.ouxuan.oxface.ACTION_RESUME_CAMERA"); + filter.addAction("com.ouxuan.oxface.ACTION_RESET_ORDER_SELECTION_STATUS"); // 添加新的广播动作 registerReceiver(cameraControlReceiver, filter); LogManager.logInfo(TAG, "摄像头控制广播接收器已注册"); } @@ -2791,6 +2810,10 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi // 恢复摄像头预览 resumeCamera(); LogManager.logInfo(TAG, "接收到恢复摄像头预览广播"); + } else if ("com.ouxuan.oxface.ACTION_RESET_ORDER_SELECTION_STATUS".equals(action)) { + // 方案二:重置订单选择页面显示状态 + isOrderSelectionActivityShowing = false; + LogManager.logInfo(TAG, "接收到重置订单选择页面显示状态广播"); } } } @@ -2921,6 +2944,9 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi LogManager.logError(TAG, "发送强制关闭对话框广播失败", e); } + // 方案二:重置订单选择页面显示状态 + isOrderSelectionActivityShowing = false; + LogManager.logWarning(TAG, "摄像头已强制恢复,所有对话框已关闭"); } diff --git a/app/src/main/java/com/ouxuan/oxface/orderOX/OrderSelectionActivity.java b/app/src/main/java/com/ouxuan/oxface/orderOX/OrderSelectionActivity.java index 972954f..20624ed 100644 --- a/app/src/main/java/com/ouxuan/oxface/orderOX/OrderSelectionActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/orderOX/OrderSelectionActivity.java @@ -631,6 +631,15 @@ public class OrderSelectionActivity extends AppCompatActivity { LogManager.logError(TAG, "发送恢复摄像头预览广播失败", e); } + // 发送广播通知OXFaceOnlineActivity重置订单选择页面显示状态 + try { + Intent intent = new Intent("com.ouxuan.oxface.ACTION_RESET_ORDER_SELECTION_STATUS"); + sendBroadcast(intent); + LogManager.logInfo(TAG, "已发送重置订单选择页面显示状态广播"); + } catch (Exception e) { + LogManager.logError(TAG, "发送重置订单选择页面显示状态广播失败", e); + } + LogManager.logInfo(TAG, "订单选择页面销毁"); }