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" /> +