|
|
@ -9,6 +9,7 @@ import '../../../routes/app_routes.dart'; |
|
|
import '../models/language_model.dart'; |
|
|
import '../models/language_model.dart'; |
|
|
import 'package:logger/logger.dart'; |
|
|
import 'package:logger/logger.dart'; |
|
|
import '../../../data/services/ble_manager.dart'; |
|
|
import '../../../data/services/ble_manager.dart'; |
|
|
|
|
|
import '../../../data/services/language_manager.dart'; |
|
|
|
|
|
|
|
|
import 'package:package_info_plus/package_info_plus.dart'; |
|
|
import 'package:package_info_plus/package_info_plus.dart'; |
|
|
import 'package:permission_handler/permission_handler.dart'; |
|
|
import 'package:permission_handler/permission_handler.dart'; |
|
|
@ -393,6 +394,10 @@ class SettingsController extends GetxController { |
|
|
print("languageList: ${data.value}"); |
|
|
print("languageList: ${data.value}"); |
|
|
language.value = data; |
|
|
language.value = data; |
|
|
_storage.write('language', data.value); |
|
|
_storage.write('language', data.value); |
|
|
|
|
|
|
|
|
|
|
|
// 更新agent服务的语音识别语言设置 |
|
|
|
|
|
await _updateAgentLanguageSettings(data); |
|
|
|
|
|
|
|
|
// 延迟一下确保语言更新完成,然后重新进入应用 |
|
|
// 延迟一下确保语言更新完成,然后重新进入应用 |
|
|
await Future.delayed(const Duration(milliseconds: 500)); |
|
|
await Future.delayed(const Duration(milliseconds: 500)); |
|
|
|
|
|
|
|
|
@ -401,6 +406,66 @@ class SettingsController extends GetxController { |
|
|
Get.back(); |
|
|
Get.back(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// 更新agent服务的语音识别语言设置 |
|
|
|
|
|
Future<void> _updateAgentLanguageSettings(LanguageModel languageModel) async { |
|
|
|
|
|
try { |
|
|
|
|
|
final languageManager = Get.find<LanguageManager>(); |
|
|
|
|
|
List<String> supportedLanguages = []; |
|
|
|
|
|
|
|
|
|
|
|
// 根据选择的语言设置对应的ASR语言代码 |
|
|
|
|
|
if (languageModel.value == 'system') { |
|
|
|
|
|
// 跟随系统语言 |
|
|
|
|
|
final deviceLocale = Get.deviceLocale; |
|
|
|
|
|
if (deviceLocale != null) { |
|
|
|
|
|
final lang = deviceLocale.languageCode; |
|
|
|
|
|
final country = deviceLocale.countryCode; |
|
|
|
|
|
if (country != null && country.isNotEmpty) { |
|
|
|
|
|
supportedLanguages.add('$lang-$country'); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 根据语言代码映射到对应的ASR代码 |
|
|
|
|
|
final asrCode = languageManager.getAsrCodeByShortCode(lang); |
|
|
|
|
|
if (asrCode != null) { |
|
|
|
|
|
supportedLanguages.add(asrCode); |
|
|
|
|
|
} else { |
|
|
|
|
|
supportedLanguages.add('en-US'); // 默认英语 |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
supportedLanguages.add('en-US'); // 默认英语 |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
// 根据选择的语言值映射到ASR代码 |
|
|
|
|
|
final parts = languageModel.value.split('_'); |
|
|
|
|
|
if (parts.length == 2) { |
|
|
|
|
|
final asrCode = languageManager.getAsrCodeByShortCode(parts[0]); |
|
|
|
|
|
if (asrCode != null) { |
|
|
|
|
|
supportedLanguages.add(asrCode); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 直接使用语言-国家格式 |
|
|
|
|
|
supportedLanguages.add('${parts[0]}-${parts[1]}'); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 确保至少有一个语言 |
|
|
|
|
|
if (supportedLanguages.isEmpty) { |
|
|
|
|
|
supportedLanguages.add('en-US'); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Logger().i('更新agent服务语音识别语言: ${supportedLanguages.join(', ')}'); |
|
|
|
|
|
|
|
|
|
|
|
// 调用agent服务更新语言设置 |
|
|
|
|
|
final success = await AgentService.setSupportedLanguages(supportedLanguages); |
|
|
|
|
|
if (success) { |
|
|
|
|
|
Logger().i('agent服务语言设置更新成功'); |
|
|
|
|
|
} else { |
|
|
|
|
|
Logger().w('agent服务语言设置更新失败'); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
Logger().e('更新agent服务语言设置时出错: $e'); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 加载当前语音服务类型 |
|
|
// 加载当前语音服务类型 |
|
|
void _loadCurrentSpeechServiceType() { |
|
|
void _loadCurrentSpeechServiceType() { |
|
|
try { |
|
|
try { |
|
|
|