From f89bce552a04be7a677aa5ddc10cb3f36da6bac7 Mon Sep 17 00:00:00 2001 From: tanjianbin <632190820@qq.com> Date: Tue, 21 Apr 2026 13:15:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=BE=85?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=BD=8D=E7=BD=AE=E6=AF=94=E8=BE=83=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=B9=B6=E7=A1=AC=E7=BC=96=E7=A0=81=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除从 MQTT 消息动态获取接待位置,改为硬编码为"前台"。引入位置字符串规范化函数,用于统一比较接待任务中的位置信息,避免因空格、大小写或特殊字符导致的匹配失败。同时调整问候语触发逻辑,在接待任务期间即使未到达指定位置也禁用默认问候。 --- .../lzwcai_terminal_temi/MainActivity.kt | 7 +++++-- .../example/lzwcai_terminal_temi/MqttManager.kt | 2 +- .../lzwcai_terminal_temi/TaskController.kt | 17 +++++++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) 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 e888420..5616e66 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 @@ -415,7 +415,8 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG taskController.handlePatrolArrival(location) } if (taskController.currentTask == "reception" && - location.equals(taskController.getReceptionLocation(), ignoreCase = true) + robotEventHandler.normalizeLocation(location) == + robotEventHandler.normalizeLocation(taskController.getReceptionLocation()) ) { captureReceptionAnchorYawIfNeeded() taskController.startTaskWaitTimeout() @@ -785,7 +786,9 @@ class MainActivity : AppCompatActivity(), OnRobotReadyListener, TtsListener, OnG if (taskController.currentTask != "reception") { return } - val atReceptionLocation = lastArrivalLocation?.equals(taskController.getReceptionLocation(), ignoreCase = true) == true + val atReceptionLocation = + robotEventHandler.normalizeLocation(lastArrivalLocation) == + robotEventHandler.normalizeLocation(taskController.getReceptionLocation()) if (!atReceptionLocation) { return } 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 fc6b58f..e62b709 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 @@ -425,7 +425,7 @@ class MqttManager( } "reception" -> { speak("接到接待任务", "zh") - val location = obj.optString("location", "前台").trim() + val location = "前台" val text = obj.optString("text", "你是我要接待的贵宾吗?").trim() val destination = obj.optString("destination", "会议室").trim() scope.launch(Dispatchers.Main) { diff --git a/app/src/main/java/com/example/lzwcai_terminal_temi/TaskController.kt b/app/src/main/java/com/example/lzwcai_terminal_temi/TaskController.kt index 34eb8dc..688e414 100644 --- a/app/src/main/java/com/example/lzwcai_terminal_temi/TaskController.kt +++ b/app/src/main/java/com/example/lzwcai_terminal_temi/TaskController.kt @@ -15,6 +15,15 @@ class TaskController( private val setEmoji: (AnimatedEmojiView.Expression) -> Unit, private val setReceptionButtonVisible: (Boolean) -> Unit ) { + private fun normalizeLocation(value: String?): String { + return value.orEmpty() + .trim() + .lowercase() + .replace(" ", "") + .replace("_", "") + .replace("-", "") + } + var currentTask: String = "" private set @@ -185,11 +194,11 @@ class TaskController( return true } if (currentTask == "reception") { - val isAtReceptionLocation = getLastArrivalLocation()?.trim() - ?.equals(receptionLocation, ignoreCase = true) == true + val isAtReceptionLocation = + normalizeLocation(getLastArrivalLocation()) == normalizeLocation(receptionLocation) if (!isAtReceptionLocation) { - // Not at reception spot yet, let upper layer continue default behavior. - return false + // Keep default greeting disabled during reception even before arriving at spot. + return true } when (state) { DETECTED -> {