Ver Fonte

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

- 在SprayingOCRActivity中新增CountDownTimer实现10秒后自动跳转到结果页面
- 添加showPhoto方法统一处理照片显示逻辑
- 添加restartResultCountdown方法管理倒计时定时器
- 优化SprayingResultActivity中的图片加载时机
- 更新布局文件调整ImageView尺寸和间距
- 在AndroidManifest.xml中注册SprayingResultActivity并调整设计高度
- 移除不再使用的FileHelper依赖和相关导入包
- 完善倒计时取消机制防止内存泄漏
徐勤民 há 2 dias atrás
pai
commit
53b5be8ec4

+ 4 - 1
app/src/main/AndroidManifest.xml

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

+ 25 - 5
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<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()
+    }
 }

+ 3 - 7
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

+ 1 - 1
app/src/main/res/layout/activity_spraying_ocr.xml

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

+ 1 - 0
app/src/main/res/layout/activity_spraying_result.xml

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