From 1d309e81931fb7561c46451c5c9ec30c6a261ca3 Mon Sep 17 00:00:00 2001 From: MTing Date: Thu, 4 Sep 2025 17:53:21 +0800 Subject: [PATCH] fix and update --- .../com/ouxuan/oxface/OXFaceOnlineActivity.java | 233 +++++++++++---------- .../oxface/orderOX/VerificationCodeActivity.java | 1 + 2 files changed, 125 insertions(+), 109 deletions(-) diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index 2d629d3..28b9965 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/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, "用户取消验证码输入"); } diff --git a/app/src/main/java/com/ouxuan/oxface/orderOX/VerificationCodeActivity.java b/app/src/main/java/com/ouxuan/oxface/orderOX/VerificationCodeActivity.java index ceeb990..f81f2f3 100644 --- a/app/src/main/java/com/ouxuan/oxface/orderOX/VerificationCodeActivity.java +++ b/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}")) {