feat: 添加清除当前任务功能
在设置页面添加清除任务按钮,点击后可清空当前任务状态。同时,在 MQTT 收到任何指令时也自动清空任务,确保开门等基础行为不受任务状态影响。新增相关字符串资源并处理界面回调。
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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" -> {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -378,6 +378,15 @@
|
||||
android:visibility="invisible" />
|
||||
</FrameLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnClearTask"
|
||||
style="@style/Widget.App.Button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="72dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:textSize="20sp"
|
||||
android:text="@string/btn_clear_task" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvVersion"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -362,6 +362,15 @@
|
||||
android:visibility="invisible" />
|
||||
</FrameLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnClearTask"
|
||||
style="@style/Widget.App.Button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="72dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:textSize="20sp"
|
||||
android:text="@string/btn_clear_task" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvVersion"
|
||||
android:layout_width="wrap_content"
|
||||
|
||||
@@ -35,4 +35,6 @@
|
||||
<string name="livekit_status_disconnected">LiveKit 已断开</string>
|
||||
<string name="livekit_status_failed">LiveKit 连接失败</string>
|
||||
<string name="livekit_status_permission">需要麦克风/摄像头权限</string>
|
||||
<string name="btn_clear_task">清除当前任务</string>
|
||||
<string name="msg_task_cleared">当前任务已清除</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user