赵明涛 1 day ago
parent
commit
299e9ecd55
  1. 41
      app/src/main/java/com/ouxuan/oxface/abgate/ABGateManager.java
  2. 44
      app/src/main/java/com/ouxuan/oxface/abgate/ABGateUsageExample.java

41
app/src/main/java/com/ouxuan/oxface/abgate/ABGateManager.java

@ -200,17 +200,11 @@ public class ABGateManager {
public boolean ABPeopleCheck() {
LogManager.logInfo(TAG, "执行AB门内人数检查");
if (callback == null) {
LogManager.logError(TAG, "ABPeopleCheck回调参数为空");
return;
}
// 检查485是否启用
if (!ox485.isGateCamera485OxOn()) {
String errorMsg = "485摄像头模式未启用";
LogManager.logError(TAG, errorMsg);
callback.onError(errorMsg);
return;
throw new RuntimeException(errorMsg);
}
try {
@ -219,6 +213,9 @@ public class ABGateManager {
String sceneType = isLeaveScene ? "离场" : "进场";
LogManager.logInfo(TAG, "当前场景类型: " + sceneType);
// 创建超时控制的CompletableFuture
CompletableFuture<Boolean> peopleCheckFuture = new CompletableFuture<>();
// 异步获取485人数
ox485.sendHex485ForPeopleNum(new Ox485.PeopleNumCallback() {
@Override
@ -241,41 +238,25 @@ public class ABGateManager {
}
LogManager.logInfo(TAG, "人数检查结果: " + checkResult);
final boolean result = peopleCheckPassed;
mainHandler.post(new Runnable() {
@Override
public void run() {
callback.onSuccess(result);
}
});
peopleCheckFuture.complete(peopleCheckPassed);
}
@Override
public void onError(String errorMessage) {
LogManager.logError(TAG, "485人数获取失败: " + errorMessage);
mainHandler.post(new Runnable() {
@Override
public void run() {
callback.onError("485人数获取失败: " + errorMessage);
}
});
peopleCheckFuture.completeExceptionally(new RuntimeException("485人数获取失败: " + errorMessage));
}
});
// 设置超时处理
mainHandler.postDelayed(new Runnable() {
@Override
public void run() {
LogManager.logError(TAG, "人数检查超时");
callback.onError("人数检查超时");
}
}, PEOPLE_CHECK_TIMEOUT);
// 同步等待结果设置超时
boolean result = peopleCheckFuture.get(PEOPLE_CHECK_TIMEOUT, TimeUnit.MILLISECONDS);
LogManager.logInfo(TAG, "人数检查完成,结果: " + result);
return result;
} catch (Exception e) {
String errorMsg = "人数检查异常: " + e.getMessage();
LogManager.logError(TAG, errorMsg, e);
callback.onError(errorMsg);
throw new RuntimeException(errorMsg);
}
}

44
app/src/main/java/com/ouxuan/oxface/abgate/ABGateUsageExample.java

@ -95,17 +95,21 @@ public class ABGateUsageExample {
public void checkGateStatusOnly() {
LogManager.logInfo(TAG, "单独执行门状态检查");
abGateManager.ABGateCheck(new ABGateManager.ABGateCheckCallback() {
@Override
public void onSuccess(boolean gateAvailable) {
LogManager.logInfo(TAG, "门状态检查结果: " + (gateAvailable ? "门已关闭,可用" : "门未完全关闭,不可用"));
}
// 在后台线程中调用同步方法
new Thread(() -> {
try {
boolean gateAvailable = abGateManager.ABGateCheck();
String result = gateAvailable ? "门已关闭,可用" : "门未完全关闭,不可用";
@Override
public void onError(String errorMessage) {
LogManager.logError(TAG, "门状态检查失败: " + errorMessage);
}
android.os.Handler mainHandler = new android.os.Handler(android.os.Looper.getMainLooper());
mainHandler.post(() -> {
LogManager.logInfo(TAG, "门状态检查结果: " + result);
});
} catch (Exception e) {
LogManager.logError(TAG, "门状态检查异常: " + e.getMessage(), e);
}
}).start();
}
/**
@ -114,17 +118,21 @@ public class ABGateUsageExample {
public void checkPeopleCountOnly() {
LogManager.logInfo(TAG, "单独执行人数检查");
abGateManager.ABPeopleCheck(new ABGateManager.ABGateCheckCallback() {
@Override
public void onSuccess(boolean peopleCheckPassed) {
LogManager.logInfo(TAG, "人数检查结果: " + (peopleCheckPassed ? "人数符合要求" : "人数不符合要求"));
}
// 在后台线程中调用同步方法
new Thread(() -> {
try {
boolean peopleCheckPassed = abGateManager.ABPeopleCheck();
String result = peopleCheckPassed ? "人数符合要求" : "人数不符合要求";
@Override
public void onError(String errorMessage) {
LogManager.logError(TAG, "人数检查失败: " + errorMessage);
}
android.os.Handler mainHandler = new android.os.Handler(android.os.Looper.getMainLooper());
mainHandler.post(() -> {
LogManager.logInfo(TAG, "人数检查结果: " + result);
});
} catch (Exception e) {
LogManager.logError(TAG, "人数检查异常: " + e.getMessage(), e);
}
}).start();
}
/**

Loading…
Cancel
Save