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