Browse Source

fix and update

main
MTing 1 week ago
parent
commit
1d309e8193
  1. 233
      app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java
  2. 1
      app/src/main/java/com/ouxuan/oxface/orderOX/VerificationCodeActivity.java

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

@ -162,36 +162,36 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_oxface_online);
android.util.Log.d(TAG, "onCreate方法开始执行");
LogManager.logInfo(TAG, "OXFaceOnlineActivity onCreate开始");
mContext = this;
initView();
// 初始化人脸检测状态
lastFaceDetectedTime = System.currentTimeMillis();
isFaceDetected = false;
consecutiveNoFaceCount = 0;
// 检查并请求相机权限
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.CAMERA},
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.CAMERA},
CAMERA_PERMISSION_REQUEST_CODE);
} else {
LogManager.logInfo(TAG, "相机权限已授予");
}
// 启动内存优化周期性任务
startMemoryOptimizationTask();
// 更新小程序码
android.util.Log.d(TAG, "准备调用updateMiniQrcode方法");
updateMiniQrcode();
android.util.Log.d(TAG, "updateMiniQrcode方法调用完成");
LogManager.logInfo(TAG, "OXFaceOnlineActivity onCreate");
android.util.Log.d(TAG, "onCreate方法执行结束");
}
@ -235,29 +235,29 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
handleStoreNameClick();
}
});
// 获取并显示店铺名称
loadAndDisplayStoreName();
}
// 返回按钮隐藏但仍保留引用
ImageView mButReturn = findViewById(R.id.btn_back);
if (mButReturn != null) {
mButReturn.setOnClickListener(this);
}
// 初始化二维码区域控件
imgMiniProgramCode = findViewById(R.id.img_mini_program_code);
imgScanDoorQRCode = findViewById(R.id.img_scan_door_qrcode);
btnVerificationCode = findViewById(R.id.btn_verification_code);
btnScannerDoor = findViewById(R.id.btn_scanner_door);
// 添加调试日志检查控件是否正确初始化
android.util.Log.d(TAG, "imgMiniProgramCode初始化: " + (imgMiniProgramCode != null));
android.util.Log.d(TAG, "imgScanDoorQRCode初始化: " + (imgScanDoorQRCode != null));
android.util.Log.d(TAG, "btnVerificationCode初始化: " + (btnVerificationCode != null));
android.util.Log.d(TAG, "btnScannerDoor初始化: " + (btnScannerDoor != null));
// 设置二维码区域控件的点击事件
if (imgMiniProgramCode != null) {
imgMiniProgramCode.setOnClickListener(this);
@ -271,19 +271,19 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
if (btnScannerDoor != null) {
btnScannerDoor.setOnClickListener(this);
}
// 底部覆盖层包含按钮和二维码
RelativeLayout bottomOverlay = findViewById(R.id.bottom_overlay);
if (bottomOverlay != null) {
// 确保底部覆盖层显示
bottomOverlay.setVisibility(View.VISIBLE);
}
// 初始化底部按钮
btnOpenDoor = findViewById(R.id.button_open_door);
// btnScanQR = findViewById(R.id.button_scan_qr);
// btnSettings = findViewById(R.id.button_settings);
if (btnOpenDoor != null) {
btnOpenDoor.setOnClickListener(this);
}
@ -293,22 +293,22 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
// if (btnSettings != null) {
// btnSettings.setOnClickListener(this);
// }
// 隐藏原有的UI元素
hideOriginalUI();
// 初始化状态信息显示
layoutCompareStatus = findViewById(R.id.layout_compare_status);
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.GONE);
}
textCompareStatus = findViewById(R.id.text_compare_status);
// 初始化测试弹窗
initTestPopWindow();
android.util.Log.d(TAG, "初始化界面视图结束");
}
/**
* 隐藏原有的UI元素保持界面简洁
*/
@ -322,12 +322,12 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
if (progressBarView != null) {
progressBarView.setVisibility(View.GONE);
}
// 隐藏提示区域
if (preViewRelativeLayout != null) {
preViewRelativeLayout.setVisibility(View.GONE);
}
// 隐藏其他不需要的UI元素
if (financeQualityTestFailed != null) {
financeQualityTestFailed.setVisibility(View.GONE);
@ -345,7 +345,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
spot.setVisibility(View.GONE);
}
}
/**
* 初始化测试弹窗
*/
@ -386,7 +386,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
protected void onResume() {
super.onResume();
// 只有在拥有相机权限时才启动预览
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED) {
startTestOpenDebugRegisterFunction();
}
@ -402,7 +402,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
} else {
CameraPreviewManager.getInstance().setCameraFacing(CameraPreviewManager.CAMERA_FACING_FRONT);
}
CameraPreviewManager.getInstance().startPreview(mContext, mAutoCameraPreviewView,
PREFER_WIDTH, PERFER_HEIGH, new CameraDataCallback() {
@Override
@ -413,15 +413,15 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
// 增加帧计数器和时间间隔控制
frameCounter++;
long currentTime = System.currentTimeMillis();
// 智能调节处理频率
adjustProcessFrequency(currentTime);
// 只有当满足处理条件时才进行人脸检测
if (frameCounter % PROCESS_FRAME_INTERVAL == 0 &&
if (frameCounter % PROCESS_FRAME_INTERVAL == 0 &&
(currentTime - lastProcessTime) > MIN_PROCESS_INTERVAL) {
lastProcessTime = currentTime;
// 检查应用是否处于前台
if (!isApplicationInForeground()) {
// 如果应用在后台减少处理频率每隔10秒处理一次
@ -430,7 +430,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}
lastBackgroundProcessTime = currentTime;
}
FaceSDKManager.getInstance().onDetectCheck(data, null, null,
height, width, 1, new FaceDetectCallBack() {
@Override
@ -438,7 +438,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
try {
// 更新人脸检测状态
updateFaceDetectionStatus(livenessModel);
// 开发模式结果输出
checkOpenDebugResult(livenessModel);
} catch (Exception e) {
@ -477,6 +477,8 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
LogManager.logError(TAG, "清空画布时发生异常", e);
}
}
}else{
android.util.Log.d("OXFace", "isNeedCamera: false");
}
} catch (Exception e) {
LogManager.logError(TAG, "摄像头数据处理异常", e);
@ -497,7 +499,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}, 5000); // 5秒后重试
}
}
/**
* 智能调节处理频率
* @param currentTime 当前时间
@ -505,17 +507,17 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
private void adjustProcessFrequency(long currentTime) {
// 如果检测到人脸加速处理
if (isFaceDetected) {
if (PROCESS_FRAME_INTERVAL != FAST_PROCESS_FRAME_INTERVAL ||
if (PROCESS_FRAME_INTERVAL != FAST_PROCESS_FRAME_INTERVAL ||
MIN_PROCESS_INTERVAL != FAST_MIN_PROCESS_INTERVAL) {
PROCESS_FRAME_INTERVAL = FAST_PROCESS_FRAME_INTERVAL;
MIN_PROCESS_INTERVAL = FAST_MIN_PROCESS_INTERVAL;
LogManager.logInfo(TAG, "检测到人脸,加速处理频率:每" + PROCESS_FRAME_INTERVAL + "帧,最小间隔" + MIN_PROCESS_INTERVAL + "ms");
}
}
}
// 如果长时间未检测到人脸降低处理频率以节省资源
else if (currentTime - lastFaceDetectedTime > FACE_DETECTION_TIMEOUT) {
// 检查是否已经处于慢速处理模式
if (PROCESS_FRAME_INTERVAL != SLOW_PROCESS_FRAME_INTERVAL ||
if (PROCESS_FRAME_INTERVAL != SLOW_PROCESS_FRAME_INTERVAL ||
MIN_PROCESS_INTERVAL != SLOW_MIN_PROCESS_INTERVAL) {
PROCESS_FRAME_INTERVAL = SLOW_PROCESS_FRAME_INTERVAL;
MIN_PROCESS_INTERVAL = SLOW_MIN_PROCESS_INTERVAL;
@ -523,30 +525,30 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}
}
}
/**
* 更新人脸检测状态
* @param livenessModel 活体检测模型
*/
private void updateFaceDetectionStatus(LivenessModel livenessModel) {
long currentTime = System.currentTimeMillis();
// 检查是否检测到人脸
boolean faceDetected = (livenessModel != null &&
livenessModel.getTrackFaceInfo() != null &&
boolean faceDetected = (livenessModel != null &&
livenessModel.getTrackFaceInfo() != null &&
livenessModel.getTrackFaceInfo().length > 0);
if (faceDetected) {
// 检测到人脸
isFaceDetected = true;
lastFaceDetectedTime = currentTime;
consecutiveNoFaceCount = 0; // 重置连续未检测到人脸计数器
LogManager.logDebug(TAG, "检测到人脸");
} else {
// 未检测到人脸
consecutiveNoFaceCount++;
// 如果连续多次未检测到人脸标记为未检测到人脸状态
if (consecutiveNoFaceCount >= CONSECUTIVE_NO_FACE_THRESHOLD) {
isFaceDetected = false;
@ -566,29 +568,29 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
if (canvas == null) {
return;
}
// 始终清空canvas
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
// 如果没有模型数据直接返回清空的画布
if (model == null) {
mDrawDetectFaceView.unlockCanvasAndPost(canvas);
return;
}
// 获取人脸信息
FaceInfo[] faceInfos = model.getTrackFaceInfo();
// 如果没有检测到人脸直接返回清空的画布
if (faceInfos == null || faceInfos.length == 0) {
mDrawDetectFaceView.unlockCanvasAndPost(canvas);
return;
}
// 只在检测到人脸时绘制人脸框
for (int i = 0; i < faceInfos.length; i++) {
FaceInfo faceInfo = faceInfos[i];
// 如果人脸置信度太低不绘制
if (faceInfo.score < 0.6) {
continue;
@ -604,7 +606,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
FaceOnDrawTexturViewUtil.drawRect(canvas,
rectF, paint, 5f, 50f, 25f);
}
// 提交canvas
mDrawDetectFaceView.unlockCanvasAndPost(canvas);
}
@ -619,7 +621,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
} else if (id == R.id.button_open_door) {
// 开门按钮点击事件
handleOpenDoorClick();
}
}
// else if (id == R.id.button_scan_qr) {
// // 扫码按钮点击事件
// handleScanQRClick();
@ -648,17 +650,17 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
private void handleOpenDoorClick() {
LogManager.logInfo(TAG, "用户点击开门按钮");
Toast.makeText(this, "开门功能已触发", Toast.LENGTH_SHORT).show();
// 这里可以添加实际的开门逻辑
// 例如发送网络请求到服务器执行开门操作
// 或者通过蓝牙/WiFi连接门锁设备
// 显示开门状态
if (layoutCompareStatus != null) {
layoutCompareStatus.setVisibility(View.VISIBLE);
textCompareStatus.setTextColor(Color.parseColor("#009874"));
textCompareStatus.setText("正在开门...");
// 3秒后隐藏状态提示
new Handler().postDelayed(new Runnable() {
@Override
@ -677,16 +679,16 @@ 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
@ -705,16 +707,16 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
private void handleSettingsClick() {
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
@ -726,7 +728,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}, 3000);
}
}
/**
* 处理新用户扫码上传人脸点击事件
*/
@ -788,7 +790,11 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
*/
private void handleVerificationCodeClick() {
LogManager.logInfo(TAG, "用户点击验证码开门");
// 暂停摄像头预览
isNeedCamera = false;
LogManager.logInfo(TAG, "暂停摄像头预览 - isNeedCamera设置为false");
// 启动验证码Activity
Intent intent = new Intent(this, VerificationCodeActivity.class);
startActivityForResult(intent, 1001);
@ -840,12 +846,12 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
@Override
protected void onDestroy() {
super.onDestroy();
// 停止摄像头预览
if (CameraPreviewManager.getInstance() != null) {
CameraPreviewManager.getInstance().stopPreview();
}
// 释放当前的LivenessModel资源
if (currentLivenessModel != null) {
BDFaceImageInstance image = currentLivenessModel.getBdFaceImageInstance();
@ -855,7 +861,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
// 清空引用
currentLivenessModel = null;
}
// 释放绘图资源
if (rectF != null) {
rectF = null;
@ -866,34 +872,34 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
if (paintBg != null) {
paintBg = null;
}
// 清除其他相关资源
System.gc();
LogManager.logInfo(TAG, "OXFaceOnlineActivity onDestroy - 资源已释放");
}
@Override
protected void onStop() {
super.onStop();
LogManager.logInfo(TAG, "OXFaceOnlineActivity onStop - 应用进入后台");
// 应用进入后台时进一步降低处理频率以节省资源
PROCESS_FRAME_INTERVAL = 30; // 后台时每30帧处理一次
MIN_PROCESS_INTERVAL = 3000; // 后台时最小间隔3秒
LogManager.logInfo(TAG, "后台模式处理频率:每" + PROCESS_FRAME_INTERVAL + "帧,最小间隔" + MIN_PROCESS_INTERVAL + "ms");
}
@Override
protected void onStart() {
super.onStart();
LogManager.logInfo(TAG, "OXFaceOnlineActivity onStart - 应用回到前台");
// 应用回到前台时恢复正常的处理频率
PROCESS_FRAME_INTERVAL = FAST_PROCESS_FRAME_INTERVAL; // 前台时使用快速处理频率
MIN_PROCESS_INTERVAL = FAST_MIN_PROCESS_INTERVAL; // 前台时使用快速处理间隔
LogManager.logInfo(TAG, "前台模式处理频率:每" + PROCESS_FRAME_INTERVAL + "帧,最小间隔" + MIN_PROCESS_INTERVAL + "ms");
}
@ -988,19 +994,19 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
if (livenessModel == null) {
return;
}
// 减少base64转换频率只有在特定条件下才进行转换
// 例如每3秒检查一次是否需要发送人脸图像
long currentTime = System.currentTimeMillis();
if (currentTime - searshTime > 3000) {
searshTime = currentTime;
needSendFaceImage = true;
String base64img = getFaceImageBase64(currentLivenessModel);
if (base64img != null) {
// 这里可以处理base64数据如上传到服务器等
Log.i(TAG, "checkResultOnline: 获取到人脸base64数据");
// 处理完成后重置标志
needSendFaceImage = false;
} else {
@ -1023,7 +1029,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
BDFaceImageInstance image = livenessModel.getBdFaceImageInstance();
if (image != null) {
Bitmap bitmap = BitmapUtils.getInstaceBmp(image);
// 仅在确实需要使用base64数据时才进行转换
if (needSendFaceImage) {
String bitmap_str = BitmapUtils.bitmapToBase64(bitmap);
@ -1041,7 +1047,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}
return null;
}
/**
* 检查应用是否在前台
* @return 如果应用在前台则返回true否则返回false
@ -1052,7 +1058,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
if (appProcesses == null) {
return false;
}
String packageName = getPackageName();
for (android.app.ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.importance == android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
@ -1062,7 +1068,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}
return false;
}
/**
* 低内存时的处理
*/
@ -1070,14 +1076,14 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
public void onLowMemory() {
super.onLowMemory();
LogManager.logInfo(TAG, "系统内存不足,触发onLowMemory");
// 清理不必要的缓存
clearMemoryCache();
// 强制GC
System.gc();
}
/**
* 清理内存缓存
*/
@ -1090,14 +1096,14 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}
currentLivenessModel = null;
}
// 如果设备内存不足考虑调整处理频率
PROCESS_FRAME_INTERVAL = Math.min(30, PROCESS_FRAME_INTERVAL + 5);
MIN_PROCESS_INTERVAL = Math.min(3000, MIN_PROCESS_INTERVAL + 500);
LogManager.logInfo(TAG, "内存不足,调整处理频率:每" + PROCESS_FRAME_INTERVAL + "帧,最小间隔" + MIN_PROCESS_INTERVAL + "ms");
}
/**
* 优化内存的周期性任务
*/
@ -1110,24 +1116,24 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
long usedMemory = (runtime.totalMemory() - runtime.freeMemory()) / (1024 * 1024);
long totalMemory = runtime.maxMemory() / (1024 * 1024);
float memoryUsageRatio = (float) usedMemory / totalMemory;
LogManager.logInfo(TAG, "内存使用情况:" + usedMemory + "MB/" + totalMemory +
LogManager.logInfo(TAG, "内存使用情况:" + usedMemory + "MB/" + totalMemory +
"MB,使用率:" + (int)(memoryUsageRatio * 100) + "%");
// 如果内存使用率超过70%主动清理内存
if (memoryUsageRatio > 0.7f) {
LogManager.logInfo(TAG, "内存使用率超过70%,主动清理内存");
clearMemoryCache();
System.gc();
}
// 如果内存使用率超过85%进行更积极的清理
if (memoryUsageRatio > 0.85f) {
LogManager.logWarning(TAG, "内存使用率超过85%,进行积极清理");
// 进一步降低处理频率
PROCESS_FRAME_INTERVAL = Math.min(50, PROCESS_FRAME_INTERVAL + 10);
MIN_PROCESS_INTERVAL = Math.min(5000, MIN_PROCESS_INTERVAL + 1000);
// 清理更多资源
if (currentLivenessModel != null) {
BDFaceImageInstance image = currentLivenessModel.getBdFaceImageInstance();
@ -1136,11 +1142,11 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}
currentLivenessModel = null;
}
LogManager.logInfo(TAG, "积极清理后调整处理频率:每" + PROCESS_FRAME_INTERVAL + "帧,最小间隔" + MIN_PROCESS_INTERVAL + "ms");
System.gc();
}
// 每30秒执行一次
if (!isFinishing()) {
new Handler().postDelayed(this, 30000);
@ -1148,7 +1154,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
}
}, 30000);
}
/**
* 更新小程序码显示
*/
@ -1156,7 +1162,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
LogManager.logInfo(TAG, "开始更新小程序码");
try {
DeviceSelectDataManager deviceSelectDataManager = DeviceSelectDataManager.getInstance(this);
// 更新普通小程序码扫码开门
boolean hasQrcode = deviceSelectDataManager.hasMiniQrcodeUrl();
if (hasQrcode) {
@ -1175,7 +1181,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
decodedBase64 = base64Qrcode.substring(commaIndex + 1);
}
}
Bitmap qrcodeBitmap = BitmapUtils.base64ToBitmap(decodedBase64);
if (qrcodeBitmap != null && imgScanDoorQRCode != null) {
imgScanDoorQRCode.setImageBitmap(qrcodeBitmap);
@ -1194,7 +1200,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
} else {
LogManager.logDebug(TAG, "未找到扫码开门小程序码链接");
}
// 更新上传人脸小程序码
boolean hasUploadFaceQrcode = deviceSelectDataManager.hasUploadFaceMiniQrcodeUrl();
if (hasUploadFaceQrcode) {
@ -1229,7 +1235,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
LogManager.logError(TAG, "获取小程序码异常: " + e.getMessage(), e);
}
}
/**
* 获取并显示店铺名称
*/
@ -1238,7 +1244,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
DeviceSelectDataManager deviceDataManager = DeviceSelectDataManager.getInstance(this);
String[] storeInfo = deviceDataManager.getStoreInfo();
String storeName = storeInfo[0]; // 第一个元素是店铺名称
if (storeName != null && !storeName.isEmpty()) {
tvStoreName.setText(storeName);
LogManager.logInfo(TAG, "成功显示店铺名称: " + storeName);
@ -1251,31 +1257,31 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
LogManager.logError(TAG, "获取店铺名称失败", e);
}
}
/**
* 处理店铺名称点击事件
*/
private void handleStoreNameClick() {
long currentTime = System.currentTimeMillis();
// 如果距离上次点击时间超过1秒重置计数器
if (currentTime - lastStoreNameClickTime > CLICK_INTERVAL) {
storeNameClickCount = 0;
}
storeNameClickCount++;
lastStoreNameClickTime = currentTime;
LogManager.logDebug(TAG, "店铺名称被点击,当前计数: " + storeNameClickCount);
// 如果连续点击达到5次
if (storeNameClickCount >= MAX_CLICK_COUNT) {
LogManager.logInfo(TAG, "连续点击5次店铺名称,准备返回主界面");
Toast.makeText(this, "即将返回主界面", Toast.LENGTH_SHORT).show();
// 重置计数器
storeNameClickCount = 0;
// 延迟一段时间后返回主界面
new Handler().postDelayed(new Runnable() {
@Override
@ -1289,7 +1295,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
Toast.makeText(this, "再点击" + remainingClicks + "次返回主界面", Toast.LENGTH_SHORT).show();
}
}
/**
* 返回主界面
*/
@ -1300,7 +1306,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
startActivity(intent);
finish();
}
/**
* 处理验证码Activity返回结果
*/
@ -1308,13 +1314,22 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1001) {
if (requestCode == 1001) { // 验证码验证获取输入结果
// 恢复摄像头预览
isNeedCamera = true;
LogManager.logInfo(TAG, "恢复摄像头预览 - isNeedCamera设置为true");
if (resultCode == RESULT_OK && data != null) {
String verificationCode = data.getStringExtra("verification_code");
if (verificationCode != null && verificationCode.length() == 12) {
LogManager.logInfo(TAG, "收到验证码: " + verificationCode);
android.util.Log.d("MainActivity", "收到验证码"+verificationCode);
handleVerificationCodeSubmit(verificationCode);
}
} else if (resultCode == RESULT_CANCELED) {
LogManager.logInfo(TAG, "用户点击关闭验证码弹窗");
} else {
LogManager.logInfo(TAG, "用户取消验证码输入");
}

1
app/src/main/java/com/ouxuan/oxface/orderOX/VerificationCodeActivity.java

@ -177,6 +177,7 @@ public class VerificationCodeActivity extends AppCompatActivity {
String code = verificationCode.toString();
LogManager.logInfo(TAG, "用户输入验证码: " + code);
android.util.Log.d(TAG, "用户输入验证码: " + code);
// 验证验证码格式
if (code.length() != 12 || !code.matches("\\d{12}")) {

Loading…
Cancel
Save