Browse Source

test 31 fix

devab
MTing 3 weeks ago
parent
commit
57de882439
  1. 57
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java
  2. 10
      app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java
  3. 58
      离场场景配置控制开门功能说明.md

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

@ -1793,6 +1793,36 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
private void checkResultOnline(LivenessModel livenessModel) {
this.currentLivenessModel = livenessModel;
// 判断是进场还是离场场景
if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
// 离场场景检查gate_open_enable配置0922沟通后确认使用gate_open_enable字段
VenueSceneUtils.GateConfig gateConfig = VenueSceneUtils.getGateConfig(OXFaceOnlineActivity.this);
// 修改为判断gateOpenEnable字段而不是gateEnterOpenEnable
if (gateConfig != null && gateConfig.gateOpenEnable) {
// 如果 gate_open_enable true直接开门不进行网络核销
LogManager.logInfo(TAG, "检测到离场场景,gate_open_enable为true,直接开启B门");
showLoadingStatus("门已打开,请直接离场");
// 直接开启B门
if (gateABController != null) {
LogManager.logInfo(TAG, "gate_open_enable为true,直接开启B门");
gateABController.handleFaceRecognitionSuccess(false); // 参数保留兼容性实际都开B门
}
pauseCamera();
// 5秒后隐藏提示并恢复摄像头
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
hideLoadingStatus();
resumeCamera();
}
}, 5000);
return;
}
}
// 离场网络中断检测逻辑检测当前是离场&&当前网络中断{直接执行openGateAB而不再继续执行后续逻辑}
try {
boolean isLeaveScene = VenueSceneUtils.isLeaveScene(this);
@ -1970,30 +2000,13 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
// 判断是进场还是离场场景
if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
// 离场场景检查gate_enter_open_enable配置
// 离场场景检查gate_open_enable配置0922沟通后确认使用gate_open_enable字段
VenueSceneUtils.GateConfig gateConfig = VenueSceneUtils.getGateConfig(OXFaceOnlineActivity.this);
if (gateConfig != null && gateConfig.gateEnterOpenEnable) {
// 如果 gate_enter_open_enable true直接开门不进行网络核销
LogManager.logInfo(TAG, "检测到离场场景,gate_enter_open_enable为true,直接开启B门");
showLoadingStatus("门已打开,请直接离场");
// 直接开启B门
if (gateABController != null) {
LogManager.logInfo(TAG, "gate_enter_open_enable为true,直接开启B门");
gateABController.handleFaceRecognitionSuccess(false); // 参数保留兼容性实际都开B门
}
pauseCamera();
// 2秒后隐藏提示并开门
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
hideLoadingStatus();
resumeCamera();
}
}, 5000);
// 修改为判断gateOpenEnable字段而不是gateEnterOpenEnable
if (gateConfig != null && gateConfig.gateOpenEnable) {
// 如果 gate_open_enable true直接开门不进行网络核销,该逻辑已转移
} else {
// gate_enter_open_enable false 或配置不存在按正常流程进行网络校验
// gate_open_enable false 或配置不存在按正常流程进行网络校验
if (isNetworkAvailable()) {
LogManager.logInfo(TAG, "检测到离场场景,网络可用,执行离场校验");
performLeaveVerification(base64img);

10
app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java

@ -180,6 +180,11 @@ public class VenueSceneUtils {
padConfig.getExtension().getPadSetting() != null &&
padConfig.getExtension().getPadSetting().isGateEnterOpenEnable();
// 新增获取gateOpenEnable配置
gateConfig.gateOpenEnable = padConfig.getExtension() != null &&
padConfig.getExtension().getPadSetting() != null &&
padConfig.getExtension().getPadSetting().isGateOpenEnable();
gateConfig.gateAbEnable = padConfig.getExtension() != null &&
padConfig.getExtension().getPadSetting() != null &&
padConfig.getExtension().getPadSetting().isGateAbEnable();
@ -193,6 +198,7 @@ public class VenueSceneUtils {
padConfig.getExtension().getPadSetting().isGateAbUdp();
Log.d(TAG, "门禁配置 - EnterOpenEnable: " + gateConfig.gateEnterOpenEnable +
", OpenEnable: " + gateConfig.gateOpenEnable +
", AbGpio: " + gateConfig.gateAbGpio +
", AbUdp: " + gateConfig.gateAbUdp +
", AbEnable: " + gateConfig.gateAbEnable);
@ -212,7 +218,8 @@ public class VenueSceneUtils {
* 门禁配置信息类
*/
public static class GateConfig {
public boolean gateEnterOpenEnable = false; // 门禁进入开启使能
public boolean gateEnterOpenEnable = false; // 门禁进入开启使能保留但不使用
public boolean gateOpenEnable = false; // 门禁开启使能新增
public boolean gateAbGpio = false; // 门禁AB GPIO
public boolean gateAbUdp = false; // 门禁AB UDP
public boolean gateAbEnable = false; // ab门总开关
@ -221,6 +228,7 @@ public class VenueSceneUtils {
public String toString() {
return "GateConfig{" +
"gateEnterOpenEnable=" + gateEnterOpenEnable +
", gateOpenEnable=" + gateOpenEnable +
", gateAbGpio=" + gateAbGpio +
", gateAbUdp=" + gateAbUdp +
", gateAbEnable=" + gateAbEnable +

58
离场场景配置控制开门功能说明.md

@ -2,15 +2,15 @@
## 需求描述
用户需求:"进行离场核销时, 如果pad_config中gate_enter_open_enable为true, 不进行网络核销, 直接执行开门"
用户需求:"进行离场核销时, 如果pad_config中gate_open_enable为true, 不进行网络核销, 直接执行开门"
## 实现方案
### 1. 配置项位置
配置项 `gate_enter_open_enable` 位于:
配置项 `gate_open_enable` 位于:
```
pad_config -> extension -> pad_setting -> gate_enter_open_enable
pad_config -> extension -> pad_setting -> gate_open_enable
```
### 2. 配置获取方法
@ -18,7 +18,7 @@ pad_config -> extension -> pad_setting -> gate_enter_open_enable
使用现有的 `VenueSceneUtils.getGateConfig()` 方法获取配置:
```java
VenueSceneUtils.GateConfig gateConfig = VenueSceneUtils.getGateConfig(context);
boolean gateEnterOpenEnable = gateConfig != null && gateConfig.gateEnterOpenEnable;
boolean gateOpenEnable = gateConfig != null && gateConfig.gateOpenEnable;
```
### 3. 修改的文件
@ -33,28 +33,30 @@ boolean gateEnterOpenEnable = gateConfig != null && gateConfig.gateEnterOpenEnab
```java
// 判断是进场还是离场场景
if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
// 离场场景:检查gate_enter_open_enable配置
// 离场场景:检查gate_open_enable配置
VenueSceneUtils.GateConfig gateConfig = VenueSceneUtils.getGateConfig(OXFaceOnlineActivity.this);
if (gateConfig != null && gateConfig.gateEnterOpenEnable) {
// 如果gate_enter_open_enable为true,直接开门不进行网络核销
LogManager.logInfo(TAG, "检测到离场场景,gate_enter_open_enable为true,直接开启B门");
showLoadingStatus("离场验证成功");
if (gateConfig != null && gateConfig.gateOpenEnable) {
// 如果gate_open_enable为true,直接开门不进行网络核销
LogManager.logInfo(TAG, "检测到离场场景,gate_open_enable为true,直接开启B门");
showLoadingStatus("门已打开,请直接离场");
// 2秒后隐藏提示并开门
// 直接开启B门
if (gateABController != null) {
LogManager.logInfo(TAG, "gate_open_enable为true,直接开启B门");
gateABController.handleFaceRecognitionSuccess(false);
}
pauseCamera();
// 5秒后隐藏提示并恢复摄像头
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
hideLoadingStatus();
// 直接开启B门
if (isUDPInitialized && udpExample != null) {
LogManager.logInfo(TAG, "gate_enter_open_enable为true,直接开启B门");
udpExample.handleFaceRecognitionSuccess(false);
}
resumeCamera();
}
}, 2000);
}, 5000);
} else {
// gate_enter_open_enable为false或配置不存在,按正常流程进行网络校验
// gate_open_enable为false或配置不存在,按正常流程进行网络校验
if (isNetworkAvailable()) {
LogManager.logInfo(TAG, "检测到离场场景,网络可用,执行离场校验");
performLeaveVerification(base64img);
@ -69,19 +71,19 @@ if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
### 配置为 true 时的流程
```
人脸识别成功 → 获取base64图像 → 检查配置 → gate_enter_open_enable=true → 直接开启B门
人脸识别成功 → 获取base64图像 → 检查配置 → gate_open_enable=true → 直接开启B门
```
### 配置为 false 时的流程
```
人脸识别成功 → 获取base64图像 → 检查配置 → gate_enter_open_enable=false → 网络校验 → 校验成功 → 开启B门
人脸识别成功 → 获取base64图像 → 检查配置 → gate_open_enable=false → 网络校验 → 校验成功 → 开启B门
```
## 用户体验优化
1. **配置为true时**
- 显示 "离场验证成功" 提示
- 2秒后自动开门
- 显示 "门已打开,请直接离场" 提示
- 5秒后自动开门并恢复摄像头
- 无需等待网络请求,提升通行速度
2. **配置为false时**
@ -90,7 +92,7 @@ if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
## 配置项说明
- **gate_enter_open_enable**: 门禁进入开启使能
- **gate_open_enable**: 门禁开启使能
- **类型**: boolean
- **默认值**: false
- **作用**: 控制离场时是否跳过网络验证直接开门
@ -99,8 +101,8 @@ if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
### 配置为true时的日志
```
检测到离场场景,gate_enter_open_enable为true,直接开启B门
gate_enter_open_enable为true,直接开启B门
检测到离场场景,gate_open_enable为true,直接开启B门
gate_open_enable为true,直接开启B门
```
### 配置为false时的日志
@ -118,13 +120,13 @@ gate_enter_open_enable为true,直接开启B门
## 测试建议
### 测试场景1:配置为true
1. 设置 `gate_enter_open_enable = true`
1. 设置 `gate_open_enable = true`
2. 进入离场场景
3. 进行人脸识别
4. 验证:应直接开门,不进行网络请求
### 测试场景2:配置为false
1. 设置 `gate_enter_open_enable = false`
1. 设置 `gate_open_enable = false`
2. 进入离场场景
3. 进行人脸识别
4. 验证:应进行网络校验,校验成功后开门
@ -143,7 +145,7 @@ gate_enter_open_enable为true,直接开启B门
## 总结
此次修改实现了根据配置项 `gate_enter_open_enable` 来控制离场时是否跳过网络验证的功能:
此次修改实现了根据配置项 `gate_open_enable` 来控制离场时是否跳过网络验证的功能:
- 配置为 `true`:离场时直接开门,提升用户通行体验
- 配置为 `false` 或不存在:保持原有的网络校验流程,确保业务安全
Loading…
Cancel
Save