From e8aabb052a5108bd18f071b2aacae32f0ca0e9d3 Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Mon, 8 Jan 2024 17:56:12 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=AF=B9=E8=AE=B2?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=95=B0=E6=8D=AE=E6=9C=89=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E6=97=B6=E9=97=AA=E7=8E=B0=E7=99=BD=E8=89=B2=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E5=9B=BE=E7=89=87=202=EF=BC=8C=E6=96=B0=E5=A2=9E=E7=9B=91?= =?UTF-8?q?=E6=8E=A7=E7=BB=93=E6=9D=9F=E5=90=8E=20=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E5=8F=91=E9=80=81=E7=9B=91=E8=A7=86=E8=AF=B7=E6=B1=82=E7=9A=84?= =?UTF-8?q?=E8=AE=A1=E6=97=B6=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../realTimePicture_logic.dart | 4 ++ .../realTimePicture/realTimePicture_page.dart | 44 ++++++++++++------- star_lock/lib/talk/call/callTalk.dart | 25 ++++------- star_lock/lib/talk/call/iFrameInfo.dart | 6 +-- star_lock/lib/talk/udp/udp_reciverData.dart | 6 +++ 5 files changed, 48 insertions(+), 37 deletions(-) diff --git a/star_lock/lib/main/lockDetail/lockDetail/realTimePicture/realTimePicture_logic.dart b/star_lock/lib/main/lockDetail/lockDetail/realTimePicture/realTimePicture_logic.dart index b07d7a04..3b10ae03 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/realTimePicture/realTimePicture_logic.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/realTimePicture/realTimePicture_logic.dart @@ -433,5 +433,9 @@ class RealTimePictureLogic extends BaseGetXController { state.oneMinuteTimeTimer.cancel(); } stopProcessing(); + state.listData.value = Uint8List(0); + if (state.realTimePicTimer != null) { + state.realTimePicTimer.cancel(); + } } } diff --git a/star_lock/lib/main/lockDetail/lockDetail/realTimePicture/realTimePicture_page.dart b/star_lock/lib/main/lockDetail/lockDetail/realTimePicture/realTimePicture_page.dart index 14d0729d..fccb2fea 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/realTimePicture/realTimePicture_page.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/realTimePicture/realTimePicture_page.dart @@ -5,7 +5,6 @@ import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/lockDetail/realTimePicture/realTimePicture_logic.dart'; -import 'package:star_lock/talk/call/callTalk.dart'; import '../../../../app_settings/app_colors.dart'; import '../../../../tools/showTFView.dart'; @@ -70,20 +69,33 @@ class _RealTimePicturePageState extends State child: Stack( alignment: Alignment.center, children: [ - Obx(() => state.listData.value.isEmpty - ? Image.asset( - 'images/main/monitorBg.png', - width: ScreenUtil().screenWidth, - height: ScreenUtil().screenHeight, - fit: BoxFit.cover, - ) - : Image.memory( - state.listData.value, - gaplessPlayback: true, - width: 1.sw, - height: 1.sh, - fit: BoxFit.cover, - )), + Obx( + () => + state.listData.value.isEmpty || state.listData.value.length == 0 + ? Image.asset( + 'images/main/monitorBg.png', + width: ScreenUtil().screenWidth, + height: ScreenUtil().screenHeight, + fit: BoxFit.cover, + ) + : Builder( + builder: (BuildContext context) { + try { + return Image.memory( + state.listData.value, + gaplessPlayback: true, + width: 1.sw, + height: 1.sh, + fit: BoxFit.cover, + ); + } catch (e, stackTrace) { + print('Error loading image: $e'); + print('Stack trace: $stackTrace'); + return Container(); + } + }, + ), + ), Obx(() => state.listData.value.isEmpty ? Positioned( bottom: 300.h, @@ -339,14 +351,12 @@ class _RealTimePicturePageState extends State void _handleFailure() { // 在这里处理失败的逻辑 - print('Failed to get response within 30 seconds.'); state.animationController.stop(); } @override void dispose() { state.animationController.dispose(); - super.dispose(); } } diff --git a/star_lock/lib/talk/call/callTalk.dart b/star_lock/lib/talk/call/callTalk.dart index f8a260af..1667da9c 100644 --- a/star_lock/lib/talk/call/callTalk.dart +++ b/star_lock/lib/talk/call/callTalk.dart @@ -19,7 +19,6 @@ class CallTalk { int status = 0; // 假设有这个成员变量 IframeInfo? iframe; // 假设有这个成员变量 - var growableList; bool getFirstFrame = false; //是否得到了第一帧 List allDataBytes = []; //音频数据 @@ -71,7 +70,7 @@ 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; @@ -84,10 +83,10 @@ 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'); @@ -98,8 +97,8 @@ class CallTalk { iframe!.iframeIndex = getIframeIndex; iframe!.bagNum = getBagNum; // iframe!.cur_len = alen; - // iframe!.bb = Uint8List(alen); - growableList = iframe!.bb!.toList(growable: true); + iframe!.bb = []; + // growableList = iframe!.bb!.toList(growable: true); } iframe!.bagReceive++; @@ -107,22 +106,14 @@ class CallTalk { // 如果是同一帧就添加起来 if (getIframeIndex == iframe!.iframeIndex) { var getList = bb.sublist(77, bb.length); - growableList.addAll(getList); + iframe!.bb!.addAll(getList); } // print('iframe.bagNum: ${iframe!.bagNum} iframe.bagReceive: ${iframe!.bagReceive}'); // 如果收到的包数等于总包数,说明这一帧数据已经接收完毕 if (iframe!.bagNum == iframe!.bagReceive) { // print('播放第${iframe!.iframeIndex}帧 一帧图片的hexStringData: ${Uint8List.fromList(growableList)}'); - - //判断第一帧是否接收到 - // if (iframe!.iframeIndex == 0) { - // print('得到第一帧了么'); - // getFirstFrame = true; - // eventBus.fire(GetFirstFrameGoPush(getFirstFrame)); - // } - - eventBus.fire(GetTVDataRefreshUI(growableList)); + eventBus.fire(GetTVDataRefreshUI(iframe!.bb!)); } } } @@ -165,6 +156,6 @@ class CallTalk { iframe!.iframeIndex = 0; iframe!.bagNum = 0; iframe!.bagReceive = 0; - growableList = []; + iframe!.bb = []; } } diff --git a/star_lock/lib/talk/call/iFrameInfo.dart b/star_lock/lib/talk/call/iFrameInfo.dart index f244b1c8..5d0951ec 100644 --- a/star_lock/lib/talk/call/iFrameInfo.dart +++ b/star_lock/lib/talk/call/iFrameInfo.dart @@ -4,11 +4,11 @@ class IframeInfo { int iframeIndex = -1; int iframeTime = 0; int bagNum = 0; - int bagReceive = 0; + int bagReceive = 1; bool isFull = false; int cur_len = 0; int bb_len = 0; - Uint8List? bb; + List? bb; int codecMode = 0; IframeInfo() { @@ -17,6 +17,6 @@ class IframeInfo { bagReceive = 0; isFull = false; cur_len = 0; - bb = Uint8List(0); + bb = []; } } diff --git a/star_lock/lib/talk/udp/udp_reciverData.dart b/star_lock/lib/talk/udp/udp_reciverData.dart index 7dc73858..4b4e8ada 100644 --- a/star_lock/lib/talk/udp/udp_reciverData.dart +++ b/star_lock/lib/talk/udp/udp_reciverData.dart @@ -196,6 +196,12 @@ class CommandUDPReciverManager { //结束对讲反馈 print("结束监视反馈"); } + UDPTalkClass().status = 0; + UDPTalkClass().isBeCall = false; + UDPTalkClass().stopLocalAudio(); + CallTalk().stopPcmSound(); + eventBus.fire(GetUDPStatusRefreshUI(UDPTalkClass().status)); + Get.back(); } break; default: