fix:完善状态变更和通知
This commit is contained in:
parent
7a9464dfa1
commit
041c0b7775
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -19,8 +19,7 @@ class UdpTalkPingHandler extends ScpMessageBaseHandle
|
||||
if (checkGenericRespSuccess(genericResp)) {
|
||||
// 收到消息,重新触发定时器
|
||||
talkePingOverTimeTimerManager.receiveMessage();
|
||||
// 修改状态
|
||||
startChartManage.changeCallingStatus(true);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
|
||||
@override
|
||||
void handleResp(ScpMessage scpMessage) {
|
||||
// 收到接听拒绝回复
|
||||
EasyLoading.showToast('对方已经拒绝接听', duration: 2000.milliseconds);
|
||||
talkStatus.setRejected();
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@ -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<void> _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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user