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

- 在离线命令服务中增加补充照片、确认提交、提交、确认等语音指令
- 集成SprayingPhotoManager管理器用于照片操作
- 在拍照前和提交后调用SprayingPhotoManager.clear()清理照片
- 在OCR识别和结果页面添加照片到管理器
- 新增SprayingFinishActivity用于处理完成操作
- 实现finishLauncher处理补充拍照和提交动作
- 更新AndroidManifest.xml注册新活动
这个提交包含在:
徐勤民 2026-04-14 22:48:30 +08:00
父节点 eedb57afe3
当前提交 19997b4d54
共有 5 个文件被更改,包括 38 次插入1 次删除

查看文件

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

查看文件

@ -163,6 +163,10 @@ object OfflineCmdServiceHelper {
add(OfflineCmdBean("结束", "jie shu")) add(OfflineCmdBean("结束", "jie shu"))
add(OfflineCmdBean("完成", "wan cheng")) add(OfflineCmdBean("完成", "wan cheng"))
add(OfflineCmdBean("完成任务", "wan cheng ren wu")) 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(){ fun init(){

查看文件

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

查看文件

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

查看文件

@ -12,6 +12,7 @@ import com.nova.brain.glass.R
import com.nova.brain.glass.databinding.ActivitySprayingResultBinding import com.nova.brain.glass.databinding.ActivitySprayingResultBinding
import com.nova.brain.glass.helper.OfflineCmdListener import com.nova.brain.glass.helper.OfflineCmdListener
import com.nova.brain.glass.helper.OfflineCmdServiceHelper 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.model.ItemItem
import com.nova.brain.glass.viewmodel.SprayingResultVM import com.nova.brain.glass.viewmodel.SprayingResultVM
import com.rokid.security.glass3.open.sdk.GlassSdk 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 { private val listener = object : OfflineCmdListener {
override fun onOfflineCmd(cmd: String) { override fun onOfflineCmd(cmd: String) {
@ -91,7 +112,9 @@ class SprayingResultActivity :
fun rest() { fun rest() {
manualResultLauncher.launch(Intent(this, SprayingManualResultActivity::class.java)) manualResultLauncher.launch(Intent(this, SprayingManualResultActivity::class.java))
} }
fun taskFinish(){} fun taskFinish() {
finishLauncher.launch(Intent(this, SprayingFinishActivity::class.java))
}
private val photoCallbackId = UUID.randomUUID().toString() private val photoCallbackId = UUID.randomUUID().toString()
@ -117,6 +140,7 @@ class SprayingResultActivity :
"相机异常".showMessage() "相机异常".showMessage()
} }
} else { } else {
SprayingPhotoManager.addPhoto(path)
startActivity( startActivity(
Intent( Intent(
this@SprayingResultActivity, SprayingOCRActivity::class.java this@SprayingResultActivity, SprayingOCRActivity::class.java