feat: 添加清除当前任务功能
在设置页面添加清除任务按钮,点击后可清空当前任务状态。同时,在 MQTT 收到任何指令时也自动清空任务,确保开门等基础行为不受任务状态影响。新增相关字符串资源并处理界面回调。
This commit is contained in:
@@ -62,6 +62,21 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
|
|||||||
private lateinit var permissionManager: PermissionManager
|
private lateinit var permissionManager: PermissionManager
|
||||||
private var liveKitManager: LiveKitManager? = null
|
private var liveKitManager: LiveKitManager? = null
|
||||||
private var isLiveKitConnected = false
|
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 isMqttConnected = false
|
||||||
|
|
||||||
private var lastArrivalLocation: String? = null
|
private var lastArrivalLocation: String? = null
|
||||||
@@ -144,7 +159,7 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG
|
|||||||
lastArrivalLocation = prefs.getString("current_location", null)
|
lastArrivalLocation = prefs.getString("current_location", null)
|
||||||
}
|
}
|
||||||
binding.btnSettings.setOnClickListener {
|
binding.btnSettings.setOnClickListener {
|
||||||
startActivity(Intent(this, SettingsActivity::class.java))
|
startActivityForResult(Intent(this, SettingsActivity::class.java), REQUEST_CLEAR_TASK)
|
||||||
}
|
}
|
||||||
|
|
||||||
taskController = TaskController(
|
taskController = TaskController(
|
||||||
|
|||||||
@@ -268,6 +268,10 @@ class MqttManager(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun handleJsonCommand(obj: JSONObject) {
|
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()
|
val action = obj.optString("action", obj.optString("cmd", obj.optString("type", ""))).lowercase()
|
||||||
when (action) {
|
when (action) {
|
||||||
"recharge" -> {
|
"recharge" -> {
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ class SettingsActivity : AppCompatActivity() {
|
|||||||
setupRestartButton()
|
setupRestartButton()
|
||||||
setupSpecialStateSwitch()
|
setupSpecialStateSwitch()
|
||||||
setupLocationSelector()
|
setupLocationSelector()
|
||||||
|
setupClearTaskButton()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
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() {
|
private fun startRestartAnimation() {
|
||||||
binding.restartProgressBar.visibility = View.VISIBLE
|
binding.restartProgressBar.visibility = View.VISIBLE
|
||||||
restartAnimator = ValueAnimator.ofInt(0, 100).apply {
|
restartAnimator = ValueAnimator.ofInt(0, 100).apply {
|
||||||
|
|||||||
@@ -378,6 +378,15 @@
|
|||||||
android:visibility="invisible" />
|
android:visibility="invisible" />
|
||||||
</FrameLayout>
|
</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
|
<TextView
|
||||||
android:id="@+id/tvVersion"
|
android:id="@+id/tvVersion"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
@@ -362,6 +362,15 @@
|
|||||||
android:visibility="invisible" />
|
android:visibility="invisible" />
|
||||||
</FrameLayout>
|
</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
|
<TextView
|
||||||
android:id="@+id/tvVersion"
|
android:id="@+id/tvVersion"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
@@ -35,4 +35,6 @@
|
|||||||
<string name="livekit_status_disconnected">LiveKit 已断开</string>
|
<string name="livekit_status_disconnected">LiveKit 已断开</string>
|
||||||
<string name="livekit_status_failed">LiveKit 连接失败</string>
|
<string name="livekit_status_failed">LiveKit 连接失败</string>
|
||||||
<string name="livekit_status_permission">需要麦克风/摄像头权限</string>
|
<string name="livekit_status_permission">需要麦克风/摄像头权限</string>
|
||||||
|
<string name="btn_clear_task">清除当前任务</string>
|
||||||
|
<string name="msg_task_cleared">当前任务已清除</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
Reference in New Issue
Block a user