From c587df2e4b09ddbc5f93a6465e35217e49e241c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8B=A4=E6=B0=91?= Date: Tue, 14 Apr 2026 16:19:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(glass):=20=E6=B7=BB=E5=8A=A0=E7=A6=BB?= =?UTF-8?q?=E7=BA=BF=E8=AF=AD=E9=9F=B3=E5=91=BD=E4=BB=A4=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=92=8C=E5=AE=A1=E6=9F=A5=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 OfflineCmdServiceHelper 中添加同意、驳回、拒绝等语音命令 - 创建新的 ItemItem 数据模型用于列表项显示 - 新增 InspectionActivity 和 ReviewActivity 界面用于检查和审查流程 - 实现语音命令监听器处理各种审批操作 - 添加相应的布局文件 activity_inspection.xml 和 activity_review.xml - 创建背景样式资源文件用于界面美化 - 在 TaskListActivity 中添加跳转到 ReviewActivity 的功能 - 移除基础组件中的加载完成提示以避免干扰用户体验 --- app/src/main/AndroidManifest.xml | 3 + .../glass/helper/OfflineCmdServiceHelper.kt | 5 ++ .../com/nova/brain/glass/model/ItemItem.kt | 6 ++ .../nova/brain/glass/ui/InspectionActivity.kt | 37 +++++++++++ .../com/nova/brain/glass/ui/ReviewActivity.kt | 64 ++++++++++++++++++ .../nova/brain/glass/ui/TaskListActivity.kt | 5 ++ .../nova/brain/glass/viewmodel/ItemListVM.kt | 18 +++++ app/src/main/res/drawable/bg_item.xml | 5 ++ app/src/main/res/drawable/bg_normal.xml | 9 +++ app/src/main/res/drawable/bg_selected.xml | 14 ++++ .../main/res/layout/activity_inspection.xml | 65 +++++++++++++++++++ app/src/main/res/layout/activity_review.xml | 63 ++++++++++++++++++ app/src/main/res/layout/item_item.xml | 11 ++++ .../com/xuqm/base/ui/BaseListActivity.java | 4 +- .../xuqm/base/ui/BaseListAppBarFragment.java | 4 +- .../base/ui/BaseListFormLayoutActivity.java | 4 +- 16 files changed, 311 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/com/nova/brain/glass/model/ItemItem.kt create mode 100644 app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt create mode 100644 app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt create mode 100644 app/src/main/java/com/nova/brain/glass/viewmodel/ItemListVM.kt create mode 100644 app/src/main/res/drawable/bg_item.xml create mode 100644 app/src/main/res/drawable/bg_normal.xml create mode 100644 app/src/main/res/drawable/bg_selected.xml create mode 100644 app/src/main/res/layout/activity_inspection.xml create mode 100644 app/src/main/res/layout/activity_review.xml create mode 100644 app/src/main/res/layout/item_item.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 76cc9c6..5bc31c6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -69,6 +69,9 @@ + 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 a03b2c0..c7bda4b 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 @@ -25,6 +25,11 @@ object OfflineCmdServiceHelper { add(OfflineCmdBean("退出", "tui chu")) add(OfflineCmdBean("返回", "fan hui")) add(OfflineCmdBean("退回", "tui hui")) + add(OfflineCmdBean("同意", "tong yi")) + add(OfflineCmdBean("驳回", "bo hui")) + add(OfflineCmdBean("不同意", "bu tong yi")) + add(OfflineCmdBean("拒绝", "ju jue")) + add(OfflineCmdBean("通过", "tong guo")) } fun init(){ val service = GlassSdk.getGlassOfflineCmdService() diff --git a/app/src/main/java/com/nova/brain/glass/model/ItemItem.kt b/app/src/main/java/com/nova/brain/glass/model/ItemItem.kt new file mode 100644 index 0000000..2c529ce --- /dev/null +++ b/app/src/main/java/com/nova/brain/glass/model/ItemItem.kt @@ -0,0 +1,6 @@ +package com.nova.brain.glass.model + +import com.xuqm.base.adapter.BaseItem + +data class ItemItem(val text: String): BaseItem() { +} 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 new file mode 100644 index 0000000..09b054c --- /dev/null +++ b/app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt @@ -0,0 +1,37 @@ +package com.nova.brain.glass.ui + +import com.nova.brain.glass.R +import com.nova.brain.glass.databinding.ActivityFoBinding +import com.nova.brain.glass.databinding.ActivityReviewBinding +import com.nova.brain.glass.helper.OfflineCmdListener +import com.nova.brain.glass.helper.OfflineCmdServiceHelper +import com.xuqm.base.ui.BaseActivity + +class InspectionActivity : BaseActivity() { + override fun getLayoutId(): Int =R.layout.activity_review + override fun fullscreen(): Boolean = true + private val listener = object : OfflineCmdListener { + override fun onOfflineCmd(cmd: String) { + when( cmd){ + "退出","返回","退回"->{ + finish() + } + "驳回","拒绝","不同意"->{ + finish() + } + "同意","通过"->{ + finish() + } + } + } + } + override fun initData() { + super.initData() + OfflineCmdServiceHelper.addOnLineListener(listener) + } + + override fun onDestroy() { + super.onDestroy() + OfflineCmdServiceHelper.removeOnLineListener(listener) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt new file mode 100644 index 0000000..3134be1 --- /dev/null +++ b/app/src/main/java/com/nova/brain/glass/ui/ReviewActivity.kt @@ -0,0 +1,64 @@ +package com.nova.brain.glass.ui + +import android.content.Intent +import com.nova.brain.glass.R +import com.nova.brain.glass.databinding.ActivityFoBinding +import com.nova.brain.glass.databinding.ActivityReviewBinding +import com.nova.brain.glass.helper.OfflineCmdListener +import com.nova.brain.glass.helper.OfflineCmdServiceHelper +import com.nova.brain.glass.model.ItemItem +import com.nova.brain.glass.model.TaskItem +import com.nova.brain.glass.viewmodel.ItemListVM +import com.xuqm.base.adapter.BasePagedAdapter +import com.xuqm.base.adapter.CommonPagedAdapter +import com.xuqm.base.adapter.ViewHolder +import com.xuqm.base.ui.BaseActivity +import com.xuqm.base.ui.BaseListFormLayoutActivity + +class ReviewActivity : BaseListFormLayoutActivity() { + override fun getLayoutId(): Int =R.layout.activity_review + override fun fullscreen(): Boolean = true + private val listener = object : OfflineCmdListener { + override fun onOfflineCmd(cmd: String) { + when( cmd){ + "退出","返回","退回"->{ + finish() + } + "驳回","拒绝","不同意"->{ + finish() + } + "同意","通过"->{ + finish() + } + } + } + } + override fun initData() { + super.initData() + OfflineCmdServiceHelper.addOnLineListener(listener) + } + + override fun onDestroy() { + super.onDestroy() + OfflineCmdServiceHelper.removeOnLineListener(listener) + } + + private val adapter = object : CommonPagedAdapter(R.layout.item_item) { + override fun convert(holder: ViewHolder, item: ItemItem, position: Int) { + holder + .setText(R.id.text, item.text) + .setClickListener(R.id.text + ) { + when(item.text){ + "同意" -> { + finish() + } + "拒绝" -> { + finish() + } + } + } + } + } + override fun adapter(): BasePagedAdapter = adapter +} \ No newline at end of file diff --git a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt index d45547a..d16a862 100644 --- a/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt +++ b/app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt @@ -12,6 +12,7 @@ import com.nova.brain.glass.viewmodel.TaskListVM 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.common.ToolsHelper import com.xuqm.base.ui.BaseListFormLayoutActivity @@ -63,6 +64,7 @@ class TaskListActivity : val layoutManager = binding.baseRecyclerView.layoutManager as? LinearLayoutManager if (layoutManager != null) { val lastVisible = layoutManager.findLastVisibleItemPosition() + LogHelper.d("lastVisible:$lastVisible") if (lastVisible < adapter.itemCount) { layoutManager.scrollToPositionWithOffset(lastVisible, 0) } else { @@ -91,6 +93,9 @@ class TaskListActivity : 0 -> { startActivity(Intent(this@TaskListActivity, FoActivity::class.java)) } + 1 -> { + startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java)) + } } } } diff --git a/app/src/main/java/com/nova/brain/glass/viewmodel/ItemListVM.kt b/app/src/main/java/com/nova/brain/glass/viewmodel/ItemListVM.kt new file mode 100644 index 0000000..9f498e8 --- /dev/null +++ b/app/src/main/java/com/nova/brain/glass/viewmodel/ItemListVM.kt @@ -0,0 +1,18 @@ +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 ItemListVM: 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/drawable/bg_item.xml b/app/src/main/res/drawable/bg_item.xml new file mode 100644 index 0000000..b852115 --- /dev/null +++ b/app/src/main/res/drawable/bg_item.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_normal.xml b/app/src/main/res/drawable/bg_normal.xml new file mode 100644 index 0000000..aaf1996 --- /dev/null +++ b/app/src/main/res/drawable/bg_normal.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/app/src/main/res/drawable/bg_selected.xml b/app/src/main/res/drawable/bg_selected.xml new file mode 100644 index 0000000..6ac30e8 --- /dev/null +++ b/app/src/main/res/drawable/bg_selected.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/app/src/main/res/layout/activity_inspection.xml b/app/src/main/res/layout/activity_inspection.xml new file mode 100644 index 0000000..4af5ae2 --- /dev/null +++ b/app/src/main/res/layout/activity_inspection.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_review.xml b/app/src/main/res/layout/activity_review.xml new file mode 100644 index 0000000..2cb97e5 --- /dev/null +++ b/app/src/main/res/layout/activity_review.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_item.xml b/app/src/main/res/layout/item_item.xml new file mode 100644 index 0000000..2f1a1e7 --- /dev/null +++ b/app/src/main/res/layout/item_item.xml @@ -0,0 +1,11 @@ + + diff --git a/base/src/main/java/com/xuqm/base/ui/BaseListActivity.java b/base/src/main/java/com/xuqm/base/ui/BaseListActivity.java index a832818..784d24a 100644 --- a/base/src/main/java/com/xuqm/base/ui/BaseListActivity.java +++ b/base/src/main/java/com/xuqm/base/ui/BaseListActivity.java @@ -137,7 +137,7 @@ public abstract class BaseListActivity