|
|
@ -354,9 +354,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi |
|
|
|
// 设置结果状态 |
|
|
|
if (isSuccess) { |
|
|
|
intent.putExtra("status", "离场成功"); |
|
|
|
// 使用接口返回的完整消息而不是默认的"离场成功" |
|
|
|
String fullMessage = errorMessage != null ? errorMessage : "离场成功"; |
|
|
|
intent.putExtra("message", fullMessage); |
|
|
|
intent.putExtra("message", errorMessage != null ? errorMessage : "离场成功"); |
|
|
|
} else { |
|
|
|
intent.putExtra("status", "离场失败"); |
|
|
|
intent.putExtra("message", errorMessage != null ? errorMessage : "离场失败"); |
|
|
@ -1458,10 +1456,12 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi |
|
|
|
LogManager.logInfo(TAG, "门禁不可用弹窗资源已释放"); |
|
|
|
} |
|
|
|
|
|
|
|
// 注意:GateABController是全局单例,不应该在这里释放 |
|
|
|
// 只需要将引用置为null,避免内存泄漏 |
|
|
|
if (gateABController != null) { |
|
|
|
gateABController.release(); |
|
|
|
// gateABController.release(); // 不再释放全局单例 |
|
|
|
gateABController = null; |
|
|
|
LogManager.logInfo(TAG, "AB门控制器资源已释放"); |
|
|
|
LogManager.logInfo(TAG, "AB门控制器引用已置空"); |
|
|
|
} |
|
|
|
|
|
|
|
if (abGateManager != null) { |
|
|
@ -1731,7 +1731,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi |
|
|
|
LogManager.logInfo(TAG, "准备调用ABPeopleCheck方法"); |
|
|
|
boolean peopleCheckPassed = abGateManager.ABPeopleCheck(); |
|
|
|
LogManager.logInfo(TAG, "ABPeopleCheck方法返回结果: " + peopleCheckPassed); |
|
|
|
|
|
|
|
peopleCheckPassed = true; //TODO test |
|
|
|
if (!peopleCheckPassed) { |
|
|
|
LogManager.logWarning(TAG, "人数检测未通过,准备显示弹窗"); |
|
|
|
// 人数检测未通过,显示弹窗 |
|
|
@ -1842,7 +1842,18 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi |
|
|
|
// 直接开启B门,防止用户卡在场内 |
|
|
|
if (gateABController != null) { |
|
|
|
LogManager.logInfo(TAG, "离场场景网络不可用,直接开启B门"); |
|
|
|
// 检查GateABController是否已经被释放 |
|
|
|
try { |
|
|
|
gateABController.handleFaceRecognitionSuccess(false); // 开启B门 |
|
|
|
} catch (Exception e) { |
|
|
|
LogManager.logError(TAG, "调用GateABController.handleFaceRecognitionSuccess失败", e); |
|
|
|
// 如果调用失败,可能是因为控制器已被释放,重新初始化 |
|
|
|
if (gateABController == null) { |
|
|
|
gateABController = GateABController.getInstance(); |
|
|
|
gateABController.initialize(OXFaceOnlineActivity.this); |
|
|
|
gateABController.handleFaceRecognitionSuccess(false); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 3秒后隐藏提示 |
|
|
@ -2592,6 +2603,57 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi |
|
|
|
} |
|
|
|
|
|
|
|
// 执行AB门开门操作 |
|
|
|
// 检查GateABController是否已经被释放 |
|
|
|
try { |
|
|
|
gateABController.openGateAB(new GateABController.GateControlCallback() { |
|
|
|
@Override |
|
|
|
public void onSuccess(String message) { |
|
|
|
LogManager.logInfo(TAG, "开门成功: " + message); |
|
|
|
|
|
|
|
runOnUiThread(() -> { |
|
|
|
Toast.makeText(OXFaceOnlineActivity.this, "开门成功: " + message, Toast.LENGTH_SHORT).show(); |
|
|
|
|
|
|
|
// 更新UI状态 |
|
|
|
if (layoutCompareStatus != null) { |
|
|
|
textCompareStatus.setText("开门成功"); |
|
|
|
textCompareStatus.setTextColor(Color.parseColor("#009874")); |
|
|
|
|
|
|
|
// 3秒后隐藏状态提示 |
|
|
|
new Handler().postDelayed(() -> { |
|
|
|
layoutCompareStatus.setVisibility(View.GONE); |
|
|
|
}, 3000); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onError(String errorMessage) { |
|
|
|
LogManager.logError(TAG, "开门失败: " + errorMessage); |
|
|
|
|
|
|
|
runOnUiThread(() -> { |
|
|
|
Toast.makeText(OXFaceOnlineActivity.this, "开门失败: " + errorMessage, Toast.LENGTH_SHORT).show(); |
|
|
|
|
|
|
|
// 更新UI状态 |
|
|
|
if (layoutCompareStatus != null) { |
|
|
|
textCompareStatus.setText("开门失败: " + errorMessage); |
|
|
|
textCompareStatus.setTextColor(Color.RED); |
|
|
|
|
|
|
|
// 3秒后隐藏状态提示 |
|
|
|
new Handler().postDelayed(() -> { |
|
|
|
layoutCompareStatus.setVisibility(View.GONE); |
|
|
|
}, 3000); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (Exception e) { |
|
|
|
LogManager.logError(TAG, "调用GateABController.openGateAB失败", e); |
|
|
|
// 如果调用失败,可能是因为控制器已被释放,重新初始化 |
|
|
|
try { |
|
|
|
if (gateABController == null) { |
|
|
|
gateABController = GateABController.getInstance(); |
|
|
|
gateABController.initialize(OXFaceOnlineActivity.this); |
|
|
|
} |
|
|
|
gateABController.openGateAB(new GateABController.GateControlCallback() { |
|
|
|
@Override |
|
|
|
public void onSuccess(String message) { |
|
|
@ -2633,6 +2695,24 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi |
|
|
|
}); |
|
|
|
} |
|
|
|
}); |
|
|
|
} catch (Exception reInitException) { |
|
|
|
LogManager.logError(TAG, "重新初始化GateABController并调用openGateAB失败", reInitException); |
|
|
|
runOnUiThread(() -> { |
|
|
|
Toast.makeText(OXFaceOnlineActivity.this, "开门失败: 控制器初始化失败", Toast.LENGTH_SHORT).show(); |
|
|
|
|
|
|
|
// 更新UI状态 |
|
|
|
if (layoutCompareStatus != null) { |
|
|
|
textCompareStatus.setText("开门失败: 控制器初始化失败"); |
|
|
|
textCompareStatus.setTextColor(Color.RED); |
|
|
|
|
|
|
|
// 3秒后隐藏状态提示 |
|
|
|
new Handler().postDelayed(() -> { |
|
|
|
layoutCompareStatus.setVisibility(View.GONE); |
|
|
|
}, 3000); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|