Explorar el Código

refactor(offlineCmd): 重构离线语音命令服务实现

- 移除过时的语音命令配置选项
- 将初始化逻辑简化并移除不必要的异步执行
- 添加针对不同页面的专用语音命令监听器方法
- 在各个Activity中集成对应的语音命令功能
- 为任务列表页面添加语音操作提示文本
- 统一管理语音命令的添加和移除操作
- 优化语音命令的页面特定功能支持
徐勤民 hace 2 días
padre
commit
5632119792

+ 218 - 130
app/src/main/java/com/nova/brain/glass/helper/OfflineCmdServiceHelper.kt

@@ -1,8 +1,10 @@
 package com.nova.brain.glass.helper
 
+import com.luck.picture.lib.config.PictureSelectionConfig.listener
 import com.rokid.security.glass3.open.sdk.GlassSdk
 import com.rokid.security.glass3.sdk.base.data.offlineCmd.bean.VoiceAction
 import com.rokid.security.glass3.sdk.base.data.offlineCmd.listener.IVoiceCallback
+import com.rokid.security.system.server.offlineCmd.IOfflineCmdService
 import com.xuqm.base.common.LogHelper
 import java.util.concurrent.Executors
 
@@ -33,174 +35,89 @@ object OfflineCmdServiceHelper {
         add(OfflineCmdBean("通过", "tong guo"))
         add(OfflineCmdBean("合格", "he ge"))
         add(OfflineCmdBean("不合格", "bu he ge"))
-        add(OfflineCmdBean("改为合格", "gai wei he ge"))
-        add(OfflineCmdBean("改为不合格", "gai wei bu he ge"))
-        add(OfflineCmdBean("设置为合格", "she zhi wei he ge"))
-        add(OfflineCmdBean("设置为不合格", "she zhi wei bu he ge"))
-        add(OfflineCmdBean("取消修改", "qu xiao xiu gai"))
         add(OfflineCmdBean("取消", "qu xiao"))
 
-        add(OfflineCmdBean("查看第一条任务", "cha kan di yi tiao ren wu"))
         add(OfflineCmdBean("查看第一项任务", "cha kan di yi xiang ren wu"))
-        add(OfflineCmdBean("查看第一个任务", "cha kan di yi ge ren wu"))
         add(OfflineCmdBean("第一个", "di yi ge"))
-        add(OfflineCmdBean("第一条", "di yi tiao"))
-        add(OfflineCmdBean("第一项", "di yi xiang"))
-        add(OfflineCmdBean("打开第一条任务", "da kai di yi tiao ren wu"))
-        add(OfflineCmdBean("打开第一项任务", "da kai di yi xiang ren wu"))
-        add(OfflineCmdBean("打开第一个任务", "da kai di yi ge ren wu"))
-        add(OfflineCmdBean("处理第一条任务", "chu li di yi tiao ren wu"))
-        add(OfflineCmdBean("处理第一项任务", "chu li di yi xiang ren wu"))
-        add(OfflineCmdBean("处理第一个任务", "chu li di yi ge ren wu"))
-
-        add(OfflineCmdBean("查看第二条任务", "cha kan di er tiao ren wu"))
+
         add(OfflineCmdBean("查看第二项任务", "cha kan di er xiang ren wu"))
         add(OfflineCmdBean("第二个", "di er ge"))
-        add(OfflineCmdBean("第二条", "di er tiao"))
-        add(OfflineCmdBean("第二项", "di er xiang"))
-        add(OfflineCmdBean("打开第二条任务", "da kai di er tiao ren wu"))
-        add(OfflineCmdBean("打开第二项任务", "da kai di er xiang ren wu"))
-        add(OfflineCmdBean("处理第二条任务", "chu li di er tiao ren wu"))
-        add(OfflineCmdBean("处理第二项任务", "chu li di er xiang ren wu"))
-
-        add(OfflineCmdBean("查看第三条任务", "cha kan di san tiao ren wu"))
+
         add(OfflineCmdBean("查看第三项任务", "cha kan di san xiang ren wu"))
         add(OfflineCmdBean("第三个", "di san ge"))
-        add(OfflineCmdBean("第三条", "di san tiao"))
-        add(OfflineCmdBean("第三项", "di san xiang"))
-        add(OfflineCmdBean("打开第三条任务", "da kai di san tiao ren wu"))
-        add(OfflineCmdBean("打开第三项任务", "da kai di san xiang ren wu"))
-        add(OfflineCmdBean("处理第三条任务", "chu li di san tiao ren wu"))
-        add(OfflineCmdBean("处理第三项任务", "chu li di san xiang ren wu"))
-
-        add(OfflineCmdBean("查看第四条任务", "cha kan di si tiao ren wu"))
+
         add(OfflineCmdBean("查看第四项任务", "cha kan di si xiang ren wu"))
         add(OfflineCmdBean("第四个", "di si ge"))
-        add(OfflineCmdBean("第四条", "di si tiao"))
-        add(OfflineCmdBean("第四项", "di si xiang"))
-        add(OfflineCmdBean("打开第四条任务", "da kai di si tiao ren wu"))
-        add(OfflineCmdBean("打开第四项任务", "da kai di si xiang ren wu"))
-        add(OfflineCmdBean("处理第四条任务", "chu li di si tiao ren wu"))
-        add(OfflineCmdBean("处理第四项任务", "chu li di si xiang ren wu"))
-
-        add(OfflineCmdBean("查看第五条任务", "cha kan di wu tiao ren wu"))
+
         add(OfflineCmdBean("查看第五项任务", "cha kan di wu xiang ren wu"))
         add(OfflineCmdBean("第五个", "di wu ge"))
-        add(OfflineCmdBean("第五条", "di wu tiao"))
-        add(OfflineCmdBean("第五项", "di wu xiang"))
-        add(OfflineCmdBean("打开第五条任务", "da kai di wu tiao ren wu"))
-        add(OfflineCmdBean("打开第五项任务", "da kai di wu xiang ren wu"))
-        add(OfflineCmdBean("处理第五条任务", "chu li di wu tiao ren wu"))
-        add(OfflineCmdBean("处理第五项任务", "chu li di wu xiang ren wu"))
-
-        add(OfflineCmdBean("查看第六条任务", "cha kan di liu tiao ren wu"))
+
         add(OfflineCmdBean("查看第六项任务", "cha kan di liu xiang ren wu"))
         add(OfflineCmdBean("第六个", "di liu ge"))
-        add(OfflineCmdBean("第六条", "di liu tiao"))
-        add(OfflineCmdBean("第六项", "di liu xiang"))
-        add(OfflineCmdBean("打开第六条任务", "da kai di liu tiao ren wu"))
-        add(OfflineCmdBean("打开第六项任务", "da kai di liu xiang ren wu"))
-        add(OfflineCmdBean("处理第六条任务", "chu li di liu tiao ren wu"))
-        add(OfflineCmdBean("处理第六项任务", "chu li di liu xiang ren wu"))
-
-        add(OfflineCmdBean("查看第七条任务", "cha kan di qi tiao ren wu"))
+
         add(OfflineCmdBean("查看第七项任务", "cha kan di qi xiang ren wu"))
         add(OfflineCmdBean("第七个", "di qi ge"))
-        add(OfflineCmdBean("第七条", "di qi tiao"))
-        add(OfflineCmdBean("第七项", "di qi xiang"))
-        add(OfflineCmdBean("打开第七条任务", "da kai di qi tiao ren wu"))
-        add(OfflineCmdBean("打开第七项任务", "da kai di qi xiang ren wu"))
-        add(OfflineCmdBean("处理第七条任务", "chu li di qi tiao ren wu"))
-        add(OfflineCmdBean("处理第七项任务", "chu li di qi xiang ren wu"))
-
-        add(OfflineCmdBean("查看第八条任务", "cha kan di ba tiao ren wu"))
+
         add(OfflineCmdBean("查看第八项任务", "cha kan di ba xiang ren wu"))
         add(OfflineCmdBean("第八个", "di ba ge"))
-        add(OfflineCmdBean("第八条", "di ba tiao"))
-        add(OfflineCmdBean("第八项", "di ba xiang"))
-        add(OfflineCmdBean("打开第八条任务", "da kai di ba tiao ren wu"))
-        add(OfflineCmdBean("打开第八项任务", "da kai di ba xiang ren wu"))
-        add(OfflineCmdBean("处理第八条任务", "chu li di ba tiao ren wu"))
-        add(OfflineCmdBean("处理第八项任务", "chu li di ba xiang ren wu"))
-
-        add(OfflineCmdBean("查看第九条任务", "cha kan di jiu tiao ren wu"))
+
         add(OfflineCmdBean("查看第九项任务", "cha kan di jiu xiang ren wu"))
         add(OfflineCmdBean("第九个", "di jiu ge"))
-        add(OfflineCmdBean("第九条", "di jiu tiao"))
-        add(OfflineCmdBean("第九项", "di jiu xiang"))
-        add(OfflineCmdBean("打开第九条任务", "da kai di jiu tiao ren wu"))
-        add(OfflineCmdBean("打开第九项任务", "da kai di jiu xiang ren wu"))
-        add(OfflineCmdBean("处理第九条任务", "chu li di jiu tiao ren wu"))
-        add(OfflineCmdBean("处理第九项任务", "chu li di jiu xiang ren wu"))
-
-        add(OfflineCmdBean("查看第十条任务", "cha kan di shi tiao ren wu"))
+
         add(OfflineCmdBean("查看第十项任务", "cha kan di shi xiang ren wu"))
         add(OfflineCmdBean("第十个", "di shi ge"))
-        add(OfflineCmdBean("第十条", "di shi tiao"))
-        add(OfflineCmdBean("第十项", "di shi xiang"))
-        add(OfflineCmdBean("打开第十条任务", "da kai di shi tiao ren wu"))
-        add(OfflineCmdBean("打开第十项任务", "da kai di shi xiang ren wu"))
-        add(OfflineCmdBean("处理第十条任务", "chu li di shi tiao ren wu"))
-        add(OfflineCmdBean("处理第十项任务", "chu li di shi xiang ren wu"))
 
         //喷涂
         add(OfflineCmdBean("开始", "kai shi"))
-        add(OfflineCmdBean("开始拍照", "kai shi pai zhao"))
-        add(OfflineCmdBean("拍照", "pai zhao"))
         add(OfflineCmdBean("开始任务", "kai shi ren wu"))
         add(OfflineCmdBean("重拍", "chong pai"))
-        add(OfflineCmdBean("重新拍", "chong xin pai"))
-        add(OfflineCmdBean("再拍一次", "zai pai yi ci"))
         add(OfflineCmdBean("继续拍摄", "ji xu pai she"))
         add(OfflineCmdBean("人工更正结果", "ren gong geng zheng jie guo"))
-        add(OfflineCmdBean("更正结果", "geng zheng jie guo"))
         add(OfflineCmdBean("人工更正", "ren gong geng zheng"))
         add(OfflineCmdBean("更正", "geng zheng"))
         add(OfflineCmdBean("结束任务", "jie shu ren wu"))
-        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"))
         //
     }
+
+    private var service: IOfflineCmdService? = null
     @Synchronized
     fun init(){
-        LogHelper.d("init")
-        if (initialized || initializing) {
-            return
-        }
-        LogHelper.d("init111")
-        initializing = true
-        LogHelper.d("init222")
-        initExecutor.execute {
-            try {
-                val service = GlassSdk.getGlassOfflineCmdService()
-                if (service == null){
-                    LogHelper.e("OfflineCmdServiceHelper","service is null")
-                    return@execute
-                }
-                LogHelper.d("init444")
-                LogHelper.e("OfflineCmdServiceHelper","service 存在")
-                for (bean in list) {
-                    service.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
-                        override fun onVoiceTriggered() {
-                            LogHelper.d("onOfflineCmd: ${bean.text}")
-                            for (l in listenerList) {
-                                l.onOfflineCmd(bean.text)
-                            }
-                        }
-                    }))
-                }
-                LogHelper.d("init555")
-                initialized = true
-            } finally {
-                LogHelper.d("init333")
-                initializing = false
-            }
-        }
+        service = GlassSdk.getGlassOfflineCmdService()
+//        LogHelper.d("init")
+//        if (initialized || initializing) {
+//            return
+//        }
+//        LogHelper.d("init111")
+//        initializing = true
+//        LogHelper.d("init222")
+//        initExecutor.execute {
+//            try {
+//                val service = GlassSdk.getGlassOfflineCmdService()
+//                if (service == null){
+//                    LogHelper.e("OfflineCmdServiceHelper","service is null")
+//                    return@execute
+//                }
+//                LogHelper.d("init444")
+//                LogHelper.e("OfflineCmdServiceHelper","service 存在")
+//                for (bean in list) {
+//                    service.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
+//                        override fun onVoiceTriggered() {
+//                            LogHelper.d("onOfflineCmd: ${bean.text}")
+//                            for (l in listenerList) {
+//                                l.onOfflineCmd(bean.text)
+//                            }
+//                        }
+//                    }))
+//                }
+//                LogHelper.d("init555")
+//                initialized = true
+//            } finally {
+//                LogHelper.d("init333")
+//                initializing = false
+//            }
+//        }
     }
     fun addOnLineListener(listener: OfflineCmdListener){
         this.listenerList.add(listener)
@@ -209,5 +126,176 @@ object OfflineCmdServiceHelper {
         this.listenerList.remove(listener)
     }
 
+    fun addListenerList(){
+        for (bean in mutableListOf<OfflineCmdBean>().apply {
+            // 任务列表
+            add(OfflineCmdBean("下一页", "xia yi ye"))
+            add(OfflineCmdBean("上一页", "shang yi ye"))
+
+            add(OfflineCmdBean("退出", "tui chu"))
+            add(OfflineCmdBean("返回", "fan hui"))
+
+            add(OfflineCmdBean("查看第一项任务", "cha kan di yi xiang ren wu"))
+            add(OfflineCmdBean("第一个", "di yi ge"))
+
+            add(OfflineCmdBean("查看第二项任务", "cha kan di er xiang ren wu"))
+            add(OfflineCmdBean("第二个", "di er ge"))
+
+            add(OfflineCmdBean("查看第三项任务", "cha kan di san xiang ren wu"))
+            add(OfflineCmdBean("第三个", "di san ge"))
+
+            add(OfflineCmdBean("查看第四项任务", "cha kan di si xiang ren wu"))
+            add(OfflineCmdBean("第四个", "di si ge"))
+
+            add(OfflineCmdBean("查看第五项任务", "cha kan di wu xiang ren wu"))
+            add(OfflineCmdBean("第五个", "di wu ge"))
+
+            add(OfflineCmdBean("查看第六项任务", "cha kan di liu xiang ren wu"))
+            add(OfflineCmdBean("第六个", "di liu ge"))
+        }) {
+            LogHelper.d("------>>>>>>>>>--------${service!==null}")
+            service?.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
+                override fun onVoiceTriggered() {
+                    LogHelper.d("onOfflineCmd: ${bean.text}")
+                    for (l in listenerList) {
+                        l.onOfflineCmd(bean.text)
+                    }
+                }
+            }))
+        }
+    }
+    fun removeAll(){
+        service?.removeAll()
+    }
+
+    fun addListenerFo(){
+        for (bean in mutableListOf<OfflineCmdBean>().apply {
+            add(OfflineCmdBean("退出", "tui chu"))
+            add(OfflineCmdBean("返回", "fan hui"))
+        }) {
+            LogHelper.d("------>>>>>>>>>--------${service!==null}")
+            service?.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
+                override fun onVoiceTriggered() {
+                    LogHelper.d("onOfflineCmd: ${bean.text}")
+                    for (l in listenerList) {
+                        l.onOfflineCmd(bean.text)
+                    }
+                }
+            }))
+        }
+    }
+    fun addListenerInspection(){
+        for (bean in mutableListOf<OfflineCmdBean>().apply {
+            add(OfflineCmdBean("退出", "tui chu"))
+            add(OfflineCmdBean("返回", "fan hui"))
+            add(OfflineCmdBean("驳回", "bo hui"))
+            add(OfflineCmdBean("通过", "tong guo"))
+            add(OfflineCmdBean("同意", "bo hui"))
+        }) {
+            LogHelper.d("------>>>>>>>>>--------${service!==null}")
+            service?.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
+                override fun onVoiceTriggered() {
+                    LogHelper.d("onOfflineCmd: ${bean.text}")
+                    for (l in listenerList) {
+                        l.onOfflineCmd(bean.text)
+                    }
+                }
+            }))
+        }
+    }
+    fun addListenerSpraying(){
+        for (bean in mutableListOf<OfflineCmdBean>().apply {
+            add(OfflineCmdBean("退出", "tui chu"))
+            add(OfflineCmdBean("返回", "fan hui"))
+            add(OfflineCmdBean("开始任务", "kai shi ren wu"))
+        }) {
+            LogHelper.d("------>>>>>>>>>--------${service!==null}")
+            service?.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
+                override fun onVoiceTriggered() {
+                    LogHelper.d("onOfflineCmd: ${bean.text}")
+                    for (l in listenerList) {
+                        l.onOfflineCmd(bean.text)
+                    }
+                }
+            }))
+        }
+    }
+    fun addListenerSprayingFinish(){
+        for (bean in mutableListOf<OfflineCmdBean>().apply {
+            add(OfflineCmdBean("退出", "tui chu"))
+            add(OfflineCmdBean("返回", "fan hui"))
+            add(OfflineCmdBean("补充照片", "bu chong zhao pian"))
+            add(OfflineCmdBean("确认提交", "que ren ti jiao"))
+        }) {
+            LogHelper.d("------>>>>>>>>>--------${service!==null}")
+            service?.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
+                override fun onVoiceTriggered() {
+                    LogHelper.d("onOfflineCmd: ${bean.text}")
+                    for (l in listenerList) {
+                        l.onOfflineCmd(bean.text)
+                    }
+                }
+            }))
+        }
+    }
+    fun addListenerSprayingManualResulth(){
+        for (bean in mutableListOf<OfflineCmdBean>().apply {
+            add(OfflineCmdBean("退出", "tui chu"))
+            add(OfflineCmdBean("返回", "fan hui"))
+            add(OfflineCmdBean("合格", "he ge"))
+            add(OfflineCmdBean("不合格", "bu he ge"))
+            add(OfflineCmdBean("取消", "qu xiao"))
+        }) {
+            LogHelper.d("------>>>>>>>>>--------${service!==null}")
+            service?.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
+                override fun onVoiceTriggered() {
+                    LogHelper.d("onOfflineCmd: ${bean.text}")
+                    for (l in listenerList) {
+                        l.onOfflineCmd(bean.text)
+                    }
+                }
+            }))
+        }
+    }
+    fun addListenerSprayingOCR(){
+        for (bean in mutableListOf<OfflineCmdBean>().apply {
+            add(OfflineCmdBean("退出", "tui chu"))
+            add(OfflineCmdBean("返回", "fan hui"))
+            add(OfflineCmdBean("重拍", "chong pai"))
+        }) {
+            LogHelper.d("------>>>>>>>>>--------${service!==null}")
+            service?.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
+                override fun onVoiceTriggered() {
+                    LogHelper.d("onOfflineCmd: ${bean.text}")
+                    for (l in listenerList) {
+                        l.onOfflineCmd(bean.text)
+                    }
+                }
+            }))
+        }
+    }
+    fun addListenerSprayingResult(){
+        for (bean in mutableListOf<OfflineCmdBean>().apply {
+            add(OfflineCmdBean("退出", "tui chu"))
+            add(OfflineCmdBean("返回", "fan hui"))
+            add(OfflineCmdBean("重拍", "chong pai"))
+            add(OfflineCmdBean("继续拍摄", "ji xu pai she"))
+            add(OfflineCmdBean("人工更正结果", "ren gong geng zheng jie guo"))
+            add(OfflineCmdBean("更正", "geng zheng"))
+            add(OfflineCmdBean("结束任务", "jie shu ren wu"))
+        }) {
+            LogHelper.d("------>>>>>>>>>--------${service!==null}")
+            service?.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
+                override fun onVoiceTriggered() {
+                    LogHelper.d("onOfflineCmd: ${bean.text}")
+                    for (l in listenerList) {
+                        l.onOfflineCmd(bean.text)
+                    }
+                }
+            }))
+        }
+    }
+
+
 
 }

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

@@ -25,6 +25,7 @@ class FoActivity : BaseActivity<ActivityFoBinding>() {
     }
     override fun initData() {
         super.initData()
+        OfflineCmdServiceHelper.addListenerFo()
         OfflineCmdServiceHelper.addOnLineListener(listener)
         val html = "<b>加粗</b>  <br><br>换行 <br><br><h1>h1</h1>"
         binding.content.text = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY)
@@ -33,6 +34,7 @@ class FoActivity : BaseActivity<ActivityFoBinding>() {
 
     override fun onPause() {
         super.onPause()
+        OfflineCmdServiceHelper.removeAll()
         OfflineCmdServiceHelper.removeOnLineListener(listener)
     }
 }

+ 5 - 0
app/src/main/java/com/nova/brain/glass/ui/InspectionActivity.kt

@@ -38,6 +38,7 @@ class InspectionActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM
     override fun initData() {
         super.initData()
         window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
+        OfflineCmdServiceHelper.addListenerInspection()
     }
 
     override fun onResume() {
@@ -50,6 +51,10 @@ class InspectionActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM
         OfflineCmdServiceHelper.removeOnLineListener(listener)
     }
 
+    override fun onDestroy() {
+        super.onDestroy()
+        OfflineCmdServiceHelper.removeAll()
+    }
     private val adapter = object : CommonPagedAdapter<ItemItem>(R.layout.item_item) {
         override fun convert(holder: ViewHolder, item: ItemItem, position: Int) {
             holder

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

@@ -37,6 +37,7 @@ class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, Ac
     }
     override fun initData() {
         super.initData()
+        OfflineCmdServiceHelper.addListenerInspection()
         window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
         OfflineCmdServiceHelper.addOnLineListener(listener)
     }
@@ -44,6 +45,7 @@ class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, Ac
     override fun onDestroy() {
         super.onDestroy()
         OfflineCmdServiceHelper.removeOnLineListener(listener)
+        OfflineCmdServiceHelper.removeAll()
     }
 
     private val adapter = object : CommonPagedAdapter<ItemItem>(R.layout.item_item) {

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

@@ -106,12 +106,14 @@ class SprayingActivity :
         super.onResume()
         GlassMediaServiceHelper.addPhotoCallback(mPhotoFileCallback)
         OfflineCmdServiceHelper.addOnLineListener(listener)
+        OfflineCmdServiceHelper.addListenerSpraying()
     }
 
     override fun onPause() {
         super.onPause()
         OfflineCmdServiceHelper.removeOnLineListener(listener)
         GlassMediaServiceHelper.removePhotoCallback(mPhotoFileCallback)
+        OfflineCmdServiceHelper.removeAll()
     }
 
     private var isPhoto = false

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

@@ -41,6 +41,7 @@ class SprayingFinishActivity :
     override fun initData() {
         super.initData()
         OfflineCmdServiceHelper.addOnLineListener(listener)
+        OfflineCmdServiceHelper.addListenerSprayingFinish()
         renderPhotos()
     }
 
@@ -50,6 +51,7 @@ class SprayingFinishActivity :
         binding.photo2.setImageDrawable(null)
         binding.photo3.setImageDrawable(null)
         OfflineCmdServiceHelper.removeOnLineListener(listener)
+        OfflineCmdServiceHelper.removeAll()
     }
 
     private fun renderPhotos() {

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

@@ -35,11 +35,13 @@ class SprayingManualResultActivity :
 
     override fun initData() {
         super.initData()
+        OfflineCmdServiceHelper.addListenerSprayingManualResulth()
         OfflineCmdServiceHelper.addOnLineListener(listener)
     }
 
     override fun onDestroy() {
         super.onDestroy()
+        OfflineCmdServiceHelper.removeAll()
         OfflineCmdServiceHelper.removeOnLineListener(listener)
     }
 

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

@@ -109,6 +109,7 @@ class SprayingOCRActivity :
     override fun onResume() {
         super.onResume()
 
+        OfflineCmdServiceHelper.addListenerSprayingOCR()
         OfflineCmdServiceHelper.addOnLineListener(listener)
         GlassMediaServiceHelper.addPhotoCallback(mPhotoFileCallback)
     }
@@ -117,6 +118,7 @@ class SprayingOCRActivity :
         resultCountdown?.cancel()
         OfflineCmdServiceHelper.removeOnLineListener(listener)
         GlassMediaServiceHelper.removePhotoCallback(mPhotoFileCallback)
+        OfflineCmdServiceHelper.removeAll()
     }
 
     override fun onDestroy() {

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

@@ -186,12 +186,14 @@ class SprayingResultActivity :
 
     override fun onResume() {
         super.onResume()
+        OfflineCmdServiceHelper.addListenerSprayingResult()
         OfflineCmdServiceHelper.addOnLineListener(listener)
         GlassMediaServiceHelper.addPhotoCallback(mPhotoFileCallback)
     }
     override fun onPause() {
         super.onPause()
         OfflineCmdServiceHelper.removeOnLineListener(listener)
+        OfflineCmdServiceHelper.removeAll()
         GlassMediaServiceHelper.removePhotoCallback(mPhotoFileCallback)
     }
     override fun onDestroy() {

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

@@ -172,12 +172,14 @@ class TaskListActivity :
 
     override fun onResume() {
         super.onResume()
+        OfflineCmdServiceHelper.addListenerList()
         LogHelper.d(">>>>>>>>>>>>--------------------")
         OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener)
     }
 
     override fun onPause() {
         super.onPause()
+        OfflineCmdServiceHelper.removeAll()
         OfflineCmdServiceHelper.removeOnLineListener(offlineCmdListener)
     }
 

+ 16 - 0
app/src/main/res/layout/activity_task_list.xml

@@ -67,5 +67,21 @@
             android:text="下一页"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/baseRefreshLayout" />
+
+        <TextView
+            android:id="@+id/hint"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="28dp"
+            android:layout_marginEnd="28dp"
+            android:layout_marginBottom="56dp"
+            android:gravity="center"
+            android:lineSpacingExtra="6dp"
+            android:text="滑动选择某一条后单击可查看对应任务&#10;语音输入“第一条”或“查看第几项任务”,可查看对应任务&#10;单击或语音输入“返回”返回上级页面"
+            android:textColor="#4AFE59"
+            android:textSize="14sp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent" />
     </androidx.constraintlayout.widget.ConstraintLayout>
 </layout>