fix:完善状态变更和通知
This commit is contained in:
parent
7a9464dfa1
commit
041c0b7775
@ -32,6 +32,8 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
|
|||||||
_handleCheckTalkDataTimer();
|
_handleCheckTalkDataTimer();
|
||||||
// 启动发送预期数据请求
|
// 启动发送预期数据请求
|
||||||
_handleStartSendTalkExpectDataRequest();
|
_handleStartSendTalkExpectDataRequest();
|
||||||
|
// 设置状态为接听中
|
||||||
|
talkStatus.setDuringCall();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +59,7 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
|
|||||||
// 停止发送通话保持的命令
|
// 停止发送通话保持的命令
|
||||||
startChartManage.stopTalkPingMessageTimer();
|
startChartManage.stopTalkPingMessageTimer();
|
||||||
startChartManage.stopTalkExpectMessageTimer();
|
startChartManage.stopTalkExpectMessageTimer();
|
||||||
startChartManage.changeCallingStatus(false);
|
talkStatus.setNotTalkPing();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +72,7 @@ class UdpTalkAcceptHandler extends ScpMessageBaseHandle
|
|||||||
EasyLoading.showToast('通话连接失败', duration: 2000.milliseconds);
|
EasyLoading.showToast('通话连接失败', duration: 2000.milliseconds);
|
||||||
startChartManage.stopTalkPingMessageTimer();
|
startChartManage.stopTalkPingMessageTimer();
|
||||||
startChartManage.stopTalkExpectMessageTimer();
|
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/handle/scp_message_handle.dart';
|
||||||
import 'package:star_lock/talk/startChart/proto/gateway_reset.pb.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/generic.pb.dart';
|
||||||
|
import 'package:star_lock/talk/startChart/proto/talk_expect.pb.dart';
|
||||||
|
|
||||||
import '../../start_chart_manage.dart';
|
import '../../start_chart_manage.dart';
|
||||||
|
|
||||||
@ -12,7 +13,9 @@ class UdpTalkExpectHandler extends ScpMessageBaseHandle
|
|||||||
implements ScpMessageHandler {
|
implements ScpMessageHandler {
|
||||||
@override
|
@override
|
||||||
void handleReq(ScpMessage scpMessage) {
|
void handleReq(ScpMessage scpMessage) {
|
||||||
// TODO: 收到预期音视频数据请求
|
// 收到预期音视频数据请求
|
||||||
|
final TalkExpect talkExpect = scpMessage.Payload;
|
||||||
|
print('收到预期音视频数据请求');
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -19,8 +19,7 @@ class UdpTalkPingHandler extends ScpMessageBaseHandle
|
|||||||
if (checkGenericRespSuccess(genericResp)) {
|
if (checkGenericRespSuccess(genericResp)) {
|
||||||
// 收到消息,重新触发定时器
|
// 收到消息,重新触发定时器
|
||||||
talkePingOverTimeTimerManager.receiveMessage();
|
talkePingOverTimeTimerManager.receiveMessage();
|
||||||
// 修改状态
|
|
||||||
startChartManage.changeCallingStatus(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
|
|||||||
@override
|
@override
|
||||||
void handleResp(ScpMessage scpMessage) {
|
void handleResp(ScpMessage scpMessage) {
|
||||||
// 收到接听拒绝回复
|
// 收到接听拒绝回复
|
||||||
EasyLoading.showToast('对方已经拒绝接听', duration: 2000.milliseconds);
|
talkStatus.setRejected();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -75,7 +75,6 @@ class StartChartManage {
|
|||||||
);
|
);
|
||||||
|
|
||||||
String relayPeerId = ''; // 中继peerId
|
String relayPeerId = ''; // 中继peerId
|
||||||
bool _calling = false; // 是否处于通话中
|
|
||||||
|
|
||||||
// 获取 StartChartTalkStatus 的唯一实例
|
// 获取 StartChartTalkStatus 的唯一实例
|
||||||
StartChartTalkStatus talkStatus = StartChartTalkStatus.instance;
|
StartChartTalkStatus talkStatus = StartChartTalkStatus.instance;
|
||||||
@ -138,16 +137,6 @@ class StartChartManage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 判断是否通话中
|
|
||||||
bool checkIsCalling() {
|
|
||||||
return _calling;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 设置通话状态
|
|
||||||
void changeCallingStatus(bool status) {
|
|
||||||
_calling = status;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 初始化udp
|
// 初始化udp
|
||||||
Future<void> _onlineRelayService() async {
|
Future<void> _onlineRelayService() async {
|
||||||
var addressIListenFrom = InternetAddress.anyIPv4;
|
var addressIListenFrom = InternetAddress.anyIPv4;
|
||||||
@ -255,6 +244,7 @@ class StartChartManage {
|
|||||||
FromPeerId: FromPeerId,
|
FromPeerId: FromPeerId,
|
||||||
);
|
);
|
||||||
await _sendMessage(message: message);
|
await _sendMessage(message: message);
|
||||||
|
talkStatus.setWaitingAnswer();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送拒绝接听消息
|
// 发送拒绝接听消息
|
||||||
@ -742,4 +732,12 @@ class StartChartManage {
|
|||||||
void changeTalkExpectDataType({required TalkExpect talkExpect}) {
|
void changeTalkExpectDataType({required TalkExpect talkExpect}) {
|
||||||
defaultTalkExpect = talkExpect;
|
defaultTalkExpect = talkExpect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 销毁资源
|
||||||
|
void destruction() {
|
||||||
|
stopTalkExpectMessageTimer();
|
||||||
|
stopTalkPingMessageTimer();
|
||||||
|
stopHeartbeat();
|
||||||
|
stopReStartOnlineStartChartServer();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,6 +40,7 @@ class StartChartTalkStatus {
|
|||||||
// 内部方法,用于更新状态并触发状态变化事件
|
// 内部方法,用于更新状态并触发状态变化事件
|
||||||
void _setStatus(TalkStatus newStatus) {
|
void _setStatus(TalkStatus newStatus) {
|
||||||
if (_status == newStatus) return; // 如果状态没有变化,直接返回
|
if (_status == newStatus) return; // 如果状态没有变化,直接返回
|
||||||
|
print("对讲状态变化: ${_status.name} -> ${newStatus.name}");
|
||||||
// 更新状态
|
// 更新状态
|
||||||
_status = newStatus;
|
_status = newStatus;
|
||||||
|
|
||||||
@ -49,8 +50,6 @@ class StartChartTalkStatus {
|
|||||||
|
|
||||||
// 状态变化时的回调方法(可选)
|
// 状态变化时的回调方法(可选)
|
||||||
void _onStatusChanged(TalkStatus newStatus) {
|
void _onStatusChanged(TalkStatus newStatus) {
|
||||||
// 例如,可以在这里发送通知、更新 UI 或记录日志
|
|
||||||
print("对讲状态变化: ${_status.name} -> ${newStatus.name}");
|
|
||||||
// 发布状态变化事件
|
// 发布状态变化事件
|
||||||
EventBusManager().eventBus!.fire(TalkStatusChangeEvent(_status, newStatus));
|
EventBusManager().eventBus!.fire(TalkStatusChangeEvent(_status, newStatus));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user