From 4983c4c1adac3124664fcb2a440a82c9194d2008 Mon Sep 17 00:00:00 2001
From: tanjianbin <632190820@qq.com>
Date: Sat, 28 Mar 2026 10:07:53 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=B8=85=E9=99=A4?=
=?UTF-8?q?=E5=BD=93=E5=89=8D=E4=BB=BB=E5=8A=A1=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
在设置页面添加清除任务按钮,点击后可清空当前任务状态。同时,在 MQTT 收到任何指令时也自动清空任务,确保开门等基础行为不受任务状态影响。新增相关字符串资源并处理界面回调。
---
.../lzwcai_terminal_temi/MainActivity.kt | 17 ++++++++++++++++-
.../example/lzwcai_terminal_temi/MqttManager.kt | 4 ++++
.../lzwcai_terminal_temi/SettingsActivity.kt | 12 ++++++++++++
.../main/res/layout-land/activity_settings.xml | 9 +++++++++
app/src/main/res/layout/activity_settings.xml | 9 +++++++++
app/src/main/res/values/strings.xml | 2 ++
6 files changed, 52 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/com/example/lzwcai_terminal_temi/MainActivity.kt b/app/src/main/java/com/example/lzwcai_terminal_temi/MainActivity.kt
index 98cc9f3..de90eca 100644
--- a/app/src/main/java/com/example/lzwcai_terminal_temi/MainActivity.kt
+++ b/app/src/main/java/com/example/lzwcai_terminal_temi/MainActivity.kt
@@ -62,6 +62,21 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
private lateinit var permissionManager: PermissionManager
private var liveKitManager: LiveKitManager? = null
private var isLiveKitConnected = false
+
+ companion object {
+ private const val REQUEST_CLEAR_TASK = 1001
+ }
+
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ super.onActivityResult(requestCode, resultCode, data)
+ if (requestCode == REQUEST_CLEAR_TASK && resultCode == RESULT_OK) {
+ data?.getBooleanExtra("clear_task", false)?.let { clearTask ->
+ if (clearTask) {
+ setCurrentTask("")
+ }
+ }
+ }
+ }
private var isMqttConnected = false
private var lastArrivalLocation: String? = null
@@ -144,7 +159,7 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
lastArrivalLocation = prefs.getString("current_location", null)
}
binding.btnSettings.setOnClickListener {
- startActivity(Intent(this, SettingsActivity::class.java))
+ startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_CLEAR_TASK)
}
taskController = TaskController(
diff --git a/app/src/main/java/com/example/lzwcai_terminal_temi/MqttManager.kt b/app/src/main/java/com/example/lzwcai_terminal_temi/MqttManager.kt
index c519c8c..275dda4 100644
--- a/app/src/main/java/com/example/lzwcai_terminal_temi/MqttManager.kt
+++ b/app/src/main/java/com/example/lzwcai_terminal_temi/MqttManager.kt
@@ -268,6 +268,10 @@ class MqttManager(
}
private fun handleJsonCommand(obj: JSONObject) {
+ // 收到任何 MQTT 指令时清空当前任务,确保开门等基础行为不受影响
+ scope.launch(Dispatchers.Main) {
+ (context as? MainActivity)?.setCurrentTask("")
+ }
val action = obj.optString("action", obj.optString("cmd", obj.optString("type", ""))).lowercase()
when (action) {
"recharge" -> {
diff --git a/app/src/main/java/com/example/lzwcai_terminal_temi/SettingsActivity.kt b/app/src/main/java/com/example/lzwcai_terminal_temi/SettingsActivity.kt
index b8b943c..8a11c45 100644
--- a/app/src/main/java/com/example/lzwcai_terminal_temi/SettingsActivity.kt
+++ b/app/src/main/java/com/example/lzwcai_terminal_temi/SettingsActivity.kt
@@ -110,6 +110,7 @@ class SettingsActivity : AppCompatActivity() {
setupRestartButton()
setupSpecialStateSwitch()
setupLocationSelector()
+ setupClearTaskButton()
}
override fun onResume() {
@@ -159,6 +160,17 @@ class SettingsActivity : AppCompatActivity() {
}
}
+ private fun setupClearTaskButton() {
+ binding.btnClearTask.setOnClickListener {
+ val resultIntent = Intent().apply {
+ putExtra("clear_task", true)
+ }
+ setResult(RESULT_OK, resultIntent)
+ Toast.makeText(this, getString(R.string.msg_task_cleared), Toast.LENGTH_SHORT).show()
+ finish()
+ }
+ }
+
private fun startRestartAnimation() {
binding.restartProgressBar.visibility = View.VISIBLE
restartAnimator = ValueAnimator.ofInt(0, 100).apply {
diff --git a/app/src/main/res/layout-land/activity_settings.xml b/app/src/main/res/layout-land/activity_settings.xml
index a2bbce4..f78dd9f 100644
--- a/app/src/main/res/layout-land/activity_settings.xml
+++ b/app/src/main/res/layout-land/activity_settings.xml
@@ -378,6 +378,15 @@
android:visibility="invisible" />
+
+
+
+
LiveKit 已断开
LiveKit 连接失败
需要麦克风/摄像头权限
+ 清除当前任务
+ 当前任务已清除