From 97276904ff312396623bf97794fa82c25241d632 Mon Sep 17 00:00:00 2001 From: "844143714@qq,com" <844143714@qq,com> Date: Mon, 27 Apr 2026 23:02:26 +0800 Subject: [PATCH] =?UTF-8?q?=E7=95=8C=E9=9D=A2=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/print_demo.html | 24 ++++++++++++++++++- .../com/stand/standapp/AndroidInterface.kt | 2 ++ .../com/stand/standapp/utils/GpioManager.kt | 5 ++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/src/main/assets/print_demo.html b/app/src/main/assets/print_demo.html index 34adcc1..faafd8f 100644 --- a/app/src/main/assets/print_demo.html +++ b/app/src/main/assets/print_demo.html @@ -158,7 +158,10 @@
PTT 业务功能测试 - PTT 未登录 +
+ + PTT 未登录 +
@@ -636,6 +639,25 @@ pttResult.insertBefore(item, pttResult.firstChild); } + // 更新 PTT 通话状态 (由 Android 原生同步调用) + window.updatePttTalkStatus = function(isTalking) { + var statusNode = document.getElementById('ptt-talk-status'); + if (isTalking) { + statusNode.style.display = 'inline-block'; + statusNode.style.background = '#fee2e2'; + statusNode.style.color = '#ef4444'; + statusNode.innerText = '● 正在通话'; + + // 如果 UI 按钮还没更新,强制更新一次 + pttBtn.style.background = "#b91c1c"; + pttBtn.innerText = "正在通话..."; + } else { + statusNode.style.display = 'none'; + pttBtn.style.background = "#ef4444"; + pttBtn.innerText = "长按对讲 (PTT)"; + } + }; + // PTT 登录成功回调 (由 Android 调用) function onPttLoginSuccess() { pttStatusTag.innerText = "PTT 已登录"; diff --git a/app/src/main/java/com/stand/standapp/AndroidInterface.kt b/app/src/main/java/com/stand/standapp/AndroidInterface.kt index 689b7b1..9b703dd 100644 --- a/app/src/main/java/com/stand/standapp/AndroidInterface.kt +++ b/app/src/main/java/com/stand/standapp/AndroidInterface.kt @@ -30,6 +30,7 @@ class AndroidInterface(private val activity: MainActivity) { lastSpeakTime = System.currentTimeMillis() SendAtUtil.speakPlay() Timber.tag("PTT").d("Speak Play") + MainActivity.executeJs("updatePttTalkStatus(true)") } } @@ -60,6 +61,7 @@ class AndroidInterface(private val activity: MainActivity) { isSpeaking = false SendAtUtil.speakRelease() Timber.tag("PTT").d("Real Speak Release") + MainActivity.executeJs("updatePttTalkStatus(false)") } } diff --git a/app/src/main/java/com/stand/standapp/utils/GpioManager.kt b/app/src/main/java/com/stand/standapp/utils/GpioManager.kt index b4472ee..6ba77c3 100644 --- a/app/src/main/java/com/stand/standapp/utils/GpioManager.kt +++ b/app/src/main/java/com/stand/standapp/utils/GpioManager.kt @@ -71,7 +71,10 @@ object GpioManager { lastSpeakTime = System.currentTimeMillis() com.example.kingway.ptt.SendAtUtil.speakPlay() Timber.tag("GPIO").d("PTT Speak Play (Hardware)") + // 统一使用 updatePttTalkStatus 更新 UI + MainActivity.executeJs("updatePttTalkStatus(true)") } + } else { // 硬件松开 PTT if (isSpeaking) { @@ -97,6 +100,8 @@ object GpioManager { isSpeaking = false com.example.kingway.ptt.SendAtUtil.speakRelease() Timber.tag("GPIO").d("PTT Speak Release (Hardware)") + // 统一使用 updatePttTalkStatus 更新 UI + MainActivity.executeJs("updatePttTalkStatus(false)") } } }