fix:调整对讲流程逻辑,增加对讲请求超时时间为30秒
This commit is contained in:
parent
8b61e3d5a6
commit
65c82a34ab
@ -3,5 +3,5 @@ class TalkConstant {
|
|||||||
static const int talkePingOverTime = 10;
|
static const int talkePingOverTime = 10;
|
||||||
static const int talkeDataOverTime = 10;
|
static const int talkeDataOverTime = 10;
|
||||||
// 收到TalkRequest 未处理超时时间(s)
|
// 收到TalkRequest 未处理超时时间(s)
|
||||||
static const int talkeRequestOverTime = 60;
|
static const int talkeRequestOverTime = 30;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,6 +54,12 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle
|
|||||||
startChartManage.startTalkExpectTimer();
|
startChartManage.startTalkExpectTimer();
|
||||||
// 停止发送对讲请求
|
// 停止发送对讲请求
|
||||||
startChartManage.stopCallRequestMessageTimer();
|
startChartManage.stopCallRequestMessageTimer();
|
||||||
|
// 收到应答后取消超时判断
|
||||||
|
talkeRequestOverTimeTimerManager.cancel();
|
||||||
|
// 启动发送ping
|
||||||
|
startChartManage.startTalkPingMessageTimer();
|
||||||
|
// 启动ping命令超时判断
|
||||||
|
talkePingOverTimeTimerManager.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,8 +80,6 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle
|
|||||||
_showTalkRequestNotification(talkObjectName: talkObjectName);
|
_showTalkRequestNotification(talkObjectName: talkObjectName);
|
||||||
// 设置为等待接听状态
|
// 设置为等待接听状态
|
||||||
talkStatus.setPassiveCallWaitingAnswer();
|
talkStatus.setPassiveCallWaitingAnswer();
|
||||||
// 启动对讲请求超时定时器
|
|
||||||
talkeRequestOverTimeTimerManager.start();
|
|
||||||
// 收到呼叫请求,跳转到接听页面
|
// 收到呼叫请求,跳转到接听页面
|
||||||
if (startChartManage
|
if (startChartManage
|
||||||
.getDefaultTalkExpect()
|
.getDefaultTalkExpect()
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:star_lock/app_settings/app_settings.dart';
|
||||||
import 'package:star_lock/talk/starChart/constant/talk_constant.dart';
|
import 'package:star_lock/talk/starChart/constant/talk_constant.dart';
|
||||||
import 'package:star_lock/talk/starChart/constant/talk_status.dart';
|
import 'package:star_lock/talk/starChart/constant/talk_status.dart';
|
||||||
import 'package:star_lock/talk/starChart/star_chart_manage.dart';
|
import 'package:star_lock/talk/starChart/star_chart_manage.dart';
|
||||||
@ -34,6 +35,7 @@ class TalkeRequestOverTimeTimerManager {
|
|||||||
StartChartManage().startTalkRejectMessageTimer();
|
StartChartManage().startTalkRejectMessageTimer();
|
||||||
StartChartManage().stopSendingRbcuInfoMessages();
|
StartChartManage().stopSendingRbcuInfoMessages();
|
||||||
StartChartManage().stopSendingRbcuProBeMessages();
|
StartChartManage().stopSendingRbcuProBeMessages();
|
||||||
|
StartChartManage().stopCallRequestMessageTimer();
|
||||||
talkStatus.setInitializationCompleted();
|
talkStatus.setInitializationCompleted();
|
||||||
Get.back();
|
Get.back();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -417,8 +417,7 @@ class StartChartManage {
|
|||||||
void startCallRequestMessageTimer({required String ToPeerId}) async {
|
void startCallRequestMessageTimer({required String ToPeerId}) async {
|
||||||
// 如果已经处于等待接听状态就不发送
|
// 如果已经处于等待接听状态就不发送
|
||||||
if (talkStatus.status != TalkStatus.proactivelyCallWaitingAnswer) {
|
if (talkStatus.status != TalkStatus.proactivelyCallWaitingAnswer) {
|
||||||
// 停止播放铃声
|
// 如果是h264则跳转至webview
|
||||||
// AudioPlayerManager().playRingtone();
|
|
||||||
if (_defaultTalkExpect.videoType.contains(VideoTypeE.H264)) {
|
if (_defaultTalkExpect.videoType.contains(VideoTypeE.H264)) {
|
||||||
Get.toNamed(
|
Get.toNamed(
|
||||||
Routers.h264WebView,
|
Routers.h264WebView,
|
||||||
@ -429,6 +428,7 @@ class StartChartManage {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 启动定时器持续发送对讲请求
|
||||||
talkRequestTimer ??= Timer.periodic(
|
talkRequestTimer ??= Timer.periodic(
|
||||||
Duration(
|
Duration(
|
||||||
seconds: _defaultIntervalTime,
|
seconds: _defaultIntervalTime,
|
||||||
@ -438,9 +438,8 @@ class StartChartManage {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
talkStatus.setProactivelyCallWaitingAnswer();
|
talkStatus.setProactivelyCallWaitingAnswer();
|
||||||
startTalkPingMessageTimer();
|
// 启动对讲请求应答超时判断
|
||||||
// 启动是否收到ping超时判断定时器
|
talkeRequestOverTimeTimerManager.start();
|
||||||
talkePingOverTimeTimerManager.start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 停止持续发送对讲请求
|
/// 停止持续发送对讲请求
|
||||||
|
|||||||
@ -125,7 +125,7 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
if (_isFirstFrame) {
|
if (_isFirstFrame) {
|
||||||
_startTime = currentTime;
|
_startTime = currentTime;
|
||||||
_isFirstFrame = false;
|
_isFirstFrame = false;
|
||||||
AppLog.log('记录第一帧的时间戳${currentTime},${talkData.durationMs}');
|
// AppLog.log('记录第一帧的时间戳${currentTime},${talkData.durationMs}');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算实际延迟:当前时间 - 预期播放时间
|
// 计算实际延迟:当前时间 - 预期播放时间
|
||||||
@ -249,11 +249,11 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
if (delay > delayThresholdHigh && bufferSize < maxBufferSize) {
|
if (delay > delayThresholdHigh && bufferSize < maxBufferSize) {
|
||||||
// 延迟较大,增加缓冲区
|
// 延迟较大,增加缓冲区
|
||||||
bufferSize = min(bufferSize + adjustInterval, maxBufferSize);
|
bufferSize = min(bufferSize + adjustInterval, maxBufferSize);
|
||||||
AppLog.log('📈 增加缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms');
|
// AppLog.log('📈 增加缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms');
|
||||||
} else if (delay < delayThresholdLow && bufferSize > minBufferSize) {
|
} else if (delay < delayThresholdLow && bufferSize > minBufferSize) {
|
||||||
// 延迟较小,减少缓冲区
|
// 延迟较小,减少缓冲区
|
||||||
bufferSize = max(bufferSize - adjustInterval, minBufferSize);
|
bufferSize = max(bufferSize - adjustInterval, minBufferSize);
|
||||||
AppLog.log('📉 减少缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms');
|
// AppLog.log('📉 减少缓冲区 - 当前大小: $bufferSize, 延迟: ${delay}ms');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user