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 连接失败
需要麦克风/摄像头权限
+ 清除当前任务
+ 当前任务已清除