feat: 新增语音唤醒
唤醒的逻辑跟长按的逻辑不一样,不能像之前那样长按图标来录音,结束长按来结束录音
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user