|
|
@@ -2,6 +2,8 @@ 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
|
|
|
@@ -10,7 +12,6 @@ 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
|
|
|
-import kotlin.jvm.java
|
|
|
|
|
|
class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
|
|
|
|
|
@@ -19,42 +20,59 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
|
|
|
|
|
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).get(WelcomeVM::class.java)
|
|
|
+ vm = ViewModelProvider(this)[WelcomeVM::class.java]
|
|
|
window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
|
|
binding.tv.setOnClickListener {
|
|
|
startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
|
|
|
}
|
|
|
- binding.btnGet.setOnClickListener { vm.demoGet() }
|
|
|
- binding.btnPost.setOnClickListener { vm.demoPost() }
|
|
|
- binding.md.setOnClickListener {
|
|
|
- binding.md.text = "请求中"
|
|
|
- binding.md.isClickable = false
|
|
|
- IntentRecognizeHelper.recognize(
|
|
|
- context = this,
|
|
|
- text = "当前阶段,最紧急的任务是什么?",
|
|
|
- onSuccess = { action ->
|
|
|
- if (action.name == "goToDecisionCenter") {
|
|
|
- startActivity(
|
|
|
- Intent(this, ChatActivity::class.java)
|
|
|
- .putExtra("question", action.params.question)
|
|
|
- )
|
|
|
- }
|
|
|
- },
|
|
|
- onComplete = {
|
|
|
- binding.md.text = "决策中心"
|
|
|
- binding.md.isClickable = true
|
|
|
- }
|
|
|
- )
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
override fun initData() {
|
|
|
super.initData()
|
|
|
- vm.result.observe(this) { text ->
|
|
|
- binding.tvResult.text = text
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 {
|
|
|
@@ -64,6 +82,9 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
|
|
"任务列表", "查看任务", "查看任务列表" -> {
|
|
|
startActivity(Intent(this@WelcomeActivity, TaskListActivity::class.java))
|
|
|
}
|
|
|
+ "决策中心", "紧急任务", "当前任务" -> {
|
|
|
+ triggerRecognize()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -72,13 +93,15 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
|
|
override fun onResume() {
|
|
|
super.onResume()
|
|
|
OfflineCmdServiceHelper.addOnLineListener(offlineCmdListener)
|
|
|
- binding.md.text = "决策中心"
|
|
|
- binding.md.isClickable = true
|
|
|
+ OfflineCmdServiceHelper.addListenerWelcome()
|
|
|
+ stopDotsAnim() // 从 ChatActivity 返回时恢复原文
|
|
|
}
|
|
|
|
|
|
override fun onPause() {
|
|
|
super.onPause()
|
|
|
OfflineCmdServiceHelper.removeOnLineListener(offlineCmdListener)
|
|
|
+ OfflineCmdServiceHelper.removeListenerWelcome()
|
|
|
+ dotsHandler.removeCallbacks(dotsRunnable)
|
|
|
}
|
|
|
|
|
|
override fun onDestroy() {
|