feat(glass): 添加语音控制翻页功能和页面跳转定时器

- 在 OfflineCmdServiceHelper 中添加上一页、查看上一页、继续上一页语音命令
- 优化语音回调逻辑,使用服务实例避免空指针并添加调试日志
- 在 TaskListActivity 中实现上下翻页的滚动定位功能
- 添加 LinearLayoutManager 导入和 LogHelper 导入
- 在 WelcomeActivity 中移除硬编码语音命令,使用帮助类统一管理
- 添加 3 秒后自动跳转到 MainActivity 的定时器功能
这个提交包含在:
徐勤民 2026-04-14 14:12:02 +08:00
父节点 07019fc00d
当前提交 23d51ec89d
共有 3 个文件被更改,包括 34 次插入20 次删除

查看文件

@ -22,6 +22,9 @@ object OfflineCmdServiceHelper {
add(OfflineCmdBean("查看下一页", "cha kan xia yi ye"))
add(OfflineCmdBean("继续翻页", "ji xu fan ye"))
add(OfflineCmdBean("继续下一页", "ji xu xia yi ye"))
add(OfflineCmdBean("上一页", "shang yi ye"))
add(OfflineCmdBean("查看上一页", "cha kan shang yi ye"))
add(OfflineCmdBean("继续上一页", "ji xu shang yi ye"))
}
fun init(){
val service = GlassSdk.getGlassOfflineCmdService()
@ -31,8 +34,9 @@ object OfflineCmdServiceHelper {
}
LogHelper.e("OfflineCmdServiceHelper","service 存在")
for (bean in list) {
GlassSdk.getGlassOfflineCmdService()?.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
service.add(VoiceAction(bean.text, bean.pinyin, object : IVoiceCallback.Stub() {
override fun onVoiceTriggered() {
LogHelper.d("onOfflineCmd: ${bean.text}")
listener?.onOfflineCmd(bean.text)
}
}))

查看文件

@ -11,6 +11,8 @@ import com.xuqm.base.adapter.BasePagedAdapter
import com.xuqm.base.adapter.CommonPagedAdapter
import com.xuqm.base.adapter.ViewHolder
import com.xuqm.base.common.ToolsHelper
import androidx.recyclerview.widget.LinearLayoutManager
import com.xuqm.base.common.LogHelper
import com.xuqm.base.ui.BaseListFormLayoutActivity
class TaskListActivity :
@ -24,7 +26,28 @@ class TaskListActivity :
override fun onOfflineCmd(cmd: String) {
when (cmd) {
"下一页", "翻页", "查看下一页", "继续翻页", "继续下一页" -> {
binding.baseRecyclerView
val layoutManager = binding.baseRecyclerView.layoutManager as? LinearLayoutManager
if (layoutManager != null) {
val lastVisible = layoutManager.findLastVisibleItemPosition()
val nextPosition = lastVisible + 1
if (nextPosition < adapter.itemCount) {
layoutManager.scrollToPositionWithOffset(nextPosition, 0)
} else {
ToolsHelper.showMessage("没有下一页了")
}
}
}
"上一页", "查看上一页", "继续上一页" -> {
val layoutManager = binding.baseRecyclerView.layoutManager as? LinearLayoutManager
if (layoutManager != null) {
val lastVisible = layoutManager.findLastVisibleItemPosition()
val nextPosition = lastVisible + 1
if (nextPosition < adapter.itemCount) {
layoutManager.scrollToPositionWithOffset(nextPosition, 0)
} else {
ToolsHelper.showMessage("没有下一页了")
}
}
}
}
}

查看文件

@ -11,6 +11,8 @@ 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.xuqm.base.ui.BaseActivity
import java.util.Timer
import kotlin.concurrent.schedule
class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
@ -19,24 +21,6 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
override fun initView(savedInstanceState: Bundle?) {
super.initView(savedInstanceState)
//
val qtVoiceAction = VoiceAction("任务列表", "ren wu lie biao", object : IVoiceCallback.Stub() {
override fun onVoiceTriggered() {
startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
}
})
val qtVoiceAction1 = VoiceAction("查看任务", "cha kan ren wu", object : IVoiceCallback.Stub() {
override fun onVoiceTriggered() {
startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
}
})
val qtVoiceAction2 = VoiceAction("查看任务列表", "cha kan ren wu lie biao", object : IVoiceCallback.Stub() {
override fun onVoiceTriggered() {
startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
}
})
GlassSdk.getGlassOfflineCmdService()?.addAll(listOf(qtVoiceAction, qtVoiceAction1, qtVoiceAction2))
OfflineCmdServiceHelper.setOnLineListener(object : OfflineCmdListener {
override fun onOfflineCmd(cmd: String) {
when (cmd) {
@ -46,6 +30,9 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
}
}
})
Timer().schedule(3000) {
startActivity(Intent(this@WelcomeActivity, MainActivity::class.java))
}
}