feat(ocr): 添加拍照结果倒计时跳转功能

- 在SprayingOCRActivity中新增CountDownTimer实现10秒后自动跳转到结果页面
- 添加showPhoto方法统一处理照片显示逻辑
- 添加restartResultCountdown方法管理倒计时定时器
- 优化SprayingResultActivity中的图片加载时机
- 更新布局文件调整ImageView尺寸和间距
- 在AndroidManifest.xml中注册SprayingResultActivity并调整设计高度
- 移除不再使用的FileHelper依赖和相关导入包
- 完善倒计时取消机制防止内存泄漏
这个提交包含在:
徐勤民 2026-04-14 21:17:43 +08:00
父节点 afe5eeb017
当前提交 53b5be8ec4
共有 5 个文件被更改,包括 34 次插入14 次删除

查看文件

@ -84,6 +84,9 @@
<activity
android:name=".ui.SprayingOCRActivity"
android:exported="false" />
<activity
android:name=".ui.SprayingResultActivity"
android:exported="false" />
<activity
android:name=".ui.WelcomeActivity"
android:exported="true"
@ -110,7 +113,7 @@
android:value="480" />
<meta-data
android:name="design_height_in_dp"
android:value="600" />
android:value="640" />
</application>
</manifest>

查看文件

@ -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<ItemItem> = 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()
}
}

查看文件

@ -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

查看文件

@ -25,7 +25,7 @@
<ImageView
android:layout_width="120dp"
android:id="@+id/content"
android:layout_height="wrap_content"
android:layout_height="150dp"
android:layout_marginTop="12dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"

查看文件

@ -46,6 +46,7 @@
<ImageView
android:id="@+id/iv"
android:padding="2dp"
android:layout_width="120dp"
android:layout_height="150dp"
android:layout_marginStart="10dp"