瀏覽代碼

feat(spraying): 添加喷洒作业补充拍照和提交功能

- 在离线命令服务中增加补充照片、确认提交、提交、确认等语音指令
- 集成SprayingPhotoManager管理器用于照片操作
- 在拍照前和提交后调用SprayingPhotoManager.clear()清理照片
- 在OCR识别和结果页面添加照片到管理器
- 新增SprayingFinishActivity用于处理完成操作
- 实现finishLauncher处理补充拍照和提交动作
- 更新AndroidManifest.xml注册新活动
徐勤民 2 天之前
父節點
當前提交
19997b4d54

+ 3 - 0
app/src/main/AndroidManifest.xml

@@ -90,6 +90,9 @@
         <activity
             android:name=".ui.SprayingManualResultActivity"
             android:exported="false" />
+        <activity
+            android:name=".ui.SprayingFinishActivity"
+            android:exported="false" />
         <activity
             android:name=".ui.WelcomeActivity"
             android:exported="true"

+ 4 - 0
app/src/main/java/com/nova/brain/glass/helper/OfflineCmdServiceHelper.kt

@@ -163,6 +163,10 @@ object OfflineCmdServiceHelper {
         add(OfflineCmdBean("结束", "jie shu"))
         add(OfflineCmdBean("完成", "wan cheng"))
         add(OfflineCmdBean("完成任务", "wan cheng ren wu"))
+        add(OfflineCmdBean("补充照片", "bu chong zhao pian"))
+        add(OfflineCmdBean("确认提交", "que ren ti jiao"))
+        add(OfflineCmdBean("提交", "ti jiao"))
+        add(OfflineCmdBean("确认", "que ren"))
         //
     }
     fun init(){

+ 4 - 0
app/src/main/java/com/nova/brain/glass/ui/SprayingActivity.kt

@@ -7,6 +7,7 @@ import com.nova.brain.glass.R
 import com.nova.brain.glass.databinding.ActivitySprayingBinding
 import com.nova.brain.glass.helper.OfflineCmdListener
 import com.nova.brain.glass.helper.OfflineCmdServiceHelper
+import com.nova.brain.glass.helper.SprayingPhotoManager
 import com.nova.brain.glass.model.ItemItem
 import com.nova.brain.glass.viewmodel.SprayingVM
 import com.rokid.security.glass3.open.sdk.GlassSdk
@@ -40,6 +41,7 @@ class SprayingActivity :
                         runOnUiThread {
                             binding.hint.text = "拍照中,请稍后..."
                         }
+                        SprayingPhotoManager.clear()
                         isPhoto = true
                         takePhoto()
                     }
@@ -82,6 +84,7 @@ class SprayingActivity :
                     "相机异常".showMessage()
                 }
             } else {
+                SprayingPhotoManager.addPhoto(path)
                 startActivity(Intent(this@SprayingActivity, SprayingOCRActivity::class.java).apply {
                     putExtra("path", path)
                 })
@@ -122,6 +125,7 @@ class SprayingActivity :
                             runOnUiThread {
                                 binding.hint.text = "拍照中,请稍后..."
                             }
+                            SprayingPhotoManager.clear()
                             isPhoto = true
                             takePhoto()
                         }

+ 2 - 0
app/src/main/java/com/nova/brain/glass/ui/SprayingOCRActivity.kt

@@ -10,6 +10,7 @@ import com.nova.brain.glass.R
 import com.nova.brain.glass.databinding.ActivitySprayingOcrBinding
 import com.nova.brain.glass.helper.OfflineCmdListener
 import com.nova.brain.glass.helper.OfflineCmdServiceHelper
+import com.nova.brain.glass.helper.SprayingPhotoManager
 import com.nova.brain.glass.model.ItemItem
 import com.nova.brain.glass.viewmodel.SprayingOCRVM
 import com.nova.brain.glass.viewmodel.SprayingVM
@@ -85,6 +86,7 @@ class SprayingOCRActivity :
                     "相机异常".showMessage()
                 }
             } else {
+                SprayingPhotoManager.addPhoto(path)
                 runOnUiThread {
                     binding.hint.text = "单击或语音输入“重拍”,可重新拍摄"
                     showPhoto(path)

+ 25 - 1
app/src/main/java/com/nova/brain/glass/ui/SprayingResultActivity.kt

@@ -12,6 +12,7 @@ import com.nova.brain.glass.R
 import com.nova.brain.glass.databinding.ActivitySprayingResultBinding
 import com.nova.brain.glass.helper.OfflineCmdListener
 import com.nova.brain.glass.helper.OfflineCmdServiceHelper
+import com.nova.brain.glass.helper.SprayingPhotoManager
 import com.nova.brain.glass.model.ItemItem
 import com.nova.brain.glass.viewmodel.SprayingResultVM
 import com.rokid.security.glass3.open.sdk.GlassSdk
@@ -50,6 +51,26 @@ class SprayingResultActivity :
                 }
             }
         }
+    private val finishLauncher =
+        registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
+            if (result.resultCode != Activity.RESULT_OK) {
+                return@registerForActivityResult
+            }
+            when (result.data?.getStringExtra(SprayingFinishActivity.EXTRA_FINISH_ACTION)) {
+                SprayingFinishActivity.ACTION_SUPPLEMENT -> {
+                    runOnUiThread {
+                        binding.hint.text = "拍照中,请稍后..."
+                    }
+                    isPhoto = true
+                    takePhoto()
+                }
+
+                SprayingFinishActivity.ACTION_SUBMIT -> {
+                    SprayingPhotoManager.clear()
+                    finish()
+                }
+            }
+        }
 
     private val listener = object : OfflineCmdListener {
         override fun onOfflineCmd(cmd: String) {
@@ -91,7 +112,9 @@ class SprayingResultActivity :
     fun rest() {
         manualResultLauncher.launch(Intent(this, SprayingManualResultActivity::class.java))
     }
-    fun taskFinish(){}
+    fun taskFinish() {
+        finishLauncher.launch(Intent(this, SprayingFinishActivity::class.java))
+    }
 
     private val photoCallbackId = UUID.randomUUID().toString()
 
@@ -117,6 +140,7 @@ class SprayingResultActivity :
                     "相机异常".showMessage()
                 }
             } else {
+                SprayingPhotoManager.addPhoto(path)
                 startActivity(
                     Intent(
                         this@SprayingResultActivity, SprayingOCRActivity::class.java