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 e3fd1723..406bb3bb 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_logic.dart @@ -28,7 +28,7 @@ class LockMonitoringLogic extends BaseGetXController { StreamSubscription? _getUDPStatusRefreshUIEvent; void _getUDPStatusRefreshUIAction() { // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus - _getTVDataRefreshUIEvent = eventBus.on().listen((event) { + _getUDPStatusRefreshUIEvent = eventBus.on().listen((event) { state.udpStatus.value = event.udpStatus; }); } 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 f9215dd1..16392da6 100644 --- a/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart +++ b/star_lock/lib/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart @@ -8,6 +8,7 @@ import 'package:network_info_plus/network_info_plus.dart'; import '../../../../app_settings/app_colors.dart'; import '../../../../talk/udp/udp_manage.dart'; import '../../../../talk/udp/udp_senderManage.dart'; +import '../../../../talk/udp/udp_talkClass.dart'; import '../../../../tools/showTFView.dart'; import '../../../../tools/storage.dart'; import '../../../../tools/toast.dart'; @@ -158,6 +159,7 @@ class _LockMonitoringPageState extends State { Widget bottomBottomBtnWidget() { return Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ + // 接听 Obx(() => bottomBtnItemWidget( getAnswerBtnImg(), getAnswerBtnName(), Colors.white, () async { var userMobileIP = await NetworkInfo().getWifiIP(); @@ -281,6 +283,10 @@ class _LockMonitoringPageState extends State { title: "请输入开锁密码", tipTitle: "", controller: state.passwordTF, + inputFormatters: [ + LengthLimitingTextInputFormatter(6), //限制长度 + FilteringTextInputFormatter.allow(RegExp("[0-9]")), + ], sureClick: () async { //发送删除锁请求 if (state.passwordTF.text.isEmpty) { @@ -311,6 +317,13 @@ class _LockMonitoringPageState extends State { ); } + @override + void dispose() { + super.dispose(); + + // UDPTalkClass().isBeCall = false; + } + //录音处理 _initRecorder() { recorder = FlutterSoundRecorder(); diff --git a/star_lock/lib/talk/call/callTalk.dart b/star_lock/lib/talk/call/callTalk.dart index 7d62b819..26224eee 100644 --- a/star_lock/lib/talk/call/callTalk.dart +++ b/star_lock/lib/talk/call/callTalk.dart @@ -67,7 +67,8 @@ class CallTalk { // 获取帧序号 63 int getIframeIndex = bb[POS_iframe_index] + bb[POS_iframe_index + 1] * 256; - print('获取帧序号 getIframeIndex:$getIframeIndex'); + // print('获取帧序号 getIframeIndex:$getIframeIndex'); + // 获取帧长度 65 // int alen = bb[POS_alen] & 0xff; // var alenList = bb.sublist(POS_alen, POS_alen + 4); @@ -79,13 +80,13 @@ class CallTalk { // 当前包号 71 int getBagIndex = bb[POS_bag_index] & 0xff; - print('当前包号 getBagIndex:$getBagIndex'); + // print('当前包号 getBagIndex:$getBagIndex'); // 总包数 69 int getBagNum = bb[POS_bag_num] & 0xff; - print('总包数 getBagNum:$getBagNum'); + // print('总包数 getBagNum:$getBagNum'); // 数据长度 73 int blen = bb[POS_blen] + bb[POS_blen + 1] * 256; - print('数据长度 blen:$blen'); + // print('数据长度 blen:$blen'); // 这里判断是否是同一帧,如果不是同一帧就重新创建一个 IframeInfo if (getIframeIndex != iframe!.iframeIndex) { @@ -104,13 +105,11 @@ class CallTalk { var getList = bb.sublist(77, bb.length); growableList.addAll(getList); } - print( - 'iframe.bagNum: ${iframe!.bagNum} iframe.bagReceive: ${iframe!.bagReceive}'); + // print('iframe.bagNum: ${iframe!.bagNum} iframe.bagReceive: ${iframe!.bagReceive}'); // 如果收到的包数等于总包数,说明这一帧数据已经接收完毕 if (iframe!.bagNum == iframe!.bagReceive) { - print( - '播放第${iframe!.iframeIndex}帧 一帧图片的hexStringData: ${Uint8List.fromList(growableList)}'); + // print('播放第${iframe!.iframeIndex}帧 一帧图片的hexStringData: ${Uint8List.fromList(growableList)}'); //判断第一帧是否接收到 if (iframe!.iframeIndex == 0) { diff --git a/star_lock/lib/talk/udp/udp_reciverData.dart b/star_lock/lib/talk/udp/udp_reciverData.dart index 4b850c74..3ad96b76 100644 --- a/star_lock/lib/talk/udp/udp_reciverData.dart +++ b/star_lock/lib/talk/udp/udp_reciverData.dart @@ -19,7 +19,7 @@ class CommandUDPReciverManager { if (dataSize < 4) { return; } - // print("appReceiveUDPData:$data"); + print("appReceiveUDPData:$data"); Uint8List data1 = Uint8List.fromList(data); if (data1.length == 1) { @@ -52,7 +52,7 @@ class CommandUDPReciverManager { var lockId = data.sublist(9, 29); var lockIdStr = utf8String(lockId); UDPManage().lockId = lockIdStr; - + UDPTalkClass().status = 0; UDPTalkClass().beCallW(data: data); } break; @@ -112,6 +112,7 @@ class CommandUDPReciverManager { print("结束对讲反馈"); } UDPTalkClass().status = 0; + UDPTalkClass().isBeCall = false; Get.back(); UDPTalkClass().stopLocalAudio(); eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status)); diff --git a/star_lock/lib/talk/udp/udp_talkClass.dart b/star_lock/lib/talk/udp/udp_talkClass.dart index 039a89c3..7cb332e4 100644 --- a/star_lock/lib/talk/udp/udp_talkClass.dart +++ b/star_lock/lib/talk/udp/udp_talkClass.dart @@ -23,7 +23,9 @@ class UDPTalkClass { UDPTalkClass._init(); - var status = 0; //0:初始状态 1:等待监视 2: 3:监视中 4:呼叫成功 5:主角通话中 6:被叫通话 8:被叫通话中 + // var status = 0; //0:初始状态 1:等待监视 2: 3:监视中 4:呼叫成功 5:主角通话中 6:被叫通话 8:被叫通话中 + int status = 0; + var remoteEquid; // 手机号 late Timer timer; // 该字段是为了判断是否跳转到接听界面 挂断或者退出接听界面要记得变更状态 @@ -31,7 +33,7 @@ class UDPTalkClass { final audioPlayer = AudioPlayer(); beCallW({List? data, String? ip, int? port}) async { - // print("beCall"); + print("beCall status:$status"); // if (await isCallMe(data)) { // return; // } @@ -60,8 +62,8 @@ class UDPTalkClass { // fullscreenDialog: true // )); - if (UDPTalkClass().isBeCall == false) { - UDPTalkClass().isBeCall = true; + if (isBeCall == false) { + isBeCall = true; // 保持连接 timer = Timer.periodic(1.seconds, (timer) { data[7] = 1; @@ -70,10 +72,10 @@ class UDPTalkClass { }); // _getFirstFrameGoPushAction(); - Future.delayed(const Duration(seconds: 1), () { + // Future.delayed(const Duration(seconds: 1), () { // 在这里写要延迟执行的代码 Get.toNamed(Routers.lockMonitoringPage, arguments: {"lockId": "111"}); - }); + // }); } playLocalAudio(); diff --git a/star_lock/lib/tools/showTFView.dart b/star_lock/lib/tools/showTFView.dart index c5827ae9..e9dc6ea2 100644 --- a/star_lock/lib/tools/showTFView.dart +++ b/star_lock/lib/tools/showTFView.dart @@ -1,5 +1,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -9,6 +10,7 @@ class ShowTFView extends StatelessWidget { String? title; String? tipTitle; TextEditingController? controller; + List? inputFormatters; Function()? sureClick; Function()? cancelClick; @@ -17,6 +19,7 @@ class ShowTFView extends StatelessWidget { this.title, this.tipTitle, this.controller, + this.inputFormatters, this.sureClick, this.cancelClick}) : super(key: key); @@ -44,6 +47,7 @@ class ShowTFView extends StatelessWidget { maxLines: 1, controller: controller, autofocus: false, + inputFormatters: inputFormatters, decoration: InputDecoration( contentPadding: const EdgeInsets.only(left: 5, top: -8, bottom: 6),