Browse Source

fix 1 no test

dev
MTing 3 days ago
parent
commit
3a0e3eb949
  1. 287
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java
  2. 12
      app/src/main/java/com/ouxuan/oxface/network/NetworkStatusIndicator.java
  3. 17
      app/src/main/java/com/ouxuan/oxface/network/OrderVerificationManager.java

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

@ -628,6 +628,8 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED) { == PackageManager.PERMISSION_GRANTED) {
startTestOpenDebugRegisterFunction(); startTestOpenDebugRegisterFunction();
}else{
LogManager.logInfo(TAG, "OXFaceOnlineActivity onResume has not CAMERA permission");
} }
LogManager.logInfo(TAG, "OXFaceOnlineActivity onResume"); LogManager.logInfo(TAG, "OXFaceOnlineActivity onResume");
} }
@ -918,30 +920,30 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
/** /**
* 处理扫码按钮点击事件 * 处理扫码按钮点击事件
*/ */
private void handleScanQRClick() {
LogManager.logInfo(TAG, "用户点击扫码按钮");
Toast.makeText(this, "扫码功能已触发", Toast.LENGTH_SHORT).show();
// 这里可以添加实际的扫码逻辑
// 例如启动扫码Activity或显示扫码界面
// 显示扫码状态
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.VISIBLE);
textCompareStatus.setTextColor(Color.parseColor("#009874"));
textCompareStatus.setText("请将二维码对准扫描区域");
// 3秒后隐藏状态提示
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.GONE);
}
}
}, 3000);
}
}
// private void handleScanQRClick() {
// LogManager.logInfo(TAG, "用户点击扫码按钮");
// Toast.makeText(this, "扫码功能已触发", Toast.LENGTH_SHORT).show();
// // 这里可以添加实际的扫码逻辑
// // 例如启动扫码Activity或显示扫码界面
// // 显示扫码状态
// if (layoutCompareStatus != null) {
// layoutCompareStatus.setVisibility(View.VISIBLE);
// textCompareStatus.setTextColor(Color.parseColor("#009874"));
// textCompareStatus.setText("请将二维码对准扫描区域");
// // 3秒后隐藏状态提示
// new Handler().postDelayed(new Runnable() {
// @Override
// public void run() {
// if (layoutCompareStatus != null) {
// layoutCompareStatus.setVisibility(View.GONE);
// }
// }
// }, 3000);
// }
// }
/** /**
* 处理设置按钮点击事件 * 处理设置按钮点击事件
@ -1045,26 +1047,59 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
/** /**
* 处理扫码器开门点击事件 * 处理扫码器开门点击事件
*/ */
private void handleScannerDoorClick() {
private void handleScannerDoorClick2() {
LogManager.logInfo(TAG, "用户点击扫码器开门"); LogManager.logInfo(TAG, "用户点击扫码器开门");
Toast.makeText(this, "扫码器开门功能已触发", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, OrderVerificationResultActivity.class);
intent.putExtra("verification_type", 1); // 1-验证码验证, 4-扫码器验证
intent.putExtra("order_no", "订单号");
intent.putExtra("verification_code", "验证码");
intent.putExtra("order_type", "订单类型");
intent.putExtra("card_no", "卡号");
intent.putExtra("status", "核销状态");
startActivity(intent);
// 这里可以添加实际的扫码器开门逻辑
// 例如启动扫码器Activity或显示扫码器界面
// 检查是否有正在进行的人脸识别请求
if (orderVerificationManager != null && orderVerificationManager.isRequestInProgress()) {
LogManager.logInfo(TAG, "有正在进行的订单验证请求,取消扫码操作");
Toast.makeText(this, "正在处理其他请求,请稍后再试", Toast.LENGTH_SHORT).show();
return;
}
// 暂停摄像头预览
pauseCameraWithTimeout();
LogManager.logInfo(TAG, "已暂停摄像头预览");
// 调用华为统一扫码功能
com.ouxuan.oxface.device.HuaWeiScanManager.doScan(this, new com.ouxuan.oxface.device.HuaWeiScanManager.ScanResultListener() {
@Override
public void onScanSuccess(String scanResult) {
LogManager.logInfo(TAG, "华为扫码器扫码成功,结果: " + scanResult);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(OXFaceOnlineActivity.this, "扫码成功: " + scanResult, Toast.LENGTH_SHORT).show();
// 设置模式为4扫码器验证
modeType = OrderVerificationManager.TYPE_SCANNER_VERIFICATION;
verifyCode = scanResult;
// 执行扫码器核销
getCheckOrder();
}
});
}
@Override
public void onScanFailed(int errorCode, String errorMsg) {
LogManager.logError(TAG, "华为扫码器扫码失败,错误码: " + errorCode + ", 错误信息: " + errorMsg);
// 恢复摄像头预览
resumeCamera();
LogManager.logInfo(TAG, "扫码失败,已恢复摄像头预览");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(OXFaceOnlineActivity.this, "扫码失败: " + errorMsg, Toast.LENGTH_SHORT).show();
// 显示状态提示 // 显示状态提示
if (layoutCompareStatus != null) { if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.VISIBLE); layoutCompareStatus.setVisibility(View.VISIBLE);
textCompareStatus.setTextColor(Color.parseColor("#009874"));
textCompareStatus.setText("请使用扫码器开门");
textCompareStatus.setTextColor(Color.parseColor("#FF0000"));
textCompareStatus.setText("扫码失败: " + errorMsg);
// 3秒后隐藏状态提示 // 3秒后隐藏状态提示
new Handler().postDelayed(new Runnable() { new Handler().postDelayed(new Runnable() {
@ -1077,6 +1112,10 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}, 3000); }, 3000);
} }
} }
});
}
});
}
@Override @Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
@ -1644,6 +1683,51 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
// 处理华为扫码结果
boolean handled = com.ouxuan.oxface.device.HuaWeiScanManager.handleScanResult(requestCode, resultCode, data, new com.ouxuan.oxface.device.HuaWeiScanManager.ScanResultListener() {
@Override
public void onScanSuccess(String scanResult) {
LogManager.logInfo(TAG, "华为扫码成功,结果: " + scanResult);
Log.d(TAG, "扫码结果: " + scanResult);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(OXFaceOnlineActivity.this, "扫码成功: " + scanResult, Toast.LENGTH_SHORT).show();
// 调用checkOrder函数进行扫码核销
performScanVerification();
}
});
}
@Override
public void onScanFailed(int errorCode, String errorMsg) {
LogManager.logError(TAG, "华为扫码失败,错误码: " + errorCode + ", 错误信息: " + errorMsg);
Log.e(TAG, "扫码失败,错误码: " + errorCode + ", 错误信息: " + errorMsg);
// 恢复摄像头预览
resumeCamera();
LogManager.logInfo(TAG, "扫码失败,已恢复摄像头预览");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(OXFaceOnlineActivity.this, "扫码失败: " + errorMsg, Toast.LENGTH_SHORT).show();
}
});
}
});
if (handled) {
// 如果已经处理了扫码结果也需要恢复摄像头预览
if (requestCode == com.ouxuan.oxface.device.HuaWeiScanManager.REQUEST_CODE_SCAN) {
resumeCamera();
LogManager.logInfo(TAG, "华为扫码完成,已恢复摄像头预览");
}
return; // 如果已经处理了扫码结果则直接返回
}
if (requestCode == 1001) { // 验证码验证获取输入结果 if (requestCode == 1001) { // 验证码验证获取输入结果
// 恢复摄像头预览 // 恢复摄像头预览
resumeCamera(); resumeCamera();
@ -1795,6 +1879,131 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
} }
/** /**
* 处理扫码按钮点击事件
*/
private void handleScanQRClick() {
LogManager.logInfo(TAG, "用户点击扫码按钮");
// 调用华为统一扫码功能
com.ouxuan.oxface.device.HuaWeiScanManager.doScan(this, new com.ouxuan.oxface.device.HuaWeiScanManager.ScanResultListener() {
@Override
public void onScanSuccess(String scanResult) {
// 输出扫码结果到log
LogManager.logInfo(TAG, "华为扫码成功,结果: " + scanResult);
Log.d(TAG, "扫码结果: " + scanResult);
// 显示扫码结果Toast
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(OXFaceOnlineActivity.this, "扫码成功: " + scanResult, Toast.LENGTH_SHORT).show();
// 调用checkOrder函数进行扫码核销
performScanVerification();
}
});
}
@Override
public void onScanFailed(int errorCode, String errorMsg) {
LogManager.logError(TAG, "华为扫码失败,错误码: " + errorCode + ", 错误信息: " + errorMsg);
Log.e(TAG, "扫码失败,错误码: " + errorCode + ", 错误信息: " + errorMsg);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(OXFaceOnlineActivity.this, "扫码失败: " + errorMsg, Toast.LENGTH_SHORT).show();
}
});
}
});
}
/**
* 处理扫码器开门点击事件
*/
private void handleScannerDoorClick() {
LogManager.logInfo(TAG, "用户点击扫码器开门");
// 检查是否有正在进行的人脸识别请求
if (orderVerificationManager != null && orderVerificationManager.isRequestInProgress()) {
LogManager.logInfo(TAG, "有正在进行的订单验证请求,取消扫码操作");
Toast.makeText(this, "正在处理其他请求,请稍后再试", Toast.LENGTH_SHORT).show();
return;
}
// 暂停摄像头预览
pauseCameraWithTimeout();
LogManager.logInfo(TAG, "已暂停摄像头预览");
// 调用华为统一扫码功能
com.ouxuan.oxface.device.HuaWeiScanManager.doScan(this, new com.ouxuan.oxface.device.HuaWeiScanManager.ScanResultListener() {
@Override
public void onScanSuccess(String scanResult) {
LogManager.logInfo(TAG, "华为扫码器扫码成功,结果: " + scanResult);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(OXFaceOnlineActivity.this, "扫码成功: " + scanResult, Toast.LENGTH_SHORT).show();
// 设置模式为4扫码器验证
modeType = OrderVerificationManager.TYPE_SCANNER_VERIFICATION;
verifyCode = scanResult;
// 执行扫码器核销注意getCheckOrder会再次暂停摄像头所以我们不需要在这里恢复
getCheckOrder();
}
});
}
@Override
public void onScanFailed(int errorCode, String errorMsg) {
LogManager.logError(TAG, "华为扫码器扫码失败,错误码: " + errorCode + ", 错误信息: " + errorMsg);
// 恢复摄像头预览
resumeCamera();
LogManager.logInfo(TAG, "扫码失败,已恢复摄像头预览");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(OXFaceOnlineActivity.this, "扫码失败: " + errorMsg, Toast.LENGTH_SHORT).show();
// 显示状态提示
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.VISIBLE);
textCompareStatus.setTextColor(Color.parseColor("#FF0000"));
textCompareStatus.setText("扫码失败: " + errorMsg);
// 3秒后隐藏状态提示
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.GONE);
}
}
}, 3000);
}
}
});
}
});
}
/**
* 执行扫码核销
*/
private void performScanVerification() {
// 设置模式为3扫码验证
modeType = OrderVerificationManager.TYPE_SCAN_VERIFICATION;
// 调用订单查询方法进行扫码验证
getCheckOrder();
}
/**
* 显示加载状态 * 显示加载状态
*/ */
private void showLoadingStatus(String message) { private void showLoadingStatus(String message) {

12
app/src/main/java/com/ouxuan/oxface/network/NetworkStatusIndicator.java

@ -176,6 +176,15 @@ public class NetworkStatusIndicator {
} }
/** /**
* 确保执行器可用
*/
private void ensureExecutorAvailable() {
if (scheduledExecutor == null || scheduledExecutor.isShutdown()) {
initExecutor();
}
}
/**
* 开始网络状态监控 * 开始网络状态监控
*/ */
public void startMonitoring() { public void startMonitoring() {
@ -184,6 +193,9 @@ public class NetworkStatusIndicator {
return; return;
} }
// 确保执行器可用
ensureExecutorAvailable();
isMonitoring = true; isMonitoring = true;
// 立即检查一次 // 立即检查一次

17
app/src/main/java/com/ouxuan/oxface/network/OrderVerificationManager.java

@ -27,6 +27,9 @@ public class OrderVerificationManager {
private DeviceSelectDataManager deviceDataManager; private DeviceSelectDataManager deviceDataManager;
private OrderVerificationListener listener; private OrderVerificationListener listener;
// 添加标志来跟踪是否有正在进行的请求
private boolean isRequestInProgress = false;
/** /**
* 订单验证结果监听器 * 订单验证结果监听器
*/ */
@ -92,6 +95,14 @@ public class OrderVerificationManager {
} }
/** /**
* 检查是否有正在进行的请求
* @return 是否有正在进行的请求
*/
public boolean isRequestInProgress() {
return isRequestInProgress;
}
/**
* 执行订单验证 * 执行订单验证
* @param verificationType 验证类型 * @param verificationType 验证类型
* @param verifyCode 验证码或人脸base64数据 * @param verifyCode 验证码或人脸base64数据
@ -100,12 +111,16 @@ public class OrderVerificationManager {
public void performVerification(int verificationType, String verifyCode, String decryptText) { public void performVerification(int verificationType, String verifyCode, String decryptText) {
LogManager.logInfo(TAG, "开始执行订单验证,类型: " + verificationType); LogManager.logInfo(TAG, "开始执行订单验证,类型: " + verificationType);
// 设置请求进行中的标志
isRequestInProgress = true;
// 获取认证信息 // 获取认证信息
String token = getAuthToken(); String token = getAuthToken();
int hardwareId = getHardwareId(); int hardwareId = getHardwareId();
// 参数校验 // 参数校验
if (!validateParams(token, hardwareId)) { if (!validateParams(token, hardwareId)) {
isRequestInProgress = false;
return; return;
} }
@ -128,6 +143,7 @@ public class OrderVerificationManager {
if (listener != null) { if (listener != null) {
listener.showToast("不支持的验证类型"); listener.showToast("不支持的验证类型");
} }
isRequestInProgress = false;
break; break;
} }
} }
@ -251,6 +267,7 @@ public class OrderVerificationManager {
@Override @Override
public void onComplete() { public void onComplete() {
isRequestInProgress = false;
if (listener != null) { if (listener != null) {
listener.hideLoadingStatus(); listener.hideLoadingStatus();
} }

Loading…
Cancel
Save