From 041c0b77750681315a9afd0303e290b8b9f990b4 Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 9 Dec 2024 12:05:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=AE=8C=E5=96=84=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E5=92=8C=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handle/impl/udp_talk_accept_handler.dart | 6 ++++-- .../handle/impl/udp_talk_expect_handler.dart | 5 ++++- .../handle/impl/udp_talk_ping_handler.dart | 3 +-- .../handle/impl/udp_talk_reject_handler.dart | 2 +- lib/talk/startChart/start_chart_manage.dart | 20 +++++++++---------- .../startChart/start_chart_talk_status.dart | 3 +-- 6 files changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart index 6998b8fd..63bbc600 100644 --- a/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart +++ b/lib/talk/startChart/handle/impl/udp_talk_accept_handler.dart @@ -32,6 +32,8 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle _handleCheckTalkDataTimer(); // 启动发送预期数据请求 _handleStartSendTalkExpectDataRequest(); + // 设置状态为接听中 + talkStatus.setDuringCall(); } } @@ -57,7 +59,7 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle // 停止发送通话保持的命令 startChartManage.stopTalkPingMessageTimer(); startChartManage.stopTalkExpectMessageTimer(); - startChartManage.changeCallingStatus(false); + talkStatus.setNotTalkPing(); }); } @@ -70,7 +72,7 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle EasyLoading.showToast('通话连接失败', duration: 2000.milliseconds); startChartManage.stopTalkPingMessageTimer(); startChartManage.stopTalkExpectMessageTimer(); - startChartManage.changeCallingStatus(false); + talkStatus.setNotTalkData(); }); } diff --git a/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart index 9c7af858..7055b317 100644 --- a/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart +++ b/lib/talk/startChart/handle/impl/udp_talk_expect_handler.dart @@ -5,6 +5,7 @@ import 'package:star_lock/talk/startChart/handle/scp_message_base_handle.dart'; import 'package:star_lock/talk/startChart/handle/scp_message_handle.dart'; import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.dart'; import 'package:star_lock/talk/startChart/proto/generic.pb.dart'; +import 'package:star_lock/talk/startChart/proto/talk_expect.pb.dart'; import '../../start_chart_manage.dart'; @@ -12,7 +13,9 @@ class UdpTalkExpectHandler extends ScpMessageBaseHandle implements ScpMessageHandler { @override void handleReq(ScpMessage scpMessage) { - // TODO: 收到预期音视频数据请求 + // 收到预期音视频数据请求 + final TalkExpect talkExpect = scpMessage.Payload; + print('收到预期音视频数据请求'); } @override diff --git a/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart index f6e2eb2a..05c90ec7 100644 --- a/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart +++ b/lib/talk/startChart/handle/impl/udp_talk_ping_handler.dart @@ -19,8 +19,7 @@ class UdpTalkPingHandler extends ScpMessageBaseHandle if (checkGenericRespSuccess(genericResp)) { // 收到消息,重新触发定时器 talkePingOverTimeTimerManager.receiveMessage(); - // 修改状态 - startChartManage.changeCallingStatus(true); + } } diff --git a/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart b/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart index 7aa8bb32..d6cfe1d1 100644 --- a/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart +++ b/lib/talk/startChart/handle/impl/udp_talk_reject_handler.dart @@ -18,7 +18,7 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle @override void handleResp(ScpMessage scpMessage) { // 收到接听拒绝回复 - EasyLoading.showToast('对方已经拒绝接听', duration: 2000.milliseconds); + talkStatus.setRejected(); } @override diff --git a/lib/talk/startChart/start_chart_manage.dart b/lib/talk/startChart/start_chart_manage.dart index cc5ff80e..06b56e73 100644 --- a/lib/talk/startChart/start_chart_manage.dart +++ b/lib/talk/startChart/start_chart_manage.dart @@ -75,7 +75,6 @@ class StartChartManage { ); String relayPeerId = ''; // 中继peerId - bool _calling = false; // 是否处于通话中 // 获取 StartChartTalkStatus 的唯一实例 StartChartTalkStatus talkStatus = StartChartTalkStatus.instance; @@ -138,16 +137,6 @@ class StartChartManage { } } - /// 判断是否通话中 - bool checkIsCalling() { - return _calling; - } - - /// 设置通话状态 - void changeCallingStatus(bool status) { - _calling = status; - } - // 初始化udp Future _onlineRelayService() async { var addressIListenFrom = InternetAddress.anyIPv4; @@ -255,6 +244,7 @@ class StartChartManage { FromPeerId: FromPeerId, ); await _sendMessage(message: message); + talkStatus.setWaitingAnswer(); } // 发送拒绝接听消息 @@ -742,4 +732,12 @@ class StartChartManage { void changeTalkExpectDataType({required TalkExpect talkExpect}) { defaultTalkExpect = talkExpect; } + + /// 销毁资源 + void destruction() { + stopTalkExpectMessageTimer(); + stopTalkPingMessageTimer(); + stopHeartbeat(); + stopReStartOnlineStartChartServer(); + } } diff --git a/lib/talk/startChart/start_chart_talk_status.dart b/lib/talk/startChart/start_chart_talk_status.dart index da24b46c..2d94e242 100644 --- a/lib/talk/startChart/start_chart_talk_status.dart +++ b/lib/talk/startChart/start_chart_talk_status.dart @@ -40,6 +40,7 @@ class StartChartTalkStatus { // 内部方法,用于更新状态并触发状态变化事件 void _setStatus(TalkStatus newStatus) { if (_status == newStatus) return; // 如果状态没有变化,直接返回 + print("对讲状态变化: ${_status.name} -> ${newStatus.name}"); // 更新状态 _status = newStatus; @@ -49,8 +50,6 @@ class StartChartTalkStatus { // 状态变化时的回调方法(可选) void _onStatusChanged(TalkStatus newStatus) { - // 例如,可以在这里发送通知、更新 UI 或记录日志 - print("对讲状态变化: ${_status.name} -> ${newStatus.name}"); // 发布状态变化事件 EventBusManager().eventBus!.fire(TalkStatusChangeEvent(_status, newStatus)); }