You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
825 lines
30 KiB
825 lines
30 KiB
package com.ouxuan.oxface;
|
|
|
|
import android.app.Activity;
|
|
import android.content.ClipData;
|
|
import android.content.ClipboardManager;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import android.util.Log;
|
|
import android.view.View;
|
|
import android.widget.Button;
|
|
import android.widget.ScrollView;
|
|
import android.widget.TextView;
|
|
import android.widget.Toast;
|
|
|
|
// 恢复原来的导入
|
|
//import com.baidu.idl.face.main.finance.manager.FaceSDKManager;
|
|
|
|
import com.baidu.idl.face.main.finance.listener.SdkInitListener;
|
|
|
|
import com.baidu.idl.face.main.finance.manager.FaceSDKManager;
|
|
import com.ouxuan.oxface.device.DeviceUtils;
|
|
import com.ouxuan.oxface.device.GateABController;
|
|
import com.ouxuan.oxface.device.HuaWeiScanManager;
|
|
import com.ouxuan.oxface.device.Ox485;
|
|
import com.ouxuan.oxface.device.RelayController;
|
|
import com.ouxuan.oxface.network.utils.NetworkUtils;
|
|
import com.ouxuan.oxface.utils.AutoStartManager;
|
|
import com.ouxuan.oxface.utils.BootSimulationHelper;
|
|
import com.ouxuan.oxface.utils.LogManager;
|
|
import com.ouxuan.oxface.utils.UtilCodeHelper;
|
|
import com.ouxuan.oxface.utils.VenueSceneUtils;
|
|
|
|
import java.io.File;
|
|
import java.util.Date;
|
|
|
|
public class DebugActivity extends Activity {
|
|
private static final String TAG = "DebugActivity";
|
|
|
|
private TextView tvLogOutput;
|
|
private ScrollView logScrollView;
|
|
private AutoStartManager autoStartManager;
|
|
private RelayController relayController;
|
|
private Ox485 ox485;
|
|
private GateABController gateABController;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.activity_debug);
|
|
|
|
initViews();
|
|
initManagers();
|
|
setupClickListeners();
|
|
}
|
|
|
|
private void initViews() {
|
|
tvLogOutput = findViewById(R.id.tvLogOutput);
|
|
logScrollView = findViewById(R.id.logScrollView);
|
|
|
|
// 初始化日志显示
|
|
tvLogOutput.setText("调试界面已启动 - " + new Date().toString() + "\n");
|
|
}
|
|
|
|
private void initManagers() {
|
|
autoStartManager = AutoStartManager.getInstance(this);
|
|
relayController = RelayController.getInstance();
|
|
ox485 = Ox485.getInstance();
|
|
ox485.initialize(this);
|
|
gateABController = GateABController.getInstance();
|
|
gateABController.initialize(this);
|
|
}
|
|
|
|
private void setupClickListeners() {
|
|
// 测试自启动按钮
|
|
Button btnTestAutoStart = findViewById(R.id.btnTestAutoStart);
|
|
btnTestAutoStart.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
logMessage("触发自启动测试...");
|
|
triggerAutoStartTest();
|
|
}
|
|
});
|
|
|
|
// 测试直接启动按钮
|
|
Button btnTestDirectStart = findViewById(R.id.btnTestDirectStart);
|
|
btnTestDirectStart.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
logMessage("触发直接启动测试...");
|
|
triggerDirectStartTest();
|
|
}
|
|
});
|
|
|
|
// 显示日志路径按钮
|
|
Button btnShowLogPath = findViewById(R.id.btnShowLogPath);
|
|
btnShowLogPath.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
showLogPathInfo();
|
|
}
|
|
});
|
|
|
|
// 写入测试日志按钮
|
|
Button btnWriteTestLog = findViewById(R.id.btnWriteTestLog);
|
|
btnWriteTestLog.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
writeTestLogs();
|
|
}
|
|
});
|
|
|
|
// 显示自启动状态按钮
|
|
Button btnShowAutoStartStatus = findViewById(R.id.btnShowAutoStartStatus);
|
|
btnShowAutoStartStatus.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
showAutoStartStatus();
|
|
}
|
|
});
|
|
|
|
// 重置统计信息按钮
|
|
Button btnResetAutoStartStats = findViewById(R.id.btnResetAutoStartStats);
|
|
btnResetAutoStartStats.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
resetAutoStartStats();
|
|
}
|
|
});
|
|
|
|
// 显示设备信息按钮
|
|
Button btnShowDeviceInfo = findViewById(R.id.btnShowDeviceInfo);
|
|
btnShowDeviceInfo.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
showDeviceInfo();
|
|
}
|
|
});
|
|
|
|
// 测试网络连接按钮
|
|
Button btnTestNetwork = findViewById(R.id.btnTestNetwork);
|
|
btnTestNetwork.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
testNetworkConnection();
|
|
}
|
|
});
|
|
|
|
// 清空日志按钮
|
|
Button btnClearLogs = findViewById(R.id.btnClearLogs);
|
|
btnClearLogs.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
clearLogs();
|
|
}
|
|
});
|
|
|
|
// 测试Shell命令按钮
|
|
Button btnTestShellCommand = findViewById(R.id.btnTestShellCommand);
|
|
btnTestShellCommand.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
testShellCommand();
|
|
}
|
|
});
|
|
|
|
// 测试闹钟按钮
|
|
Button btnTestAlarm = findViewById(R.id.btnTestAlarm);
|
|
btnTestAlarm.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
testAlarm();
|
|
}
|
|
});
|
|
|
|
// 初始化人脸SDK按钮
|
|
Button btnInitFaceSDK = findViewById(R.id.btnInitFaceSDK);
|
|
btnInitFaceSDK.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
initFaceSDK();
|
|
}
|
|
});
|
|
|
|
// 人脸识别测试按钮
|
|
Button btnFaceRecognitionTest = findViewById(R.id.btnFaceRecognitionTest);
|
|
btnFaceRecognitionTest.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
startFaceRecognitionTest();
|
|
}
|
|
});
|
|
|
|
// 关闭按钮
|
|
Button btnClose = findViewById(R.id.btnClose);
|
|
btnClose.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
finish();
|
|
}
|
|
});
|
|
|
|
// 查验设备配置按钮
|
|
Button btnCheckDeviceConfig = findViewById(R.id.btnCheckDeviceConfig);
|
|
btnCheckDeviceConfig.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
checkDeviceConfig();
|
|
}
|
|
});
|
|
|
|
// 华为扫码测试按钮
|
|
Button btnTestHuaWeiScan = findViewById(R.id.btnTestHuaWeiScan);
|
|
btnTestHuaWeiScan.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
testHuaWeiScan();
|
|
}
|
|
});
|
|
|
|
// 继电器开启测试按钮
|
|
Button btnTestRelayOpen = findViewById(R.id.btnTestRelayOpen);
|
|
btnTestRelayOpen.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
testRelayOpen();
|
|
}
|
|
});
|
|
|
|
// 继电器关闭测试按钮
|
|
Button btnTestRelayClose = findViewById(R.id.btnTestRelayClose);
|
|
btnTestRelayClose.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
testRelayClose();
|
|
}
|
|
});
|
|
|
|
// 继电器自动关闭测试按钮
|
|
Button btnTestRelayAutoClose = findViewById(R.id.btnTestRelayAutoClose);
|
|
btnTestRelayAutoClose.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
testRelayAutoClose();
|
|
}
|
|
});
|
|
|
|
// 485人数测试按钮
|
|
Button btnTest485PeopleNum = findViewById(R.id.btnTest485PeopleNum);
|
|
btnTest485PeopleNum.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
test485PeopleNum();
|
|
}
|
|
});
|
|
|
|
// AB门485测试按钮
|
|
Button btnTestGateAB485 = findViewById(R.id.btnTestGateAB485);
|
|
btnTestGateAB485.setOnClickListener(new View.OnClickListener() {
|
|
@Override
|
|
public void onClick(View v) {
|
|
testGateAB485PeopleNum();
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 测试继电器开启
|
|
*/
|
|
private void testRelayOpen() {
|
|
logMessage("触发继电器开启测试...");
|
|
try {
|
|
boolean success = relayController.openRelay();
|
|
if (success) {
|
|
logMessage("继电器开启成功");
|
|
showToast("继电器开启成功");
|
|
} else {
|
|
logMessage("继电器开启失败");
|
|
showToast("继电器开启失败");
|
|
}
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "继电器开启测试失败", e);
|
|
logMessage("继电器开启测试失败: " + e.getMessage());
|
|
showToast("继电器开启测试失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 测试继电器关闭
|
|
*/
|
|
private void testRelayClose() {
|
|
logMessage("触发继电器关闭测试...");
|
|
try {
|
|
boolean success = relayController.closeRelay();
|
|
if (success) {
|
|
logMessage("继电器关闭成功");
|
|
showToast("继电器关闭成功");
|
|
} else {
|
|
logMessage("继电器关闭失败");
|
|
showToast("继电器关闭失败");
|
|
}
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "继电器关闭测试失败", e);
|
|
logMessage("继电器关闭测试失败: " + e.getMessage());
|
|
showToast("继电器关闭测试失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 测试继电器自动关闭功能
|
|
*/
|
|
private void testRelayAutoClose() {
|
|
logMessage("触发继电器自动关闭测试...");
|
|
try {
|
|
boolean success = relayController.openRelayWithAutoClose();
|
|
if (success) {
|
|
logMessage("继电器已开启,将在3秒后自动关闭");
|
|
showToast("继电器已开启,将在3秒后自动关闭");
|
|
} else {
|
|
logMessage("继电器自动关闭测试失败");
|
|
showToast("继电器自动关闭测试失败");
|
|
}
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "继电器自动关闭测试失败", e);
|
|
logMessage("继电器自动关闭测试失败: " + e.getMessage());
|
|
showToast("继电器自动关闭测试失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 查验设备配置
|
|
*/
|
|
private void checkDeviceConfig() {
|
|
logMessage("开始查验设备配置...");
|
|
try {
|
|
String padSettingJson = com.ouxuan.oxface.utils.VenueSceneUtils.getPadSettingJson(this);
|
|
if (!padSettingJson.isEmpty()) {
|
|
logMessage("设备配置查验成功:\n" + padSettingJson);
|
|
showToast("设备配置查验成功");
|
|
} else {
|
|
logMessage("设备配置查验失败: 未获取到配置数据");
|
|
showToast("设备配置查验失败");
|
|
}
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "查验设备配置时发生异常", e);
|
|
logMessage("查验设备配置时发生异常: " + e.getMessage());
|
|
showToast("查验设备配置时发生异常");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 触发自启动测试
|
|
*/
|
|
private void triggerAutoStartTest() {
|
|
try {
|
|
BootSimulationHelper.simulateBootCompleted(this);
|
|
logMessage("自启动测试已触发");
|
|
showToast("自启动测试已触发");
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "触发自启动测试失败", e);
|
|
logMessage("触发自启动测试失败: " + e.getMessage());
|
|
showToast("触发自启动测试失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 直接启动应用测试
|
|
*/
|
|
private void triggerDirectStartTest() {
|
|
try {
|
|
BootSimulationHelper.directStartApp(this);
|
|
logMessage("直接启动测试已触发");
|
|
showToast("直接启动测试已触发");
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "触发直接启动测试失败", e);
|
|
logMessage("触发直接启动测试失败: " + e.getMessage());
|
|
showToast("触发直接启动测试失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 显示日志路径信息
|
|
*/
|
|
private void showLogPathInfo() {
|
|
String pathInfo = LogManager.getLogPathInfo(this);
|
|
logMessage("日志路径信息:\n" + pathInfo);
|
|
|
|
// 写入一条测试日志
|
|
LogManager.logOperation("调试", "用户查看日志路径信息");
|
|
|
|
// 复制日志目录路径到剪贴板
|
|
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
|
|
if (clipboard != null) {
|
|
LogManager logManager = LogManager.getInstance(this);
|
|
String logDirPath = logManager.getLogDirectory().getAbsolutePath();
|
|
ClipData clip = ClipData.newPlainText("日志目录路径", logDirPath);
|
|
clipboard.setPrimaryClip(clip);
|
|
showToast("日志目录路径已复制: " + logDirPath);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 写入测试日志
|
|
*/
|
|
private void writeTestLogs() {
|
|
// 写入一些测试日志
|
|
LogManager.logInfo("DEBUG", "这是一条测试信息日志 - " + new Date());
|
|
LogManager.logWarning("DEBUG", "这是一条测试警告日志 - " + new Date());
|
|
LogManager.logError("DEBUG", "这是一条测试错误日志 - " + new Date());
|
|
LogManager.logOperation("测试操作", "用户触发测试日志写入");
|
|
LogManager.logPerformance("测试性能", 88);
|
|
logMessage("测试日志已写入,请稍后再查看路径信息");
|
|
showToast("测试日志已写入");
|
|
}
|
|
|
|
/**
|
|
* 显示自启动状态
|
|
*/
|
|
private void showAutoStartStatus() {
|
|
if (autoStartManager != null) {
|
|
String statusInfo = autoStartManager.getAutoStartStatusInfo();
|
|
logMessage("自启动状态信息:\n" + statusInfo);
|
|
showToast("自启动状态信息已显示");
|
|
} else {
|
|
logMessage("自启动管理器未初始化");
|
|
showToast("自启动管理器未初始化");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 重置统计信息
|
|
*/
|
|
private void resetAutoStartStats() {
|
|
if (autoStartManager != null) {
|
|
autoStartManager.resetAutoStartStats();
|
|
logMessage("自启动统计信息已重置");
|
|
showToast("自启动统计信息已重置");
|
|
} else {
|
|
logMessage("自启动管理器未初始化");
|
|
showToast("自启动管理器未初始化");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 显示设备信息
|
|
*/
|
|
private void showDeviceInfo() {
|
|
String deviceInfo = DeviceUtils.getDeviceInfo(this);
|
|
logMessage("设备信息:\n" + deviceInfo);
|
|
showToast("设备信息已显示");
|
|
}
|
|
|
|
/**
|
|
* 测试网络连接
|
|
*/
|
|
private void testNetworkConnection() {
|
|
logMessage("正在测试网络连接...");
|
|
boolean isConnected = UtilCodeHelper.Network.isConnected();
|
|
logMessage("网络连接状态: " + (isConnected ? "已连接" : "未连接"));
|
|
showToast("网络连接测试完成");
|
|
}
|
|
|
|
/**
|
|
* 清空日志
|
|
*/
|
|
private void clearLogs() {
|
|
// 删除日志目录中的所有文件
|
|
LogManager logManager = LogManager.getInstance(this);
|
|
File logDir = logManager.getLogDirectory();
|
|
if (logDir.exists() && logDir.isDirectory()) {
|
|
File[] logFiles = logDir.listFiles();
|
|
if (logFiles != null) {
|
|
for (File file : logFiles) {
|
|
if (file.isFile()) {
|
|
file.delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
logMessage("日志已清空");
|
|
showToast("日志已清空");
|
|
}
|
|
|
|
/**
|
|
* 测试Shell命令
|
|
*/
|
|
private void testShellCommand() {
|
|
logMessage("测试Shell命令执行...");
|
|
try {
|
|
// 执行简单的Shell命令
|
|
String result = UtilCodeHelper.Device.getModel();
|
|
logMessage("设备型号: " + result);
|
|
showToast("设备信息获取完成");
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "设备信息获取失败", e);
|
|
logMessage("设备信息获取失败: " + e.getMessage());
|
|
showToast("设备信息获取失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 测试闹钟
|
|
*/
|
|
private void testAlarm() {
|
|
logMessage("测试闹钟功能...");
|
|
try {
|
|
// 设置一个5秒后的闹钟测试
|
|
Intent intent = new Intent(this, MainActivity.class);
|
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
intent.putExtra("auto_start", true);
|
|
intent.putExtra("boot_reason", "alarm_test");
|
|
intent.putExtra("start_source", "debug_test");
|
|
|
|
// 使用BootSimulationHelper来设置测试闹钟
|
|
BootSimulationHelper.simulateBootCompleted(this);
|
|
logMessage("闹钟测试已触发,将在系统启动模拟后执行");
|
|
showToast("闹钟测试已触发");
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "闹钟测试失败", e);
|
|
logMessage("闹钟测试失败: " + e.getMessage());
|
|
showToast("闹钟测试失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 初始化人脸SDK
|
|
*/
|
|
private void initFaceSDK() {
|
|
logMessage("开始初始化人脸SDK...");
|
|
try {
|
|
FaceSDKManager faceSDKManager = FaceSDKManager.getInstance();
|
|
|
|
// 打印SDK版本信息
|
|
logMessage("人脸SDK管理器实例获取成功");
|
|
logMessage("当前SDK初始化状态: " + FaceSDKManager.initStatus);
|
|
|
|
faceSDKManager.init(this, "GEXH-QSMV-3MDX-Y9XS", new SdkInitListener() {
|
|
@Override
|
|
public void initStart() {
|
|
logMessage("人脸SDK授权初始化开始...");
|
|
logMessage("设备信息: " + android.os.Build.MODEL + " (" + android.os.Build.VERSION.SDK_INT + ")");
|
|
}
|
|
|
|
@Override
|
|
public void initLicenseSuccess() {
|
|
logMessage("人脸SDK授权成功");
|
|
// 获取并显示授权信息
|
|
String licenseData = faceSDKManager.getLicenseData(DebugActivity.this);
|
|
logMessage("人脸SDK授权有效期至: " + licenseData);
|
|
logMessage("授权后SDK状态: " + FaceSDKManager.initStatus);
|
|
showToast("人脸SDK授权成功");
|
|
// 授权成功后继续初始化模型
|
|
initFaceModels();
|
|
}
|
|
|
|
@Override
|
|
public void initLicenseFail(int errorCode, String msg) {
|
|
logMessage("人脸SDK授权失败 - 错误码: " + errorCode + ", 错误信息: " + msg);
|
|
logMessage("失败时SDK状态: " + FaceSDKManager.initStatus);
|
|
showToast("人脸SDK授权失败");
|
|
}
|
|
|
|
@Override
|
|
public void initModelSuccess() {
|
|
// 这个回调在init方法中不会触发,因为init方法不初始化模型
|
|
}
|
|
|
|
@Override
|
|
public void initModelFail(int errorCode, String msg) {
|
|
// 这个回调在init方法中不会触发,因为init方法不初始化模型
|
|
}
|
|
});
|
|
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "初始化人脸SDK失败", e);
|
|
logMessage("初始化人脸SDK失败: " + e.getMessage());
|
|
showToast("初始化人脸SDK失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 初始化人脸模型
|
|
*/
|
|
private void initFaceModels() {
|
|
logMessage("开始初始化人脸模型...");
|
|
logMessage("初始化前模型状态: " + FaceSDKManager.initModelSuccess);
|
|
try {
|
|
FaceSDKManager faceSDKManager = FaceSDKManager.getInstance();
|
|
|
|
// 初始化模型
|
|
faceSDKManager.initModel(this, new SdkInitListener() {
|
|
@Override
|
|
public void initStart() {
|
|
logMessage("人脸模型初始化开始...");
|
|
}
|
|
|
|
@Override
|
|
public void initLicenseSuccess() {
|
|
// 授权已在initFaceSDK中处理
|
|
}
|
|
|
|
@Override
|
|
public void initLicenseFail(int errorCode, String msg) {
|
|
// 授权已在initFaceSDK中处理
|
|
}
|
|
|
|
@Override
|
|
public void initModelSuccess() {
|
|
logMessage("人脸SDK模型初始化成功");
|
|
logMessage("模型初始化完成,当前状态: " + FaceSDKManager.initModelSuccess);
|
|
showToast("人脸SDK模型初始化成功");
|
|
logMessage("人脸SDK初始化完成,可以开始使用人脸识别功能");
|
|
logMessage("SDK最终状态 - 授权: " + FaceSDKManager.initStatus + ", 模型: " + FaceSDKManager.initModelSuccess);
|
|
}
|
|
|
|
@Override
|
|
public void initModelFail(int errorCode, String msg) {
|
|
logMessage("人脸SDK模型初始化失败 - 错误码: " + errorCode + ", 错误信息: " + msg);
|
|
logMessage("模型初始化失败,当前状态: " + FaceSDKManager.initModelSuccess);
|
|
showToast("人脸SDK模型初始化失败");
|
|
}
|
|
});
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "初始化人脸模型失败", e);
|
|
logMessage("初始化人脸模型失败: " + e.getMessage());
|
|
showToast("初始化人脸模型失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 启动人脸识别测试
|
|
*/
|
|
private void startFaceRecognitionTest() {
|
|
logMessage("启动人脸识别测试...");
|
|
try {
|
|
Intent intent = new Intent(this, OXFaceOnlineActivity.class);
|
|
startActivity(intent);
|
|
logMessage("已启动人脸识别测试界面");
|
|
showToast("已启动人脸识别测试界面");
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "启动人脸识别测试失败", e);
|
|
logMessage("启动人脸识别测试失败: " + e.getMessage());
|
|
showToast("启动人脸识别测试失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 测试华为扫码功能
|
|
*/
|
|
private void testHuaWeiScan() {
|
|
logMessage("触发华为扫码测试...");
|
|
HuaWeiScanManager.doScan(this, new HuaWeiScanManager.ScanResultListener() {
|
|
@Override
|
|
public void onScanSuccess(String scanResult) {
|
|
logMessage("华为扫码成功: " + scanResult);
|
|
showToast("扫码成功: " + scanResult);
|
|
}
|
|
|
|
@Override
|
|
public void onScanFailed(int errorCode, String errorMsg) {
|
|
logMessage("华为扫码失败 - 错误码: " + errorCode + ", 错误信息: " + errorMsg);
|
|
showToast("扫码失败: " + errorMsg);
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 在日志输出区域添加消息
|
|
* @param message 要添加的消息
|
|
*/
|
|
private void logMessage(String message) {
|
|
runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
String currentTime = android.text.format.DateFormat.format("HH:mm:ss", new Date()).toString();
|
|
String logEntry = "[" + currentTime + "] " + message + "\n";
|
|
tvLogOutput.append(logEntry);
|
|
|
|
// 滚动到底部
|
|
logScrollView.post(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
logScrollView.fullScroll(View.FOCUS_DOWN);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 显示Toast消息
|
|
* @param message 要显示的消息
|
|
*/
|
|
private void showToast(String message) {
|
|
runOnUiThread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
Toast.makeText(DebugActivity.this, message, Toast.LENGTH_SHORT).show();
|
|
}
|
|
});
|
|
}
|
|
|
|
@Override
|
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
|
|
// 处理华为扫码结果
|
|
boolean handled = HuaWeiScanManager.handleScanResult(requestCode, resultCode, data, new HuaWeiScanManager.ScanResultListener() {
|
|
@Override
|
|
public void onScanSuccess(String scanResult) {
|
|
logMessage("华为扫码成功: " + scanResult);
|
|
showToast("扫码成功: " + scanResult);
|
|
}
|
|
|
|
@Override
|
|
public void onScanFailed(int errorCode, String errorMsg) {
|
|
logMessage("华为扫码失败 - 错误码: " + errorCode + ", 错误信息: " + errorMsg);
|
|
showToast("扫码失败: " + errorMsg);
|
|
}
|
|
});
|
|
|
|
if (!handled) {
|
|
// 如果没有处理扫码结果,可以在这里处理其他ActivityResult
|
|
logMessage("未处理扫码结果,继续处理其他ActivityResult");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 测试485人数获取功能
|
|
*/
|
|
private void test485PeopleNum() {
|
|
logMessage("开始485人数测试...");
|
|
|
|
if (ox485 == null) {
|
|
logMessage("Ox485未初始化");
|
|
showToast("Ox485未初始化");
|
|
return;
|
|
}
|
|
|
|
try {
|
|
// 设置485模式开关为启用状态
|
|
ox485.setGateCamera485OxOn(true);
|
|
logMessage("已启用485模式");
|
|
|
|
// 调用sendHex485ForPeopleNum方法
|
|
ox485.sendHex485ForPeopleNum(new Ox485.PeopleNumCallback() {
|
|
@Override
|
|
public void onSuccess(int peopleNum) {
|
|
logMessage("485人数获取成功: " + peopleNum + " 人");
|
|
Log.i(TAG, "485人数获取成功: " + peopleNum + " 人");
|
|
showToast("485人数获取成功: " + peopleNum + " 人");
|
|
}
|
|
|
|
@Override
|
|
public void onError(String errorMessage) {
|
|
logMessage("485人数获取失败: " + errorMessage);
|
|
Log.e(TAG, "485人数获取失败: " + errorMessage);
|
|
showToast("485人数获取失败: " + errorMessage);
|
|
}
|
|
});
|
|
|
|
logMessage("已发送485人数查询请求,等待响应...");
|
|
showToast("正在查询485人数...");
|
|
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "485人数测试失败", e);
|
|
logMessage("485人数测试失败: " + e.getMessage());
|
|
showToast("485人数测试失败");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 测试GateABController的485人数获取功能
|
|
*/
|
|
private void testGateAB485PeopleNum() {
|
|
logMessage("开始测试GateAB控制器485人数获取...");
|
|
|
|
if (gateABController == null) {
|
|
logMessage("GateABController未初始化");
|
|
showToast("GateABController未初始化");
|
|
return;
|
|
}
|
|
|
|
try {
|
|
// 获取当前配置信息
|
|
GateABController.GateABConfig config = gateABController.getCurrentConfig();
|
|
logMessage("AB门当前配置 - 485模式: " + config.gateCamera485OXOn);
|
|
|
|
// 检查485模式状态
|
|
boolean is485Enabled = gateABController.is485ModeEnabled();
|
|
logMessage("485模式状态: " + (is485Enabled ? "已启用" : "未启用"));
|
|
|
|
// 获取485状态信息
|
|
String status485 = gateABController.get485Status();
|
|
logMessage("485状态信息: " + status485);
|
|
|
|
// 调用GateABController的get485PeopleNum方法
|
|
gateABController.get485PeopleNum(new GateABController.PeopleNumCallback() {
|
|
@Override
|
|
public void onSuccess(int peopleNum) {
|
|
logMessage("GateAB 485人数获取成功: " + peopleNum + " 人");
|
|
Log.i(TAG, "GateAB 485人数获取成功: " + peopleNum + " 人");
|
|
showToast("GateAB 485人数获取成功: " + peopleNum + " 人");
|
|
}
|
|
|
|
@Override
|
|
public void onError(String errorMessage) {
|
|
logMessage("GateAB 485人数获取失败: " + errorMessage);
|
|
Log.e(TAG, "GateAB 485人数获取失败: " + errorMessage);
|
|
showToast("GateAB 485人数获取失败: " + errorMessage);
|
|
}
|
|
});
|
|
|
|
logMessage("已通过GateABController发送485人数查询请求,等待响应...");
|
|
showToast("通过GateAB查询485人数...");
|
|
|
|
} catch (Exception e) {
|
|
Log.e(TAG, "GateAB 485人数测试失败", e);
|
|
logMessage("GateAB 485人数测试失败: " + e.getMessage());
|
|
showToast("GateAB 485人数测试失败");
|
|
}
|
|
}
|
|
}
|