视频对讲和监控优化

This commit is contained in:
sky_min 2025-12-10 17:48:03 +08:00
parent 3224fd342a
commit aae65dbfad
6 changed files with 35 additions and 19 deletions

View File

@ -926,8 +926,8 @@ class LockDetailLogic extends BaseGetXController {
}
//
// PacketLossStatistics().reset();
// id
StartChartManage().startCallRequestMessageTimer(ToPeerId: network!.peerId ?? '');
// id -
StartChartManage().startCallRequestMessageTimer(ToPeerId: network!.peerId ?? '', isMonitoring: true);
} else {
showToast('猫眼设置为省电模式时无法进行监控,请在猫眼设置中切换为其他模式'.tr);
}

View File

@ -37,6 +37,8 @@ class UdpTalkHangUpHandler extends ScpMessageBaseHandle
startChartManage.stopSendingRbcuInfoMessages();
startChartManage.stopSendingRbcuProBeMessages();
startChartManage.stopTalkHangupMessageTimer();
//
talkStatus.setEnd();
Get.back();
}
}
@ -55,6 +57,8 @@ class UdpTalkHangUpHandler extends ScpMessageBaseHandle
startChartManage.stopSendingRbcuInfoMessages();
startChartManage.stopSendingRbcuProBeMessages();
startChartManage.stopTalkHangupMessageTimer();
//
talkStatus.setEnd();
}
@override

View File

@ -433,7 +433,10 @@ class StartChartManage {
}
///
void startCallRequestMessageTimer({required String ToPeerId}) async {
void startCallRequestMessageTimer({required String ToPeerId, bool isMonitoring = false}) async {
// ToPeerId为当前要连接的锁的peerId
this.ToPeerId = ToPeerId;
this.lockPeerId = ToPeerId;
//
// if (talkStatus.status != TalkStatus.proactivelyCallWaitingAnswer) {
// // h264则跳转至webview
@ -477,9 +480,12 @@ class StartChartManage {
await sendCallRequestMessage(ToPeerId: ToPeerId);
},
);
talkStatus.setProactivelyCallWaitingAnswer();
//
talkeRequestOverTimeTimerManager.start();
//
if (!isMonitoring) {
talkStatus.setProactivelyCallWaitingAnswer();
//
talkeRequestOverTimeTimerManager.start();
}
}
///
@ -730,19 +736,19 @@ class StartChartManage {
// _log(text: '发送通话保持');
}
void _sendTalkHangupMessage() async {
Future<void> _sendTalkHangupMessage() async {
final message = MessageCommand.talkHangupMessage(
ToPeerId: ToPeerId,
FromPeerId: FromPeerId,
MessageId: MessageCommand.getNextMessageId(ToPeerId, increment: true),
);
// try {
// await _sendMessage(message: message);
// } catch (e) {
// //
// AppLog.log('发送挂断消息失败: $e');
// //
// }
try {
await _sendMessage(message: message);
} catch (e) {
//
AppLog.log('发送挂断消息失败: $e');
//
}
}
//
@ -751,7 +757,7 @@ class StartChartManage {
talkHangupTimer ??= Timer.periodic(
Duration(seconds: _defaultIntervalTime),
(Timer timer) async {
_sendTalkHangupMessage();
await _sendTalkHangupMessage();
},
);
@ -1250,7 +1256,7 @@ class StartChartManage {
final message = MessageCommand.bleMessage(
FromPeerId: FromPeerId,
ToPeerId: lockPeerId,
MessageId: MessageCommand.getNextMessageId(ToPeerId, increment: true),
MessageId: MessageCommand.getNextMessageId(lockPeerId, increment: true),
bluetoothDeviceName: bluetoothDeviceName,
bleStructData: bleStructData,
);
@ -1265,6 +1271,9 @@ class StartChartManage {
status == TalkStatus.proactivelyCallWaitingAnswer ||
status == TalkStatus.answeredSuccessfully ||
status == TalkStatus.uninitialized) {
//
await _sendTalkHangupMessage();
//
startTalkRejectMessageTimer();
startTalkHangupMessageTimer();
await Future.delayed(Duration(seconds: 1));

View File

@ -83,6 +83,9 @@ class ImageTransmissionLogic extends BaseGetXController {
//
StartChartManage().startTalkRejectMessageTimer();
}
//
await Future.delayed(Duration(milliseconds: 500));
StartChartManage().destruction();
Get.back();
}

View File

@ -410,7 +410,7 @@ class _TalkViewNativeDecodePageState extends State<TalkViewNativeDecodePage> wit
case TalkStatus.proactivelyCallWaitingAnswer:
return 'images/main/icon_lockDetail_monitoringUnTalkback.png';
default:
return 'images/main/icon_lockDetail_monitoringAnswerCalls.png';
return 'images/main/icon_lockDetail_monitoringUnTalkback.png';
}
}
@ -427,7 +427,7 @@ class _TalkViewNativeDecodePageState extends State<TalkViewNativeDecodePage> wit
case TalkStatus.hangingUpDuring:
return '长按说话'.tr;
default:
return '接听'.tr;
return '长按说话'.tr;
}
}

View File

@ -41,7 +41,7 @@ class TalkViewNativeDecodeState {
TextEditingController passwordTF = TextEditingController();
RxList<int> listAudioData = <int>[].obs; //
GlobalKey globalKey = GlobalKey();
final GlobalKey globalKey = GlobalKey();
Timer? oneMinuteTimeTimer; // 60
RxInt oneMinuteTime = 0.obs; //