import 'package:flutter/services.dart'; import 'package:get/get.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; /// 语音交互服务,用于管理原生的 VoiceInteractionService class VoiceInteractionService extends GetxService { static VoiceInteractionService get to => Get.find(); // 服务运行状态 final _isRunning = false.obs; bool get isRunning => _isRunning.value; // 方法通道 final MethodChannel _channel = const MethodChannel('com.deep_voice.voice_interaction'); /// 初始化服务 Future init() async { // 获取服务运行状态 await _updateServiceStatus(); return this; } /// 启动语音交互服务 Future startService() async { try { // 获取配置信息 final speechKey = dotenv.env['AZURE_ASR_SUBSCRIPTION_KEY'] ?? ''; final speechRegion = dotenv.env['AZURE_ASR_SERVICE_REGION'] ?? ''; // 从 .env 读取火山 AI API Key final aiApiKey = dotenv.env['VOLCANO_AI_API_KEY'] ?? ''; // 调用原生方法,传递配置参数 final result = await _channel.invokeMethod('startVoiceInteractionService', { 'azure_speech_key': speechKey, 'azure_speech_region': speechRegion, 'volcano_ai_api_key': aiApiKey, }) ?? false; await _updateServiceStatus(); return result; } catch (e) { print('启动语音交互服务失败: $e'); return false; } } /// 停止语音交互服务 Future stopService() async { try { final result = await _channel.invokeMethod('stopVoiceInteractionService') ?? false; await _updateServiceStatus(); return result; } catch (e) { print('停止语音交互服务失败: $e'); return false; } } /// 更新服务状态 Future _updateServiceStatus() async { try { final status = await _channel.invokeMethod('isVoiceInteractionServiceRunning') ?? false; _isRunning.value = status; } catch (e) { print('获取语音交互服务状态失败: $e'); _isRunning.value = false; } } }