Jelajahi Sumber

feat(task): 添加语音指令快速访问可见任务功能

- 实现通过语音命令直接跳转到指定位置的任务
- 支持前10条任务的语音快捷操作(查看、打开、处理)
- 添加openVisibleTask方法用于计算当前可视区域内目标任务位置
- 添加openTask方法统一处理不同任务类型的页面跳转逻辑
- 重构适配器点击事件,复用openTask方法减少代码重复
- 完善边界检查避免超出可视区域或任务列表范围的错误访问
徐勤民 2 hari lalu
induk
melakukan
ac8f236668
1 mengubah file dengan 52 tambahan dan 15 penghapusan
  1. 52 15
      app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt

+ 52 - 15
app/src/main/java/com/nova/brain/glass/ui/TaskListActivity.kt

@@ -58,7 +58,34 @@ class TaskListActivity :
                         toPre()
                     }
                     "查看第一条任务", "查看第一项任务", "打开第一条任务","打开第一项任务", "处理第一条任务", "处理第一项任务" -> {
-                        toPre()
+                        openVisibleTask(0)
+                    }
+                    "查看第二条任务", "查看第二项任务", "打开第二条任务", "打开第二项任务", "处理第二条任务", "处理第二项任务" -> {
+                        openVisibleTask(1)
+                    }
+                    "查看第三条任务", "查看第三项任务", "打开第三条任务", "打开第三项任务", "处理第三条任务", "处理第三项任务" -> {
+                        openVisibleTask(2)
+                    }
+                    "查看第四条任务", "查看第四项任务", "打开第四条任务", "打开第四项任务", "处理第四条任务", "处理第四项任务" -> {
+                        openVisibleTask(3)
+                    }
+                    "查看第五条任务", "查看第五项任务", "打开第五条任务", "打开第五项任务", "处理第五条任务", "处理第五项任务" -> {
+                        openVisibleTask(4)
+                    }
+                    "查看第六条任务", "查看第六项任务", "打开第六条任务", "打开第六项任务", "处理第六条任务", "处理第六项任务" -> {
+                        openVisibleTask(5)
+                    }
+                    "查看第七条任务", "查看第七项任务", "打开第七条任务", "打开第七项任务", "处理第七条任务", "处理第七项任务" -> {
+                        openVisibleTask(6)
+                    }
+                    "查看第八条任务", "查看第八项任务", "打开第八条任务", "打开第八项任务", "处理第八条任务", "处理第八项任务" -> {
+                        openVisibleTask(7)
+                    }
+                    "查看第九条任务", "查看第九项任务", "打开第九条任务", "打开第九项任务", "处理第九条任务", "处理第九项任务" -> {
+                        openVisibleTask(8)
+                    }
+                    "查看第十条任务", "查看第十项任务", "打开第十条任务", "打开第十项任务", "处理第十条任务", "处理第十项任务" -> {
+                        openVisibleTask(9)
                     }
                 }
             }
@@ -105,6 +132,29 @@ class TaskListActivity :
         adapter.notifyDataSetChanged()
     }
 
+    private fun openVisibleTask(offset: Int) {
+        val layoutManager = binding.baseRecyclerView.layoutManager as? LinearLayoutManager ?: return
+        val firstVisible = layoutManager.findFirstVisibleItemPosition()
+        if (firstVisible == RecyclerView.NO_POSITION) {
+            return
+        }
+        val targetPosition = firstVisible + offset
+        val lastVisible = layoutManager.findLastVisibleItemPosition()
+        if (targetPosition > lastVisible || targetPosition >= adapter.itemCount) {
+            return
+        }
+        openTask(targetPosition)
+    }
+
+    private fun openTask(position: Int) {
+        when (position % 4) {
+            0 -> startActivity(Intent(this@TaskListActivity, FoActivity::class.java))
+            1 -> startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java))
+            2 -> startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java))
+            3 -> startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java))
+        }
+    }
+
     override fun onResume() {
         super.onResume()
         OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener)
@@ -122,20 +172,7 @@ class TaskListActivity :
                 .setText(R.id.tv_title, "${displayPosition}.张三提交的出差预算申请审核任务,从上海到北京,3月23开始3月24结束,预算金额¥1800元。【已逾期】")
                 .setClickListener(R.id.tv_title
                 ) {
-                    when(position%4){
-                        0 -> {
-                            startActivity(Intent(this@TaskListActivity, FoActivity::class.java))
-                        }
-                        1 -> {
-                            startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java))
-                        }
-                        2 -> {
-                            startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java))
-                        }
-                        3 -> {
-                            startActivity(Intent(this@TaskListActivity, ReviewActivity::class.java))
-                        }
-                    }
+                    openTask(position)
                 }
         }
     }