From 53b5be8ec43498b64686edaab9b350bef1f0b6a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Tue, 14 Apr 2026 21:17:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(ocr):=20=E6=B7=BB=E5=8A=A0=E6=8B=8D?= =?UTF-8?q?=E7=85=A7=E7=BB=93=E6=9E=9C=E5=80=92=E8=AE=A1=E6=97=B6=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在SprayingOCRActivity中新增CountDownTimer实现10秒后自动跳转到结果页面 - 添加showPhoto方法统一处理照片显示逻辑 - 添加restartResultCountdown方法管理倒计时定时器 - 优化SprayingResultActivity中的图片加载时机 - 更新布局文件调整ImageView尺寸和间距 - 在AndroidManifest.xml中注册SprayingResultActivity并调整设计高度 - 移除不再使用的FileHelper依赖和相关导入包 - 完善倒计时取消机制防止内存泄漏 --- app/src/main/AndroidManifest.xml | 5 +++- .../brain/glass/ui/SprayingOCRActivity.kt | 30 +++++++++++++++---- .../brain/glass/ui/SprayingResultActivity.kt | 10 ++----- .../main/res/layout/activity_spraying_ocr.xml | 2 +- .../res/layout/activity_spraying_result.xml | 1 + 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7c9c9c0..f329398 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -84,6 +84,9 @@ + + android:value="640" /> diff --git a/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt index fd65ae8..6c8d51c 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt @@ -1,12 +1,12 @@ package com.nova.brain.glass.ui -import android.R.attr.path +import android.content.Intent import android.graphics.BitmapFactory +import android.os.CountDownTimer import android.os.Environment import android.view.WindowManager import androidx.recyclerview.widget.RecyclerView import com.nova.brain.glass.R -import com.nova.brain.glass.databinding.ActivitySprayingBinding import com.nova.brain.glass.databinding.ActivitySprayingOcrBinding import com.nova.brain.glass.helper.OfflineCmdListener import com.nova.brain.glass.helper.OfflineCmdServiceHelper @@ -18,7 +18,6 @@ import com.rokid.security.system.server.media.callback.PhotoFileCallback import com.xuqm.base.adapter.BasePagedAdapter import com.xuqm.base.adapter.CommonPagedAdapter import com.xuqm.base.adapter.ViewHolder -import com.xuqm.base.common.FileHelper import com.xuqm.base.common.LogHelper import com.xuqm.base.extensions.showMessage import com.xuqm.base.ui.BaseListFormLayoutNormalActivity @@ -59,6 +58,7 @@ class SprayingOCRActivity : GlassSdk.getGlassMediaService()?.takePhoto(PhotoResolution.RESOLUTION_480P, file.absolutePath) } private val photoCallbackId = UUID.randomUUID().toString() + private var resultCountdown: CountDownTimer? = null private val mPhotoFileCallback = object : PhotoFileCallback.Stub() { override fun onTakePhoto(path: String) { @@ -84,7 +84,7 @@ class SprayingOCRActivity : } else { runOnUiThread { binding.hint.text = "单击或语音输入“重拍”,可重新拍摄" - binding.content.setImageBitmap(BitmapFactory.decodeFile(path)) + showPhoto(path) } } } @@ -97,12 +97,13 @@ class SprayingOCRActivity : OfflineCmdServiceHelper.addOnLineListener(listener) GlassSdk.getGlassMediaService()?.addPhotoCallback(mPhotoFileCallback) intent.getStringExtra("path")?.apply { - binding.content.setImageBitmap(BitmapFactory.decodeFile(this)) + showPhoto(this) } } override fun onDestroy() { super.onDestroy() + resultCountdown?.cancel() OfflineCmdServiceHelper.removeOnLineListener(listener) GlassSdk.getGlassMediaService()?.removePhotoCallback(mPhotoFileCallback) } @@ -126,4 +127,23 @@ class SprayingOCRActivity : } override fun adapter(): BasePagedAdapter = adapter + + private fun showPhoto(path: String) { + binding.content.setImageBitmap(BitmapFactory.decodeFile(path)) + restartResultCountdown(path) + } + + private fun restartResultCountdown(path: String) { + resultCountdown?.cancel() + resultCountdown = object : CountDownTimer(10_000, 1_000) { + override fun onTick(millisUntilFinished: Long) { + } + + override fun onFinish() { + startActivity(Intent(this@SprayingOCRActivity, SprayingResultActivity::class.java).apply { + putExtra("path", path) + }) + } + }.start() + } } diff --git a/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt index 792a0cf..b52f86c 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt @@ -89,10 +89,6 @@ class SprayingResultActivity : putExtra("path", path) }) finish() -// runOnUiThread { -// binding.hint.text = "单击或语音输入“开始”,进入下一步" -// binding.iv.setImageBitmap(BitmapFactory.decodeFile(path)) -// } } } } @@ -103,15 +99,15 @@ class SprayingResultActivity : window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) OfflineCmdServiceHelper.addOnLineListener(listener) GlassSdk.getGlassMediaService()?.addPhotoCallback(mPhotoFileCallback) + intent.getStringExtra("path")?.apply { + binding.iv.setImageBitmap(BitmapFactory.decodeFile(this)) + } } override fun onDestroy() { super.onDestroy() OfflineCmdServiceHelper.removeOnLineListener(listener) GlassSdk.getGlassMediaService()?.removePhotoCallback(mPhotoFileCallback) - intent.getStringExtra("path")?.apply { - binding.iv.setImageBitmap(BitmapFactory.decodeFile(this)) - } } private var isPhoto = false diff --git a/app/src/main/res/layout/activity_spraying_ocr.xml b/app/src/main/res/layout/activity_spraying_ocr.xml index 0070e4b..b7de2eb 100644 --- a/app/src/main/res/layout/activity_spraying_ocr.xml +++ b/app/src/main/res/layout/activity_spraying_ocr.xml @@ -25,7 +25,7 @@