feat: 新增语音唤醒

唤醒的逻辑跟长按的逻辑不一样,不能像之前那样长按图标来录音,结束长按来结束录音
This commit is contained in:
2025-09-26 16:23:48 +08:00
parent 4a41c25502
commit f5699fd144
11 changed files with 247 additions and 13 deletions

View File

@@ -1,4 +1,6 @@
import 'dart:async';
import 'dart:ui';
import 'package:ai_chat_assistant/manager.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../pages/full_screen.dart';
@@ -30,6 +32,7 @@ class _ChatPopupState extends State<ChatPopup> with SingleTickerProviderStateMix
final double _iconSizeDefault = 80.0;
bool _isShowingPopup = false;
late AnimationController _partScreenAnimationController;
StreamSubscription? _wakeWordSubscription;
@override
void initState() {
@@ -38,11 +41,21 @@ class _ChatPopupState extends State<ChatPopup> with SingleTickerProviderStateMix
duration: const Duration(milliseconds: 250),
vsync: this,
);
// 订阅唤醒词事件
_wakeWordSubscription = AIChatAssistantManager.instance.onWakeWordDetected.listen((_) async {
// 在这里处理唤醒事件,例如显示聊天窗口
debugPrint("唤醒词被检测到执行UI操作");
final messageService = MessageService.instance;
_insertOverlay();
await messageService.startVoiceInput();
});
}
@override
void dispose() {
_partScreenAnimationController.dispose();
_wakeWordSubscription?.cancel();
super.dispose();
}