Browse Source

add leave check

dev
赵明涛 4 days ago
parent
commit
434e399ae2
  1. 111
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java
  2. 435
      app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java
  3. 176
      app/src/main/java/com/ouxuan/oxface/utils/VenueSceneUtils.java

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

@ -48,6 +48,8 @@ import com.ouxuan.oxface.orderOX.VerificationCodeActivity;
import com.ouxuan.oxface.utils.LogManager; import com.ouxuan.oxface.utils.LogManager;
import com.ouxuan.oxface.network.OrderVerificationManager; import com.ouxuan.oxface.network.OrderVerificationManager;
import com.ouxuan.oxface.network.OrderVerificationResultHandler; import com.ouxuan.oxface.network.OrderVerificationResultHandler;
import com.ouxuan.oxface.network.LeaveVerificationManager;
import com.ouxuan.oxface.utils.VenueSceneUtils;
import java.util.List; import java.util.List;
@ -175,6 +177,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
// 网络请求管理器 // 网络请求管理器
private OrderVerificationManager orderVerificationManager; private OrderVerificationManager orderVerificationManager;
private OrderVerificationResultHandler orderVerificationResultHandler; private OrderVerificationResultHandler orderVerificationResultHandler;
private LeaveVerificationManager leaveVerificationManager;
// 摄像头暂停管理相关 // 摄像头暂停管理相关
private Handler cameraTimeoutHandler; private Handler cameraTimeoutHandler;
@ -197,6 +200,9 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
// 初始化网络请求管理器 // 初始化网络请求管理器
initNetworkManagers(); initNetworkManagers();
// 初始化离场校验管理器
initLeaveVerificationManager();
initView(); initView();
// 初始化并注册广播接收器 // 初始化并注册广播接收器
@ -230,6 +236,81 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
} }
/** /**
* 初始化离场校验管理器
*/
private void initLeaveVerificationManager() {
// 初始化离场校验管理器
leaveVerificationManager = new LeaveVerificationManager(this, new LeaveVerificationManager.LeaveVerificationListener() {
@Override
public void onLeaveVerificationStart() {
showLoadingStatus("正在进行离场校验...");
}
@Override
public void onLeaveVerificationSuccess(com.ouxuan.oxface.network.api.PadApiService.CheckLeaveResult result) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.VISIBLE);
textCompareStatus.setTextColor(Color.parseColor("#009874"));
textCompareStatus.setText(result != null && result.getMessage() != null ?
result.getMessage() : "离场成功");
// 3秒后隐藏状态提示
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.GONE);
}
}
}, 3000);
}
}
});
}
@Override
public void onLeaveVerificationError(int errorCode, String errorMessage) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.VISIBLE);
textCompareStatus.setTextColor(Color.parseColor("#fec133"));
textCompareStatus.setText(errorMessage != null ? errorMessage : "离场失败");
// 3秒后隐藏状态提示
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.GONE);
}
}
}, 3000);
}
}
});
}
@Override
public void onLeaveVerificationComplete() {
// 离场校验完成后恢复摄像头
resumeCamera();
}
@Override
public void showToast(String message) {
OXFaceOnlineActivity.this.showToast(message);
}
});
LogManager.logInfo(TAG, "离场校验管理器初始化完成");
}
/**
* 初始化网络请求管理器 * 初始化网络请求管理器
*/ */
private void initNetworkManagers() { private void initNetworkManagers() {
@ -1140,8 +1221,16 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
// 设置模式为2人脸验证 // 设置模式为2人脸验证
modeType = OrderVerificationManager.TYPE_FACE_VERIFICATION; modeType = OrderVerificationManager.TYPE_FACE_VERIFICATION;
// 自动调用订单核销方法
// 判断是进场还是离场场景
if (VenueSceneUtils.isLeaveScene(OXFaceOnlineActivity.this)) {
// 离场场景调用离场校验
LogManager.logInfo(TAG, "检测到离场场景,执行离场校验");
performLeaveVerification(base64img);
} else {
// 进场场景调用原有的订单核销方法
LogManager.logInfo(TAG, "检测到进场场景,执行订单核销");
getCheckOrder(); getCheckOrder();
}
// 处理完成后重置标志 // 处理完成后重置标志
needSendFaceImage = false; needSendFaceImage = false;
@ -1726,6 +1815,26 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
} }
/** /**
* 执行离场校验
* @param faceBase64 人脸base64数据
*/
private void performLeaveVerification(String faceBase64) {
LogManager.logInfo(TAG, "开始执行离场校验");
// 在离场校验开始时暂停摄像头
pauseCameraWithTimeout();
// 调用离场校验管理器执行人脸离场校验
if (leaveVerificationManager != null) {
leaveVerificationManager.performFaceLeaveVerification(faceBase64);
} else {
LogManager.logError(TAG, "离场校验管理器未初始化");
showToast("离场校验服务未初始化");
resumeCamera();
}
}
/**
* 强制恢复摄像头并关闭所有对话框超时后调用 * 强制恢复摄像头并关闭所有对话框超时后调用
*/ */
private void forceResumeAndCloseAllDialogs() { private void forceResumeAndCloseAllDialogs() {

435
app/src/main/java/com/ouxuan/oxface/network/LeaveVerificationManager.java

@ -0,0 +1,435 @@
package com.ouxuan.oxface.network;
import android.content.Context;
import android.util.Log;
import com.ouxuan.oxface.data.DeviceSelectDataManager;
import com.ouxuan.oxface.network.api.PadApiService;
import com.ouxuan.oxface.network.callback.NetworkCallback;
import com.ouxuan.oxface.network.utils.NetworkUtils;
import com.ouxuan.oxface.utils.LogManager;
import com.ouxuan.oxface.utils.VenueSceneUtils;
/**
* 离场校验管理器
* 负责处理离场校验的网络请求和结果处理
*/
public class LeaveVerificationManager {
private static final String TAG = "LeaveVerificationManager";
private Context context;
private LeaveVerificationListener listener;
/**
* 离场校验监听器接口
*/
public interface LeaveVerificationListener {
/**
* 离场校验开始
*/
void onLeaveVerificationStart();
/**
* 离场校验成功
* @param result 校验结果
*/
void onLeaveVerificationSuccess(PadApiService.CheckLeaveResult result);
/**
* 离场校验失败
* @param errorCode 错误代码
* @param errorMessage 错误消息
*/
void onLeaveVerificationError(int errorCode, String errorMessage);
/**
* 离场校验完成无论成功或失败
*/
void onLeaveVerificationComplete();
/**
* 显示Toast消息
* @param message 消息内容
*/
void showToast(String message);
}
public LeaveVerificationManager(Context context, LeaveVerificationListener listener) {
this.context = context;
this.listener = listener;
}
/**
* 执行人脸离场校验
* @param faceBase64 人脸base64数据
*/
public void performFaceLeaveVerification(String faceBase64) {
LogManager.logInfo(TAG, "开始执行人脸离场校验");
Log.d(TAG, "performFaceLeaveVerification - faceBase64长度: " + (faceBase64 != null ? faceBase64.length() : 0));
try {
// 获取设备信息
DeviceSelectDataManager dataManager = DeviceSelectDataManager.getInstance(context);
String token = dataManager.getSessionToken();
int hardwareId = dataManager.getSelectedHardwareId();
if (token.isEmpty()) {
LogManager.logError(TAG, "离场校验失败:token为空");
if (listener != null) {
listener.onLeaveVerificationError(-1, "设备未授权,请重新登录");
}
return;
}
if (hardwareId <= 0) {
LogManager.logError(TAG, "离场校验失败:hardwareId无效");
if (listener != null) {
listener.onLeaveVerificationError(-1, "设备ID无效,请重新选择设备");
}
return;
}
LogManager.logInfo(TAG, "离场校验参数 - hardwareId: " + hardwareId + ", token长度: " + token.length());
// 通知开始校验
if (listener != null) {
listener.onLeaveVerificationStart();
}
// 调用离场校验接口type=2表示人脸验证
NetworkUtils.checkLeave(token, 2, hardwareId, null, null,
new NetworkCallback<PadApiService.CheckLeaveResult>() {
@Override
public void onStart() {
LogManager.logInfo(TAG, "离场校验网络请求开始");
Log.d(TAG, "离场校验网络请求开始");
}
@Override
public void onSuccess(PadApiService.CheckLeaveResult result) {
LogManager.logInfo(TAG, "离场校验成功");
Log.d(TAG, "离场校验成功 - message: " + (result != null ? result.getMessage() : "null"));
// 播放离场成功音频
VenueSceneUtils.playAudio("离场成功");
// 执行门禁控制
VenueSceneUtils.openDoorAfterDetect();
if (listener != null) {
listener.onLeaveVerificationSuccess(result);
listener.showToast(result != null && result.getMessage() != null ?
result.getMessage() : "离场成功");
}
}
@Override
public void onError(int errorCode, String errorMessage) {
LogManager.logError(TAG, "离场校验失败 - code: " + errorCode + ", message: " + errorMessage);
Log.e(TAG, "离场校验失败 - code: " + errorCode + ", message: " + errorMessage);
// 处理特殊错误码
handleLeaveVerificationError(errorCode, errorMessage);
if (listener != null) {
listener.onLeaveVerificationError(errorCode, errorMessage);
}
}
@Override
public void onException(Throwable throwable) {
LogManager.logError(TAG, "离场校验网络异常", throwable);
Log.e(TAG, "离场校验网络异常: " + throwable.getMessage(), throwable);
if (listener != null) {
listener.onLeaveVerificationError(-1, "网络请求异常: " + throwable.getMessage());
}
}
@Override
public void onComplete() {
LogManager.logInfo(TAG, "离场校验网络请求完成");
Log.d(TAG, "离场校验网络请求完成");
if (listener != null) {
listener.onLeaveVerificationComplete();
}
}
});
} catch (Exception e) {
LogManager.logError(TAG, "执行离场校验时发生异常", e);
Log.e(TAG, "执行离场校验时发生异常: " + e.getMessage(), e);
if (listener != null) {
listener.onLeaveVerificationError(-1, "系统异常: " + e.getMessage());
listener.onLeaveVerificationComplete();
}
}
}
/**
* 执行验证码离场校验
* @param verifyCode 验证码
*/
public void performCodeLeaveVerification(String verifyCode) {
LogManager.logInfo(TAG, "开始执行验证码离场校验");
Log.d(TAG, "performCodeLeaveVerification - verifyCode: " + verifyCode);
try {
// 获取设备信息
DeviceSelectDataManager dataManager = DeviceSelectDataManager.getInstance(context);
String token = dataManager.getSessionToken();
int hardwareId = dataManager.getSelectedHardwareId();
if (token.isEmpty()) {
LogManager.logError(TAG, "离场校验失败:token为空");
if (listener != null) {
listener.onLeaveVerificationError(-1, "设备未授权,请重新登录");
}
return;
}
if (hardwareId <= 0) {
LogManager.logError(TAG, "离场校验失败:hardwareId无效");
if (listener != null) {
listener.onLeaveVerificationError(-1, "设备ID无效,请重新选择设备");
}
return;
}
LogManager.logInfo(TAG, "验证码离场校验参数 - hardwareId: " + hardwareId + ", verifyCode: " + verifyCode);
// 通知开始校验
if (listener != null) {
listener.onLeaveVerificationStart();
}
// 调用离场校验接口type=1表示验证码验证
NetworkUtils.checkLeave(token, 1, hardwareId, verifyCode, null,
new NetworkCallback<PadApiService.CheckLeaveResult>() {
@Override
public void onStart() {
LogManager.logInfo(TAG, "验证码离场校验网络请求开始");
Log.d(TAG, "验证码离场校验网络请求开始");
}
@Override
public void onSuccess(PadApiService.CheckLeaveResult result) {
LogManager.logInfo(TAG, "验证码离场校验成功");
Log.d(TAG, "验证码离场校验成功 - message: " + (result != null ? result.getMessage() : "null"));
// 播放离场成功音频
VenueSceneUtils.playAudio("离场成功");
// 执行门禁控制
VenueSceneUtils.openDoorAfterDetect();
if (listener != null) {
listener.onLeaveVerificationSuccess(result);
listener.showToast(result != null && result.getMessage() != null ?
result.getMessage() : "离场成功");
}
}
@Override
public void onError(int errorCode, String errorMessage) {
LogManager.logError(TAG, "验证码离场校验失败 - code: " + errorCode + ", message: " + errorMessage);
Log.e(TAG, "验证码离场校验失败 - code: " + errorCode + ", message: " + errorMessage);
// 处理特殊错误码
handleLeaveVerificationError(errorCode, errorMessage);
if (listener != null) {
listener.onLeaveVerificationError(errorCode, errorMessage);
}
}
@Override
public void onException(Throwable throwable) {
LogManager.logError(TAG, "验证码离场校验网络异常", throwable);
Log.e(TAG, "验证码离场校验网络异常: " + throwable.getMessage(), throwable);
if (listener != null) {
listener.onLeaveVerificationError(-1, "网络请求异常: " + throwable.getMessage());
}
}
@Override
public void onComplete() {
LogManager.logInfo(TAG, "验证码离场校验网络请求完成");
Log.d(TAG, "验证码离场校验网络请求完成");
if (listener != null) {
listener.onLeaveVerificationComplete();
}
}
});
} catch (Exception e) {
LogManager.logError(TAG, "执行验证码离场校验时发生异常", e);
Log.e(TAG, "执行验证码离场校验时发生异常: " + e.getMessage(), e);
if (listener != null) {
listener.onLeaveVerificationError(-1, "系统异常: " + e.getMessage());
listener.onLeaveVerificationComplete();
}
}
}
/**
* 执行扫码器离场校验
* @param decryptText 解密文本
*/
public void performScannerLeaveVerification(String decryptText) {
LogManager.logInfo(TAG, "开始执行扫码器离场校验");
Log.d(TAG, "performScannerLeaveVerification - decryptText: " + decryptText);
try {
// 获取设备信息
DeviceSelectDataManager dataManager = DeviceSelectDataManager.getInstance(context);
String token = dataManager.getSessionToken();
int hardwareId = dataManager.getSelectedHardwareId();
if (token.isEmpty()) {
LogManager.logError(TAG, "离场校验失败:token为空");
if (listener != null) {
listener.onLeaveVerificationError(-1, "设备未授权,请重新登录");
}
return;
}
if (hardwareId <= 0) {
LogManager.logError(TAG, "离场校验失败:hardwareId无效");
if (listener != null) {
listener.onLeaveVerificationError(-1, "设备ID无效,请重新选择设备");
}
return;
}
LogManager.logInfo(TAG, "扫码器离场校验参数 - hardwareId: " + hardwareId + ", decryptText长度: " +
(decryptText != null ? decryptText.length() : 0));
// 通知开始校验
if (listener != null) {
listener.onLeaveVerificationStart();
}
// 调用离场校验接口type=4表示扫码器验证
NetworkUtils.checkLeave(token, 4, hardwareId, null, decryptText,
new NetworkCallback<PadApiService.CheckLeaveResult>() {
@Override
public void onStart() {
LogManager.logInfo(TAG, "扫码器离场校验网络请求开始");
Log.d(TAG, "扫码器离场校验网络请求开始");
}
@Override
public void onSuccess(PadApiService.CheckLeaveResult result) {
LogManager.logInfo(TAG, "扫码器离场校验成功");
Log.d(TAG, "扫码器离场校验成功 - message: " + (result != null ? result.getMessage() : "null"));
// 播放离场成功音频
VenueSceneUtils.playAudio("离场成功");
// 执行门禁控制
VenueSceneUtils.openDoorAfterDetect();
if (listener != null) {
listener.onLeaveVerificationSuccess(result);
listener.showToast(result != null && result.getMessage() != null ?
result.getMessage() : "离场成功");
}
}
@Override
public void onError(int errorCode, String errorMessage) {
LogManager.logError(TAG, "扫码器离场校验失败 - code: " + errorCode + ", message: " + errorMessage);
Log.e(TAG, "扫码器离场校验失败 - code: " + errorCode + ", message: " + errorMessage);
// 处理特殊错误码
handleLeaveVerificationError(errorCode, errorMessage);
if (listener != null) {
listener.onLeaveVerificationError(errorCode, errorMessage);
}
}
@Override
public void onException(Throwable throwable) {
LogManager.logError(TAG, "扫码器离场校验网络异常", throwable);
Log.e(TAG, "扫码器离场校验网络异常: " + throwable.getMessage(), throwable);
if (listener != null) {
listener.onLeaveVerificationError(-1, "网络请求异常: " + throwable.getMessage());
}
}
@Override
public void onComplete() {
LogManager.logInfo(TAG, "扫码器离场校验网络请求完成");
Log.d(TAG, "扫码器离场校验网络请求完成");
if (listener != null) {
listener.onLeaveVerificationComplete();
}
}
});
} catch (Exception e) {
LogManager.logError(TAG, "执行扫码器离场校验时发生异常", e);
Log.e(TAG, "执行扫码器离场校验时发生异常: " + e.getMessage(), e);
if (listener != null) {
listener.onLeaveVerificationError(-1, "系统异常: " + e.getMessage());
listener.onLeaveVerificationComplete();
}
}
}
/**
* 处理离场校验特殊错误码
* @param errorCode 错误代码
* @param errorMessage 错误消息
*/
private void handleLeaveVerificationError(int errorCode, String errorMessage) {
try {
switch (errorCode) {
case 902:
// 订单超期需要扫码补缴
LogManager.logInfo(TAG, "处理902错误 - 订单超期需要扫码补缴");
VenueSceneUtils.playAudio("订单超期需要扫码补缴");
if (listener != null) {
listener.showToast(errorMessage != null ? errorMessage : "订单超期,需要扫码补缴");
}
break;
case 302:
// 跳转到验证结果页面
LogManager.logInfo(TAG, "处理302错误 - 跳转到验证结果页面");
// 这里可以添加页面跳转逻辑
break;
case 502:
// 服务器错误特殊处理
LogManager.logInfo(TAG, "处理502错误 - 服务器暂时不可用");
if (listener != null) {
listener.showToast("服务器暂时不可用,请稍后再试");
}
break;
default:
// 其他错误
LogManager.logInfo(TAG, "处理其他错误 - code: " + errorCode);
if (listener != null) {
listener.showToast(errorMessage != null ? errorMessage : "离场失败");
}
break;
}
} catch (Exception e) {
LogManager.logError(TAG, "处理离场校验错误时发生异常", e);
Log.e(TAG, "处理离场校验错误时发生异常: " + e.getMessage(), e);
}
}
}

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

@ -0,0 +1,176 @@
package com.ouxuan.oxface.utils;
import android.content.Context;
import android.util.Log;
import com.ouxuan.oxface.data.DeviceSelectDataManager;
import com.ouxuan.oxface.network.api.PadApiService;
/**
* 场所场景工具类
* 用于判断当前是进场还是离场场景以及相关的控制功能
*/
public class VenueSceneUtils {
private static final String TAG = "VenueSceneUtils";
// 场景类型常量
public static final String SCENE_VENUE_ENTER = "venue_enter"; // 进场场景
public static final String SCENE_VENUE_LEAVE = "venue_leave"; // 离场场景
public static final String SCENE_DEFAULT = "default"; // 默认场景
/**
* 判断当前是否为离场场景
* @param context 上下文
* @return true表示离场场景false表示进场场景
*/
public static boolean isLeaveScene(Context context) {
try {
DeviceSelectDataManager dataManager = DeviceSelectDataManager.getInstance(context);
PadApiService.PadConfig padConfig = dataManager.getPadConfig();
if (padConfig != null) {
String padUseScene = padConfig.getPadUseScene();
boolean isLeave = SCENE_VENUE_LEAVE.equals(padUseScene);
LogManager.logInfo(TAG, "场景判断 - pad_use_scene: " + padUseScene + ", 是否离场: " + isLeave);
Log.d(TAG, "场景判断 - pad_use_scene: " + padUseScene + ", 是否离场: " + isLeave);
return isLeave;
} else {
LogManager.logWarning(TAG, "无法获取PadConfig,默认为进场场景");
Log.w(TAG, "无法获取PadConfig,默认为进场场景");
return false;
}
} catch (Exception e) {
LogManager.logError(TAG, "判断场景类型时发生异常,默认为进场场景", e);
Log.e(TAG, "判断场景类型时发生异常,默认为进场场景: " + e.getMessage(), e);
return false;
}
}
/**
* 获取当前场景类型描述
* @param context 上下文
* @return 场景描述字符串
*/
public static String getSceneDescription(Context context) {
return isLeaveScene(context) ? "离场场景" : "进场场景";
}
/**
* 获取pad使用场景配置值
* @param context 上下文
* @return pad_use_scene配置值
*/
public static String getPadUseScene(Context context) {
try {
DeviceSelectDataManager dataManager = DeviceSelectDataManager.getInstance(context);
PadApiService.PadConfig padConfig = dataManager.getPadConfig();
if (padConfig != null) {
String padUseScene = padConfig.getPadUseScene();
Log.d(TAG, "获取pad_use_scene: " + padUseScene);
return padUseScene != null ? padUseScene : SCENE_DEFAULT;
} else {
Log.w(TAG, "无法获取PadConfig,返回默认场景");
return SCENE_DEFAULT;
}
} catch (Exception e) {
Log.e(TAG, "获取pad_use_scene时发生异常: " + e.getMessage(), e);
return SCENE_DEFAULT;
}
}
/**
* 播放音频提示
* 根据用户确认信息暂时只输出日志
* @param audioType 音频类型离场成功订单超期需要扫码补缴等
*/
public static void playAudio(String audioType) {
try {
LogManager.logInfo(TAG, "播放音频: " + audioType);
Log.d(TAG, "playAudio() - 音频类型: " + audioType);
// 根据用户确认暂时只输出日志后续可扩展实际音频播放逻辑
// 可以在这里添加实际的音频播放实现
} catch (Exception e) {
LogManager.logError(TAG, "播放音频时发生异常", e);
Log.e(TAG, "播放音频时发生异常: " + e.getMessage(), e);
}
}
/**
* 门禁控制 - 检测后开门
* 根据用户确认信息暂时只输出日志
*/
public static void openDoorAfterDetect() {
try {
LogManager.logInfo(TAG, "执行门禁控制 - 检测后开门");
Log.d(TAG, "openDoorAfterDetect() - 门禁控制,检测后开门");
// 根据用户确认暂时只输出日志后续可扩展实际门禁控制逻辑
// 可以在这里添加实际的门禁控制实现
} catch (Exception e) {
LogManager.logError(TAG, "门禁控制时发生异常", e);
Log.e(TAG, "门禁控制时发生异常: " + e.getMessage(), e);
}
}
/**
* 获取门禁相关配置
* @param context 上下文
* @return 门禁配置信息如果获取失败返回null
*/
public static GateConfig getGateConfig(Context context) {
try {
DeviceSelectDataManager dataManager = DeviceSelectDataManager.getInstance(context);
PadApiService.PadConfig padConfig = dataManager.getPadConfig();
if (padConfig != null) {
GateConfig gateConfig = new GateConfig();
gateConfig.gateEnterOpenEnable = padConfig.getExtension() != null &&
padConfig.getExtension().getPadSetting() != null &&
padConfig.getExtension().getPadSetting().isGateEnterOpenEnable();
gateConfig.gateAbGpio = padConfig.getExtension() != null &&
padConfig.getExtension().getPadSetting() != null &&
padConfig.getExtension().getPadSetting().isGateAbGpio();
gateConfig.gateAbUdp = padConfig.getExtension() != null &&
padConfig.getExtension().getPadSetting() != null &&
padConfig.getExtension().getPadSetting().isGateAbUdp();
Log.d(TAG, "门禁配置 - EnterOpenEnable: " + gateConfig.gateEnterOpenEnable +
", AbGpio: " + gateConfig.gateAbGpio +
", AbUdp: " + gateConfig.gateAbUdp);
return gateConfig;
} else {
Log.w(TAG, "无法获取PadConfig,门禁配置返回null");
return null;
}
} catch (Exception e) {
Log.e(TAG, "获取门禁配置时发生异常: " + e.getMessage(), e);
return null;
}
}
/**
* 门禁配置信息类
*/
public static class GateConfig {
public boolean gateEnterOpenEnable = false; // 门禁进入开启使能
public boolean gateAbGpio = false; // 门禁AB GPIO
public boolean gateAbUdp = false; // 门禁AB UDP
@Override
public String toString() {
return "GateConfig{" +
"gateEnterOpenEnable=" + gateEnterOpenEnable +
", gateAbGpio=" + gateAbGpio +
", gateAbUdp=" + gateAbUdp +
'}';
}
}
}
Loading…
Cancel
Save