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)")
}
}
}