diff --git a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart index 337787c2..7e2ad2ee 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart @@ -61,7 +61,7 @@ class LockMonitoringLogic extends BaseGetXController { state.oneMinuteTime.value++; if (state.oneMinuteTime.value >= 60) { t.cancel(); // 取消定时器 - initiateUdpHangUpAction(); // 挂断操作 + initiateUdpHangUpAction(1); // 挂断操作 print('通话时间超过60秒,自动挂断'); state.oneMinuteTime.value = 0; } @@ -86,8 +86,8 @@ class LockMonitoringLogic extends BaseGetXController { if (state.answerSeconds >= 6) { state.answerTimer.cancel(); showToast("接听失败"); - initiateUdpHangUpAction(); - // UDPTalkClass().callNoAnswer(); + // initiateUdpHangUpAction(2); + UDPTalkClass().callNoAnswer(1); } }); } @@ -107,28 +107,37 @@ class LockMonitoringLogic extends BaseGetXController { } //发起挂断命令,每隔一秒钟发一次,六秒无应答则失败 - void initiateUdpHangUpAction() { + void initiateUdpHangUpAction(int clickIndex) { // 每隔一秒调用一次 udpHangUpAction 方法 state.hangUpTimer = Timer.periodic(const Duration(seconds: 1), (timer) { - state.hangUpSeconds++; udpHangUpAction(); + state.hangUpSeconds++; - //如果已经挂断成功,则取消定时器 - if (UDPTalkClass().isEndCall == true) { - state.hangUpTimer.cancel(); - return; - } + // //如果已经挂断成功,则取消定时器 + // if (UDPTalkClass().isEndCall == true) { + // print('{$clickIndex}已经挂断成功'); + // state.hangUpTimer.cancel(); + // return; + // } + + // if (UDPTalkClass().status == 6) { + // print('{$clickIndex}被叫中,已经挂断成功'); + // state.hangUpTimer.cancel(); + // return; + // } // 检查条件,如果达到6秒且未得到应答,则认为失败 if (state.hangUpSeconds >= 6) { state.hangUpTimer.cancel(); // 取消定时器 - UDPTalkClass().callNoAnswer(); + // showToast("挂断失败"); + UDPTalkClass().callNoAnswer(2); } }); } /// 挂断 udpHangUpAction() async { + print('点了挂断么'); UDPSenderManage.sendMainProtocol( command: 150, commandTypeIsCalling: 1, @@ -458,8 +467,23 @@ class LockMonitoringLogic extends BaseGetXController { _getUDPStatusRefreshUIEvent!.cancel(); if (state.oneMinuteTimeTimer != null) { state.oneMinuteTimeTimer.cancel(); + state.oneMinuteTime.value = 0; } stopProcessing(); state.listPhotoData.value = Uint8List(0); + if (state.answerTimer != null) { + state.answerTimer.cancel(); + state.answerSeconds.value = 0; + } + + if (state.hangUpTimer != null) { + state.hangUpTimer.cancel(); + state.hangUpSeconds.value = 0; + } + + if (state.openDoorTimer != null) { + state.openDoorTimer.cancel(); + state.openDoorSeconds.value = 0; + } } } diff --git a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart index c5318826..5e5708b3 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart @@ -207,14 +207,15 @@ class _LockMonitoringPageState extends State { CallTalk().stopPcmSound(); // 挂断 if (state.isClickHangUp.value == false) { - logic.initiateUdpHangUpAction(); + logic.initiateUdpHangUpAction(3); state.isClickHangUp.value = true; - } else { - print('点了这里?'); - state.isClickHangUp.value = false; - UDPTalkClass().stopLocalAudio(); - logic.udpHangUpAction(); } + // else { + // print('点了这里?'); + // state.isClickHangUp.value = true; + // UDPTalkClass().stopLocalAudio(); + // logic.initiateUdpHangUpAction(4); + // } }), bottomBtnItemWidget("images/main/icon_lockDetail_monitoringUnlock.png", "开锁", AppColors.mainColor, () { diff --git a/star_lock/lib/main/lockMian/lockMain/lockMain_logic.dart b/star_lock/lib/main/lockMian/lockMain/lockMain_logic.dart index eb21fe05..0c607205 100644 --- a/star_lock/lib/main/lockMian/lockMain/lockMain_logic.dart +++ b/star_lock/lib/main/lockMian/lockMain/lockMain_logic.dart @@ -5,8 +5,6 @@ import '../../../blue/blue_manage.dart'; import '../../../network/api_repository.dart'; import '../../../talk/udp/udp_help.dart'; import '../../../tools/baseGetXController.dart'; -import '../../../tools/eventBusEventManage.dart'; -import '../../../versionUndate/versionUndateTool.dart'; import '../entity/lockListInfo_entity.dart'; import 'lockMain_state.dart'; diff --git a/star_lock/lib/talk/udp/io_protocol/udp_heart.dart b/star_lock/lib/talk/udp/io_protocol/udp_heart.dart index cd2e122e..5c7bd3ef 100644 --- a/star_lock/lib/talk/udp/io_protocol/udp_heart.dart +++ b/star_lock/lib/talk/udp/io_protocol/udp_heart.dart @@ -1,4 +1,3 @@ - import 'dart:convert'; import '../../../blue/io_tool/io_tool.dart'; @@ -9,7 +8,6 @@ import '../io_udpType.dart'; import '../udp_reply.dart'; class UDPSendHeartCommand extends UDPSenderProtocol { - String? userName; List? ipList; String? tokenStr; diff --git a/star_lock/lib/talk/udp/udp_help.dart b/star_lock/lib/talk/udp/udp_help.dart index 74634efb..57cb6415 100644 --- a/star_lock/lib/talk/udp/udp_help.dart +++ b/star_lock/lib/talk/udp/udp_help.dart @@ -48,6 +48,7 @@ class UdpHelp { ipList: serversList, tokenStr: "b989fa15f75c2ac02718b7c9bb64f80e", ); + print('发送心跳了'); }); } } @@ -58,9 +59,9 @@ class UdpHelp { } } - dispose() { - udpHeartTimer!.cancel(); - } + // dispose() { + // udpHeartTimer!.cancel(); + // } } class UdpData { diff --git a/star_lock/lib/talk/udp/udp_reciverData.dart b/star_lock/lib/talk/udp/udp_reciverData.dart index 40e4ecf1..d2d6cde6 100644 --- a/star_lock/lib/talk/udp/udp_reciverData.dart +++ b/star_lock/lib/talk/udp/udp_reciverData.dart @@ -1,6 +1,7 @@ import 'dart:typed_data'; import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:fluttertoast/fluttertoast.dart'; import 'package:get/get.dart'; import 'package:star_lock/talk/udp/udp_manage.dart'; @@ -104,6 +105,7 @@ class CommandUDPReciverManager { break; case 30: { + // print('收到挂断反馈了'); // 挂断 if ((data[7] & 0x3) == 1) { // 对方结束对讲 @@ -112,13 +114,15 @@ class CommandUDPReciverManager { //结束对讲反馈 print("结束对讲反馈"); } - UDPTalkClass().status = 0; - UDPTalkClass().isBeCall = false; - UDPTalkClass().stopLocalAudio(); - CallTalk().stopPcmSound(); - eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status)); - Get.back(); - print('挂断反馈刷新UI1'); + // UDPTalkClass().status = 0; + // UDPTalkClass().isBeCall = false; + // UDPTalkClass().isEndCall = true; + // UDPTalkClass().stopLocalAudio(); + // CallTalk().stopPcmSound(); + // eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status)); + // Get.back(); + UDPTalkClass().callNoAnswer(3); + // print('挂断反馈刷新UI1'); } break; case 140: diff --git a/star_lock/lib/talk/udp/udp_talkClass.dart b/star_lock/lib/talk/udp/udp_talkClass.dart index 69665e9c..42df6bc0 100644 --- a/star_lock/lib/talk/udp/udp_talkClass.dart +++ b/star_lock/lib/talk/udp/udp_talkClass.dart @@ -3,9 +3,8 @@ import 'package:audioplayers/audioplayers.dart'; import 'package:fast_gbk/fast_gbk.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:get/get.dart'; -import 'package:star_lock/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart'; -import 'package:star_lock/main/lockDetail/monitoring/monitoring/lockMonitoring_state.dart'; import 'package:star_lock/talk/call/callTalk.dart'; +import 'package:star_lock/tools/eventBusEventManage.dart'; import '../../appRouters.dart'; import '../../tools/storage.dart'; import 'udp_manage.dart'; @@ -26,7 +25,7 @@ class UDPTalkClass { int status = 0; var remoteEquid; // 手机号 - late Timer timer; + late Timer talkTimer; // 该字段是为了判断是否跳转到接听界面 挂断或者退出接听界面要记得变更状态 var isBeCall = false; var isEndCall = false; //是否已经调用结束对讲 @@ -68,7 +67,7 @@ class UDPTalkClass { if (isBeCall == false) { isBeCall = true; // 保持连接 - timer = Timer.periodic(1.seconds, (timer) { + talkTimer = Timer.periodic(1.seconds, (timer) { data[7] = 1; data[8] = 9; UDPManage().sendData(data); @@ -83,7 +82,7 @@ class UDPTalkClass { playLocalAudio(); if (isEndCall == true) { - print('已经结束对讲'); + print('已经结束对讲1'); return; } playLocalAudioTimer = Timer.periodic(const Duration(seconds: 1), (timer) { @@ -91,7 +90,8 @@ class UDPTalkClass { // 检查条件,如果达到60秒且未得到应答,则认为失败 if (playLocalAudioSecond >= 60) { playLocalAudioTimer.cancel(); // 取消定时器 - LockMonitoringLogic().initiateUdpHangUpAction(); + // LockMonitoringLogic().initiateUdpHangUpAction(5); + callNoAnswer(4); } }); } else { @@ -170,14 +170,27 @@ class UDPTalkClass { } //呼叫有响铃无应答处理 - void callNoAnswer() { - // print('无应答处理'); + void callNoAnswer(int clickIndex) { + if (isEndCall == true) { + print('已经结束对讲2'); + return; + } + print('$clickIndex****无应答处理'); stopLocalAudio(); status = 0; isBeCall = false; - isEndCall = true; - LockMonitoringState().isClickHangUp.value = false; + // isEndCall = true; + // LockMonitoringState().isClickHangUp.value = false; CallTalk().stopPcmSound(); + eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status)); + if (talkTimer != null) { + talkTimer.cancel(); + } + + if (playLocalAudioTimer != null) { + playLocalAudioTimer.cancel(); + playLocalAudioSecond = 0; + } Get.back(); } }