|
|
|
@ -133,6 +133,7 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
|
final appDocDir = getApplicationDocumentsDirectory(); |
|
|
|
var appDir; |
|
|
|
var dir; |
|
|
|
late Future<void> _initServicesFuture; |
|
|
|
|
|
|
|
// ==================== 管理器 ==================== |
|
|
|
late final RecordTimerController _timerManager; |
|
|
|
@ -565,7 +566,7 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
|
loadTranslationHistory(); |
|
|
|
|
|
|
|
// 初始化服务 |
|
|
|
_initServices(); |
|
|
|
_initServicesFuture = _initServices(); |
|
|
|
|
|
|
|
// 初始化历史管理器 |
|
|
|
_historyManager.initialize(); |
|
|
|
@ -595,8 +596,8 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
|
if (currentMode.value != 'call') { |
|
|
|
await changeTranslationMode('call'); |
|
|
|
} |
|
|
|
if (!isRecording.value) { |
|
|
|
await startRecording(); |
|
|
|
if (!isRecognizing.value) { |
|
|
|
await startRecognition(); |
|
|
|
} |
|
|
|
} else { |
|
|
|
await stopAll(); |
|
|
|
@ -612,8 +613,10 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
|
Logger.info('[CALL_TRANS_CMD] 检测到 autoStart=true, 进入通话翻译并自启动'); |
|
|
|
Future.microtask(() async { |
|
|
|
try { |
|
|
|
if (!isRecording.value) { |
|
|
|
await startRecording(); |
|
|
|
// 等待服务初始化完成(含 AST 端到端服务),再启动完整识别流程 |
|
|
|
await _initServicesFuture; |
|
|
|
if (!isRecognizing.value) { |
|
|
|
await startRecognition(); |
|
|
|
} |
|
|
|
} catch (e, s) { |
|
|
|
Logger.e('TRANSL', '[CALL_TRANS_CMD] autoStart 启动失败: $e', e, s); |
|
|
|
@ -1010,6 +1013,8 @@ class TranslationController extends GetxController with WidgetsBindingObserver { |
|
|
|
|
|
|
|
/// 开始录音 |
|
|
|
Future<void> startRecording() async { |
|
|
|
// 等待服务初始化完成,确保 dir 已赋值 |
|
|
|
await _initServicesFuture; |
|
|
|
_timerManager.startTimer(); |
|
|
|
final formattedTime = DateFormat('yyyyMMdd_HHmmss').format(DateTime.now()); |
|
|
|
AudioSourceType audioSourceType; |
|
|
|
|