| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package com.nova.brain.glass.ui
- import android.content.Intent
- import android.os.Bundle
- import android.os.Handler
- import android.os.Looper
- import androidx.lifecycle.ViewModelProvider
- import com.nova.brain.glass.R
- import com.nova.brain.glass.databinding.ActivityWelcomeBinding
- import com.nova.brain.glass.helper.IntentRecognizeHelper
- import com.nova.brain.glass.helper.OfflineCmdListener
- import com.nova.brain.glass.helper.OfflineCmdServiceHelper
- import com.nova.brain.glass.viewmodel.WelcomeVM
- import com.xuqm.base.ui.BaseActivity
- class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
- override fun getLayoutId(): Int = R.layout.activity_welcome
- override fun fullscreen(): Boolean = true
- private lateinit var vm: WelcomeVM
- // 点动画
- private val tvOriginalText = "您可以说:Nova,我的任务有哪些?"
- private val dotsHandler = Handler(Looper.getMainLooper())
- private var dotCount = 0
- private val dotsRunnable = object : Runnable {
- override fun run() {
- dotCount = (dotCount % 3) + 1
- binding.tv.text = "正在识别中${"·".repeat(dotCount)}"
- dotsHandler.postDelayed(this, 500)
- }
- }
- private fun startDotsAnim() {
- dotCount = 0
- dotsHandler.removeCallbacks(dotsRunnable)
- dotsHandler.post(dotsRunnable)
- }
- private fun stopDotsAnim() {
- dotsHandler.removeCallbacks(dotsRunnable)
- binding.tv.text = tvOriginalText
- }
- override fun initView(savedInstanceState: Bundle?) {
- super.initView(savedInstanceState)
- vm = ViewModelProvider(this)[WelcomeVM::class.java]
- window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
- binding.tv.setOnClickListener {
- triggerRecognize()
- }
- }
- override fun initData() {
- super.initData()
- }
- private fun triggerRecognize() {
- startDotsAnim()
- IntentRecognizeHelper.recognize(
- context = this,
- text = "当前阶段,最紧急的任务是什么?",
- onSuccess = { action ->
- if (action.name == "goToDecisionCenter") {
- startActivity(
- Intent(this, ChatActivity::class.java)
- .putExtra("question", action.params.question)
- )
- }
- },
- onComplete = {
- stopDotsAnim()
- }
- )
- }
- private val offlineCmdListener = object : OfflineCmdListener {
- override fun onOfflineCmd(cmd: String) {
- runOnUiThread {
- when (cmd) {
- "任务列表", "查看任务", "查看任务列表" -> {
- startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
- }
- "决策中心", "紧急任务", "当前任务" -> {
- triggerRecognize()
- }
- }
- }
- }
- }
- override fun onResume() {
- super.onResume()
- OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener)
- OfflineCmdServiceHelper.addListenerWelcome()
- stopDotsAnim() // 从 ChatActivity 返回时恢复原文
- }
- override fun onPause() {
- super.onPause()
- OfflineCmdServiceHelper.removeOnLineListener(offlineCmdListener)
- OfflineCmdServiceHelper.removeListenerWelcome()
- dotsHandler.removeCallbacks(dotsRunnable)
- }
- override fun onDestroy() {
- super.onDestroy()
- window.clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
- }
- }
|