Browse Source

fix(agent): 修复电话模式退出时未结束通话的问题

在agent_controller中添加exit_interaction函数调用时的电话模式检查,确保退出交互时同时结束通话

fix(home): 优化设备连接时的电池信息刷新逻辑

1. 设备连接成功后立即刷新电池信息
2. 根据连接状态控制电池信息定时刷新
3. 移除不必要的电池信息日志输出

chore: 回滚版本号至1.0.8+20
weicu
lxm 1 year ago
parent
commit
84ed963be9
  1. 6
      lib/modules/agent/controllers/agent_controller.dart
  2. 23
      lib/modules/home/controllers/home_controller.dart
  3. 2
      pubspec.yaml

6
lib/modules/agent/controllers/agent_controller.dart

@ -701,6 +701,12 @@ class AgentController extends GetxController {
final functionName = event.data['name'] ?? '';
final arguments = event.data['arguments'] ?? '';
// debugPrint('Fultter 开始调用 mcp: $functionName, $arguments');
if (functionName == 'exit_interaction') {
if (isPhoneCallMode.value) {
endPhoneCall(); //退出语音交互,同时退出打电话模式
}
}
break;
case AgentServiceEventType.functionCallResult:

23
lib/modules/home/controllers/home_controller.dart

@ -103,6 +103,10 @@ class HomeController extends GetxController {
Future<void> refreshDeviceConnection() async {
await _checkConnectionStatus();
// 如果设备已连接,立即刷新电池信息
if (_isFullyConnected.value) {
await _refreshBatteryInfo();
}
}
void rescanDevices() {
@ -137,6 +141,16 @@ class HomeController extends GetxController {
if (!wasConnected && isNowConnected) {
await _bleManager.fetchDeviceInfo();
// 连接成功后立即刷新一次电池信息
Future.delayed(const Duration(milliseconds: 500), () {
_refreshBatteryInfo();
});
}
// 根据连接状态控制定时器
if (isNowConnected) {
_startBatteryRefreshTimer(); // 连接时启动定时器
} else {
_stopBatteryRefreshTimer(); // 断开时停止定时器
}
}
@ -146,6 +160,7 @@ class HomeController extends GetxController {
if (_isFullyConnected.value) {
_isFullyConnected.value = false;
_isFullyConnected.refresh();
_stopBatteryRefreshTimer(); // 发生错误时停止定时器
update();
}
}
@ -298,18 +313,18 @@ class HomeController extends GetxController {
return;
}
Logger.d(_tag, '开始刷新电池信息...');
//Logger.d(_tag, '开始刷新电池信息...');
// 通过BLE管理器获取最新的电池信息
final success = await _bleManager.fetchBatteryInfo();
if (success) {
Logger.d(_tag, '电池信息刷新请求发送成功');
//Logger.d(_tag, '电池信息刷新请求发送成功');
} else {
Logger.w(_tag, '电池信息刷新请求发送失败');
//Logger.w(_tag, '电池信息刷新请求发送失败');
}
} catch (e) {
Logger.e(_tag, '刷新电池信息时发生错误: $e');
//Logger.e(_tag, '刷新电池信息时发生错误: $e');
}
}
}

2
pubspec.yaml

@ -1,7 +1,7 @@
name: voitrans
description: "Voitrans - AI Voice Assistant."
publish_to: "none"
version: 1.0.9+20
version: 1.0.8+20
environment:
sdk: ">=3.3.0 <4.0.0"

Loading…
Cancel
Save