|
@ -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,37 +1047,74 @@ 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(); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 显示状态提示 |
|
|
|
|
|
if (layoutCompareStatus != null) { |
|
|
|
|
|
layoutCompareStatus.setVisibility(View.VISIBLE); |
|
|
|
|
|
textCompareStatus.setTextColor(Color.parseColor("#009874")); |
|
|
|
|
|
textCompareStatus.setText("请使用扫码器开门"); |
|
|
|
|
|
|
|
|
@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); |
|
|
|
|
|
|
|
|
// 3秒后隐藏状态提示 |
|
|
|
|
|
new Handler().postDelayed(new Runnable() { |
|
|
|
|
|
@Override |
|
|
|
|
|
public void run() { |
|
|
|
|
|
if (layoutCompareStatus != null) { |
|
|
|
|
|
layoutCompareStatus.setVisibility(View.GONE); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}, 3000); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
}, 3000); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -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) { |
|
|