Browse Source

add initPadSettingConfig

dev
MTing 4 days ago
parent
commit
9fd376183a
  1. 30
      app/src/main/java/com/ouxuan/oxface/data/DeviceSelectDataManager.java
  2. 172
      app/src/main/java/com/ouxuan/oxface/utils/InitPadSettingConfig.java
  3. 22
      oxplugin_padface/src/main/java/io/dcloud/oxplugin/FaceWXModule.java

30
app/src/main/java/com/ouxuan/oxface/data/DeviceSelectDataManager.java

@ -9,6 +9,7 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import com.ouxuan.oxface.network.api.PadApiService; import com.ouxuan.oxface.network.api.PadApiService;
import com.ouxuan.oxface.network.model.ApiResponse; import com.ouxuan.oxface.network.model.ApiResponse;
import com.ouxuan.oxface.utils.InitPadSettingConfig;
/** /**
* 设备选择数据管理器 * 设备选择数据管理器
@ -377,6 +378,9 @@ public class DeviceSelectDataManager {
if (apiResponseCode > 0 || (apiResponseDataJson != null && !apiResponseDataJson.isEmpty())) { if (apiResponseCode > 0 || (apiResponseDataJson != null && !apiResponseDataJson.isEmpty())) {
Log.d(TAG, "从本地存储恢复API响应数据成功"); Log.d(TAG, "从本地存储恢复API响应数据成功");
// 初始化Pad设置配置
initPadSettingConfig();
} }
// 如果有API响应数据但没有faceLicense尝试从响应数据中提取 // 如果有API响应数据但没有faceLicense尝试从响应数据中提取
@ -397,6 +401,32 @@ public class DeviceSelectDataManager {
} }
/** /**
* 初始化Pad设置配置
*/
private void initPadSettingConfig() {
try {
if (apiResponseDataJson != null && !apiResponseDataJson.isEmpty()) {
PadApiService.PadSelectResponse response = gson.fromJson(apiResponseDataJson, PadApiService.PadSelectResponse.class);
if (response != null && response.getPadConfig() != null && response.getPadConfig().getExtension() != null) {
PadApiService.PadExtension extension = response.getPadConfig().getExtension();
if (extension.getPadSetting() != null) {
PadApiService.PadSetting padSetting = extension.getPadSetting();
// 初始化Pad设置配置工具类
InitPadSettingConfig.getInstance().initPadSetting(padSetting);
Log.d(TAG, "Pad设置配置初始化成功");
} else {
Log.w(TAG, "Pad设置配置为空");
}
} else {
Log.w(TAG, "Pad配置或扩展信息为空");
}
}
} catch (Exception e) {
Log.e(TAG, "初始化Pad设置配置失败: " + e.getMessage(), e);
}
}
/**
* 打印选择信息到日志 * 打印选择信息到日志
*/ */
private void logSelectInfo() { private void logSelectInfo() {

172
app/src/main/java/com/ouxuan/oxface/utils/InitPadSettingConfig.java

@ -0,0 +1,172 @@
package com.ouxuan.oxface.utils;
import android.util.Log;
import com.baidu.idl.face.main.finance.model.SingleBaseConfig;
import com.baidu.idl.face.main.finance.utils.FinanceConfigUtils;
import com.ouxuan.oxface.network.api.PadApiService;
/**
* Pad设置配置初始化工具类
* 用于解析pad_setting配置并应用到百度SDK配置中
*/
public class InitPadSettingConfig {
private static final String TAG = "InitPadSettingConfig";
// 单例实例
private static volatile InitPadSettingConfig instance;
// Pad设置配置数据
private PadApiService.PadSetting padSetting;
private InitPadSettingConfig() {
// 私有构造函数
}
/**
* 获取InitPadSettingConfig单例实例
* @return InitPadSettingConfig实例
*/
public static InitPadSettingConfig getInstance() {
if (instance == null) {
synchronized (InitPadSettingConfig.class) {
if (instance == null) {
instance = new InitPadSettingConfig();
}
}
}
return instance;
}
/**
* 初始化Pad设置配置
* @param padSetting Pad设置配置数据
*/
public void initPadSetting(PadApiService.PadSetting padSetting) {
this.padSetting = padSetting;
applyPadSettingConfig();
}
/**
* 应用Pad设置配置到百度SDK
*/
private void applyPadSettingConfig() {
if (padSetting == null) {
Log.w(TAG, "Pad设置配置为空,无法应用配置");
return;
}
try {
// 应用活体检测配置
applyLivingControlConfig();
// 应用摄像头角度配置
applyCameraAngleConfig();
// 可以继续添加其他配置项的处理
Log.d(TAG, "Pad设置配置应用成功");
} catch (Exception e) {
Log.e(TAG, "应用Pad设置配置失败: " + e.getMessage(), e);
}
}
/**
* 应用活体检测配置
*/
private void applyLivingControlConfig() {
try {
boolean livingControl = padSetting.isLivingControl();
Log.d(TAG, "应用活体检测配置: livingControl=" + livingControl);
// 设置活体检测开关
SingleBaseConfig.getBaseConfig().setLivingControl(livingControl);
// 根据活体检测开关设置类型
if (livingControl) {
// 开启活体检测设置为RGB活体检测(类型1)
SingleBaseConfig.getBaseConfig().setType(1);
} else {
// 关闭活体检测
SingleBaseConfig.getBaseConfig().setType(0);
}
// 保存配置到文件
FinanceConfigUtils.modityJson();
Log.d(TAG, "活体检测配置应用成功: type=" + SingleBaseConfig.getBaseConfig().getType() +
", livingControl=" + SingleBaseConfig.getBaseConfig().isLivingControl());
} catch (Exception e) {
Log.e(TAG, "应用活体检测配置失败: " + e.getMessage(), e);
}
}
/**
* 应用摄像头角度配置
*/
private void applyCameraAngleConfig() {
try {
int deviceType = padSetting.getDeviceType();
Log.d(TAG, "应用摄像头角度配置: deviceType=" + deviceType);
// 根据设备类型设置摄像头角度
if (deviceType != 5) {
Log.d(TAG, "非第6批设备,设置摄像头角度为270度");
SingleBaseConfig.getBaseConfig().setVideoDirection(270);
SingleBaseConfig.getBaseConfig().setRgbVideoDirection(270);
SingleBaseConfig.getBaseConfig().setMirrorDetectRGB(0);
} else {
Log.d(TAG, "第6批设备,设置摄像头角度为90度");
SingleBaseConfig.getBaseConfig().setVideoDirection(90);
SingleBaseConfig.getBaseConfig().setRgbVideoDirection(90);
SingleBaseConfig.getBaseConfig().setMirrorDetectRGB(1);
}
// 保存配置到文件
FinanceConfigUtils.modityJson();
Log.d(TAG, "摄像头角度配置应用成功: videoDirection=" + SingleBaseConfig.getBaseConfig().getVideoDirection() +
", rgbVideoDirection=" + SingleBaseConfig.getBaseConfig().getRgbVideoDirection() +
", mirrorDetectRGB=" + SingleBaseConfig.getBaseConfig().getMirrorDetectRGB());
} catch (Exception e) {
Log.e(TAG, "应用摄像头角度配置失败: " + e.getMessage(), e);
}
}
/**
* 获取Pad设置配置
* @return Pad设置配置数据
*/
public PadApiService.PadSetting getPadSetting() {
return padSetting;
}
/**
* 检查是否已初始化
* @return true如果已初始化
*/
public boolean isInitialized() {
return padSetting != null;
}
// ==================== 可添加的其他配置项方法 ====================
/*
* 以下是可以根据需要添加的其他配置项处理方法
*
* 1. 门禁控制相关配置
* 2. 摄像头配置相关
* 3. 检测参数配置
* 4. 其他设备特定配置
*
* 示例
*
* private void applyGateControlConfig() {
* // 处理门禁控制相关配置
* }
*
* private void applyCameraConfig() {
* // 处理摄像头配置相关配置
* }
*/
}

22
oxplugin_padface/src/main/java/io/dcloud/oxplugin/FaceWXModule.java

@ -51,6 +51,7 @@ import io.dcloud.oxplugin.util.HuaWeiScan;
import io.dcloud.oxplugin.util.LedControl; import io.dcloud.oxplugin.util.LedControl;
import io.dcloud.oxplugin.util.ProcessMemoryUtil; import io.dcloud.oxplugin.util.ProcessMemoryUtil;
import io.dcloud.oxplugin.OXFaceRGBFinanceActivityOnline; import io.dcloud.oxplugin.OXFaceRGBFinanceActivityOnline;
import com.ouxuan.oxface.utils.InitPadSettingConfig;
public class FaceWXModule extends UniModule { public class FaceWXModule extends UniModule {
@ -601,12 +602,27 @@ import io.dcloud.oxplugin.OXFaceRGBFinanceActivityOnline;
int living_type = Integer.parseInt(options.getString("living_type")); int living_type = Integer.parseInt(options.getString("living_type"));
// 使用InitPadSettingConfig工具类来处理活体检测配置
InitPadSettingConfig padSettingConfig = InitPadSettingConfig.getInstance();
if (padSettingConfig.isInitialized()) {
// 获取当前的Pad设置配置
com.ouxuan.oxface.network.api.PadApiService.PadSetting currentPadSetting = padSettingConfig.getPadSetting();
if (currentPadSetting != null) {
// 更新活体检测配置
currentPadSetting.setLivingControl(living_type == 1);
// 应用配置
padSettingConfig.initPadSetting(currentPadSetting);
}
} else {
// 如果没有初始化则直接设置百度SDK配置
if(living_type == 1){ if(living_type == 1){
// SingleBaseConfig.getBaseConfig().setType(1);
SingleBaseConfig.getBaseConfig().setLivingControl(true); SingleBaseConfig.getBaseConfig().setLivingControl(true);
}else {
// SingleBaseConfig.getBaseConfig().setType(0);
SingleBaseConfig.getBaseConfig().setType(1);
} else {
SingleBaseConfig.getBaseConfig().setLivingControl(false); SingleBaseConfig.getBaseConfig().setLivingControl(false);
SingleBaseConfig.getBaseConfig().setType(0);
}
} }
GateConfigUtils.modityJson(); //修改配置文件内容并重新读取配置 GateConfigUtils.modityJson(); //修改配置文件内容并重新读取配置

Loading…
Cancel
Save