Browse Source

enable ab add

devab
MTing 4 weeks ago
parent
commit
923f4ff124
  1. 153
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java

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

@ -730,71 +730,79 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
gateABController = GateABController.getInstance();
gateABController.initialize(this);
// 设置门状态监听器触发时机1
gateABController.setGateStateListener(new GateABController.GateUnavailableListener() {
@Override
public void onGateStateChanged(GateABController.GateABState state) {
LogManager.logInfo(TAG, "门状态发生变化: " + state.toString());
}
@Override
public void onGateUnavailable(String reason) {
LogManager.logWarning(TAG, "触发门禁不可用弹窗(触发时机1): " + reason);
// 检查是否应该显示弹窗
boolean shouldShow = gateUnavailableDialog.checkShow(OXFaceOnlineActivity.this, isNetworkAvailable());
if (shouldShow) {
// 获取当前门状态信息
GateABController.GateABState currentState = gateABController.getCurrentGateState();
// 如果已有弹窗存在更新内容带门状态信息如果没有显示新弹窗
gateUnavailableDialog.updateGateStateError(reason,
currentState.gateAOpen,
currentState.gateBOpen,
currentState.udpConnected);
pauseCamera();
LogManager.logInfo(TAG, " pauseCamera 已更新门禁不可用弹窗内容: " + reason);
} else {
LogManager.logInfo(TAG, "根据业务规则,不显示门禁不可用弹窗");
// 检查是否开启AB门检测
checkGateCheckEnabled();
// 只有当AB门检测开启时才设置门状态监听器触发时机1
if (isGateCheckEnabled) {
// 设置门状态监听器触发时机1
gateABController.setGateStateListener(new GateABController.GateUnavailableListener() {
@Override
public void onGateStateChanged(GateABController.GateABState state) {
LogManager.logInfo(TAG, "门状态发生变化: " + state.toString());
}
}
@Override
public void onGateAvailable() {
LogManager.logInfo(TAG, "门禁恢复可用,隐藏弹窗并恢复摄像头预览");
// 隐藏门禁不可用弹窗
if (gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) {
gateUnavailableDialog.hide();
@Override
public void onGateUnavailable(String reason) {
LogManager.logWarning(TAG, "触发门禁不可用弹窗(触发时机1): " + reason);
// 检查是否应该显示弹窗
boolean shouldShow = gateUnavailableDialog.checkShow(OXFaceOnlineActivity.this, isNetworkAvailable());
if (shouldShow) {
// 获取当前门状态信息
GateABController.GateABState currentState = gateABController.getCurrentGateState();
// 如果已有弹窗存在更新内容带门状态信息如果没有显示新弹窗
gateUnavailableDialog.updateGateStateError(reason,
currentState.gateAOpen,
currentState.gateBOpen,
currentState.udpConnected);
pauseCamera();
LogManager.logInfo(TAG, " pauseCamera 已更新门禁不可用弹窗内容: " + reason);
} else {
LogManager.logInfo(TAG, "根据业务规则,不显示门禁不可用弹窗");
}
}
// 恢复摄像头预览与弹窗的onDialogHide回调保持一致
resumeCamera();
}
@Override
public void onGateStatusUpdate(boolean gateAOpen, boolean gateBOpen, boolean udpConnected) {
// 实时更新弹窗中的门状态显示
if (gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) {
LogManager.logInfo(TAG, "更新弹窗中的门状态显示: A门-" +
(gateAOpen ? "开启" : "关闭") + ", B门-" +
(gateBOpen ? "开启" : "关闭") + ", UDP-" +
(udpConnected ? "正常" : "异常"));
@Override
public void onGateAvailable() {
LogManager.logInfo(TAG, "门禁恢复可用,隐藏弹窗并恢复摄像头预览");
// 隐藏门禁不可用弹窗
if (gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) {
gateUnavailableDialog.hide();
}
// 更新弹窗中的门状态显示保持原有消息不变
String currentReason = getCurrentDialogReason();
gateUnavailableDialog.updateGateStateError(currentReason, gateAOpen, gateBOpen, udpConnected);
// 恢复摄像头预览与弹窗的onDialogHide回调保持一致
resumeCamera();
}
// 特别处理如果A门和B门都关闭且UDP正常且有弹窗正在显示应该关闭弹窗
// if (!gateAOpen && !gateBOpen && udpConnected &&
// gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) {
// LogManager.logInfo(TAG, "A门和B门都关闭且UDP正常,关闭门禁不可用弹窗");
// gateUnavailableDialog.hide();
// resumeCamera();
// }
}
});
@Override
public void onGateStatusUpdate(boolean gateAOpen, boolean gateBOpen, boolean udpConnected) {
// 实时更新弹窗中的门状态显示
if (gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) {
LogManager.logInfo(TAG, "更新弹窗中的门状态显示: A门-" +
(gateAOpen ? "开启" : "关闭") + ", B门-" +
(gateBOpen ? "开启" : "关闭") + ", UDP-" +
(udpConnected ? "正常" : "异常"));
// 更新弹窗中的门状态显示保持原有消息不变
String currentReason = getCurrentDialogReason();
gateUnavailableDialog.updateGateStateError(currentReason, gateAOpen, gateBOpen, udpConnected);
}
// 特别处理如果A门和B门都关闭且UDP正常且有弹窗正在显示应该关闭弹窗
// if (!gateAOpen && !gateBOpen && udpConnected &&
// gateUnavailableDialog != null && gateUnavailableDialog.isShowing()) {
// LogManager.logInfo(TAG, "A门和B门都关闭且UDP正常,关闭门禁不可用弹窗");
// gateUnavailableDialog.hide();
// resumeCamera();
// }
}
});
} else {
LogManager.logInfo(TAG, "AB门检测已关闭,跳过设置门状态监听器(触发时机1)");
}
// 初始化门禁不可用弹窗
gateUnavailableDialog = new GateUnavailableDialog(this);
@ -874,16 +882,13 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}
});
// 检查是否开启AB门检测
checkGateCheckEnabled();
LogManager.logInfo(TAG, "AB门禁管理和不可用弹窗初始化完成");
} catch (Exception e) {
LogManager.logError(TAG, "AB门禁管理和不可用弹窗初始化失败", e);
}
}
/**
* 显示新的门禁不可用弹窗
* @param reason 不可用原因
@ -943,13 +948,22 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
private void checkGateCheckEnabled() {
try {
// 从配置中获取AB门检测是否开启
// 这里可以根据实际业务需要添加配置检查逻辑
// 例如 DeviceSelectDataManager 获取相关配置
boolean gateCheckEnabled = false;
// 获取门禁配置信息
com.ouxuan.oxface.utils.VenueSceneUtils.GateConfig gateConfig =
com.ouxuan.oxface.utils.VenueSceneUtils.getGateConfig(this);
// 暂时默认开启后续可以根据实际需要调整
isGateCheckEnabled = true;
if (gateConfig != null) {
gateCheckEnabled = gateConfig.gateAbEnable;
LogManager.logInfo(TAG, "从配置获取AB门检测状态: " + (gateCheckEnabled ? "已开启" : "已关闭"));
} else {
LogManager.logWarning(TAG, "无法获取门禁配置,AB门检测默认关闭");
gateCheckEnabled = false;
}
LogManager.logInfo(TAG, "AB门检测状态: " + (isGateCheckEnabled ? "已开启" : "已关闭"));
isGateCheckEnabled = gateCheckEnabled;
LogManager.logInfo(TAG, "AB门检测最终状态: " + (isGateCheckEnabled ? "已开启" : "已关闭"));
} catch (Exception e) {
LogManager.logError(TAG, "检查AB门检测状态失败", e);
@ -1825,9 +1839,8 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
// 离场场景检查gate_enter_open_enable配置
VenueSceneUtils.GateConfig gateConfig = VenueSceneUtils.getGateConfig(OXFaceOnlineActivity.this);
// gateOpenEnable
if (gateConfig != null && gateConfig.gateOpenEnable) {
// 如果 gate_open_enable true直接开门不进行网络核销
if (gateConfig != null && gateConfig.gateEnterOpenEnable) {
// 如果 gate_enter_open_enable true直接开门不进行网络核销
LogManager.logInfo(TAG, "检测到离场场景,gate_enter_open_enable为true,直接开启B门");
showLoadingStatus("门已打开,请直接离场");

Loading…
Cancel
Save