From 1dd3477810e8cdd91b1ad4d705414212888cef0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Tue, 21 Apr 2026 15:56:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(inspection):=20=E9=87=8D=E6=9E=84=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E9=A1=B5=E9=9D=A2=E7=95=8C=E9=9D=A2=E5=92=8C=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加了"重新拍摄"和"重新拍照"命令支持 - 将检查活动从基础活动重构为列表表单布局活动 - 集成RecyclerView来显示项目列表,替换原有的静态按钮布局 - 创建适配器来处理列表项点击事件,包括开始任务功能 - 更新语音命令处理逻辑以支持新的重拍命令选项 - 修改UI布局以适应新的列表展示方式并移除旧的相机按钮组 - 调整提示文本的引号显示方式以确保正确渲染 --- .../glass/helper/OfflineCmdServiceHelper.kt | 2 + .../nova/brain/glass/ui/InspectionActivity.kt | 35 ++++++++--- .../glass/ui/InspectionResultActivity.kt | 2 +- .../brain/glass/viewmodel/InspectionVM.kt | 5 +- .../main/res/layout/activity_inspection.xml | 62 +++---------------- 5 files changed, 40 insertions(+), 66 deletions(-) diff --git a/app/src/main/java/com/nova/brain/glass/helper/OfflineCmdServiceHelper.kt b/app/src/main/java/com/nova/brain/glass/helper/OfflineCmdServiceHelper.kt index 79fadc6..f34a6fb 100644 --- a/app/src/main/java/com/nova/brain/glass/helper/OfflineCmdServiceHelper.kt +++ b/app/src/main/java/com/nova/brain/glass/helper/OfflineCmdServiceHelper.kt @@ -68,6 +68,8 @@ object OfflineCmdServiceHelper { ) private val CMDS_INSPECTION_RESULT = listOf( OfflineCmdBean("重拍照", "chong pai zhao"), + OfflineCmdBean("重新拍摄", "chong xin pai she"), + OfflineCmdBean("重新拍照", "chong xin pai zhao"), OfflineCmdBean("结束任务", "jie shu ren wu"), OfflineCmdBean("继续任务", "ji xu ren wu") ) diff --git a/app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt index 87e0dbd..6750cb2 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt @@ -3,24 +3,32 @@ package com.nova.brain.glass.ui import android.content.Intent 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.ActivityInspectionBinding import com.nova.brain.glass.helper.GlassMediaServiceHelper 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.InspectionVM import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution 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.LogHelper import com.xuqm.base.extensions.showMessage -import com.xuqm.base.ui.BaseActivity +import com.xuqm.base.ui.BaseListFormLayoutNormalActivity import java.io.File import java.util.UUID -import kotlin.jvm.java -class InspectionActivity : BaseActivity() { +class InspectionActivity : + BaseListFormLayoutNormalActivity() { + override fun getLayoutId(): Int = R.layout.activity_inspection override fun fullscreen(): Boolean = true + override fun getRecyclerOrientation(): Int = RecyclerView.VERTICAL private val listener = object : OfflineCmdListener { override fun onOfflineCmd(cmd: String) { @@ -37,9 +45,6 @@ class InspectionActivity : BaseActivity() { super.initData() window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) SprayingPhotoManager.clear() - binding.btnCamera.setOnClickListener { startCapture() } - binding.btnPrev.setOnClickListener { /* 切换上一任务(待实现) */ } - binding.btnNext.setOnClickListener { /* 切换下一任务(待实现) */ } } private fun startCapture() { @@ -69,7 +74,7 @@ class InspectionActivity : BaseActivity() { override fun onTakePhotoV2(path: String?, width: Int, height: Int) { if (path == null) { runOnUiThread { - binding.hint.text = "单击或语音输入\u201C开始\u201D,进入下一步\n滑动切换上/下一个任务" + binding.hint.text = "单击或语音输入“开始”,进入下一步\n滑动切换上/下一个任务" } "相机异常".showMessage() return @@ -83,6 +88,20 @@ class InspectionActivity : BaseActivity() { } } + private val adapter = object : CommonPagedAdapter(R.layout.item_photo) { + override fun convert(holder: ViewHolder, item: ItemItem, position: Int) { + holder + .setText(R.id.text, item.text) + .setClickListener(R.id.photo) { + when (item.text) { + "开始任务" -> startCapture() + } + } + } + } + + override fun adapter(): BasePagedAdapter = adapter + override fun onResume() { super.onResume() GlassMediaServiceHelper.addPhotoCallback(mPhotoFileCallback) @@ -99,4 +118,4 @@ class InspectionActivity : BaseActivity() { super.onDestroy() window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt index 58446b4..ec99454 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/InspectionResultActivity.kt @@ -65,7 +65,7 @@ class InspectionResultActivity : runOnUiThread { when (cmd) { "退出", "返回", "退回" -> finish() - "重拍照" -> retake() + "重拍照","重新拍摄","重新拍照" -> retake() "继续任务" -> continueTask() "结束任务" -> endTask() } diff --git a/app/src/main/java/com/nova/brain/glass/viewmodel/InspectionVM.kt b/app/src/main/java/com/nova/brain/glass/viewmodel/InspectionVM.kt index c0a891f..e549ed8 100644 --- a/app/src/main/java/com/nova/brain/glass/viewmodel/InspectionVM.kt +++ b/app/src/main/java/com/nova/brain/glass/viewmodel/InspectionVM.kt @@ -1,17 +1,16 @@ package com.nova.brain.glass.viewmodel import com.nova.brain.glass.model.ItemItem -import com.nova.brain.glass.model.TaskItem import com.xuqm.base.viewmodel.BaseListViewModel import com.xuqm.base.viewmodel.callback.Response -class InspectionVM: BaseListViewModel() { +class InspectionVM : BaseListViewModel() { override fun loadData( page: Int, onResponse: Response ) { onResponse.onResponse(arrayListOf().apply { - add(ItemItem("拍照")) + add(ItemItem("开始任务")) }) } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_inspection.xml b/app/src/main/res/layout/activity_inspection.xml index 6a5b812..f308e70 100644 --- a/app/src/main/res/layout/activity_inspection.xml +++ b/app/src/main/res/layout/activity_inspection.xml @@ -80,62 +80,16 @@ android:textSize="14sp" /> - - - - - - - - - - - - - - + app:layout_constraintTop_toBottomOf="@+id/content" /> + app:layout_constraintTop_toBottomOf="@+id/baseRecyclerView" /> \ No newline at end of file