Browse Source

唤醒不现实文本 bug修复

weicu
liwei1dao 7 months ago
parent
commit
7686e9bf00
  1. 11
      lib/modules/mobile_elf/controllers/mobile_elf_controller.dart

11
lib/modules/mobile_elf/controllers/mobile_elf_controller.dart

@ -52,6 +52,8 @@ class MobileElfController extends GetxController {
bool _callStarting = false; // 防止并发 startCall
// PTT 松开后仍有异步事件待处理(recognition_result / assistant_response / tts)
bool _pttResultPending = false;
// BLE/AI 唤醒触发的会话(非通话、非PTT模式下的唤醒)
bool _bleWakeupActive = false;
final _storage = GetStorage();
// ═══════════════════════════════════════════════════════════════════════════
@ -118,10 +120,11 @@ class MobileElfController extends GetxController {
Logger.info('$_tag event: ${event.type} data: ${event.data}');
// PTT 松开后 pttRecording=false,但 fin_result/assistant_response/tts 仍异步到达
// 用 _pttResultPending 保持会话激活,直到 ttsCompleted/error 才关闭
final sessionActive = _inCallMode || pttRecording.value || _pttResultPending;
final sessionActive = _inCallMode || pttRecording.value || _pttResultPending || _bleWakeupActive;
switch (event.type) {
case AgentServiceEventType.recognitionStarted:
if (!sessionActive) break;
// BLE/AI 唤醒:即使没有主动会话也激活
if (!sessionActive) _bleWakeupActive = true;
status.value = MobileElfStatus.recording;
realtimeText.value = '';
micAlive.value = true;
@ -168,6 +171,7 @@ class MobileElfController extends GetxController {
case AgentServiceEventType.ttsCompleted:
if (!sessionActive) break;
_pttResultPending = false; // PTT 一轮结束
_bleWakeupActive = false; // BLE 唤醒一轮结束
if (_inCallMode) {
status.value = MobileElfStatus.recording;
micAlive.value = true;
@ -181,6 +185,7 @@ class MobileElfController extends GetxController {
case AgentServiceEventType.ttsStopped:
if (!sessionActive) break;
_pttResultPending = false; // TTS 被打断也视为结束
_bleWakeupActive = false;
status.value = _inCallMode ? MobileElfStatus.recording : MobileElfStatus.idle;
micAlive.value = _inCallMode;
break;
@ -188,6 +193,7 @@ class MobileElfController extends GetxController {
case AgentServiceEventType.error:
if (!sessionActive) break;
_pttResultPending = false; // 出错时结束等待
_bleWakeupActive = false;
final msg = event.data['message']?.toString() ?? '未知错误';
status.value = MobileElfStatus.error;
errorMsg.value = msg;
@ -260,6 +266,7 @@ class MobileElfController extends GetxController {
_callStarting = false;
_inCallMode = false;
_pttResultPending = false; // 强制结束所有等待
_bleWakeupActive = false;
inCall.value = false;
_callTimer?.cancel();
_callTimer = null;

Loading…
Cancel
Save