From cc2950410bfddb0ef791be828d8f2ce50d29c59d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CDaisyWu=E2=80=9D?= <“18682150237@163.com”> Date: Mon, 24 Feb 2025 19:01:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20iOS=E7=AB=AFAPP=E5=88=B0=E9=94=81?= =?UTF-8?q?=E5=A3=B0=E9=9F=B3=E7=9A=84=E8=B0=83=E4=BC=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/talkView/talk_view_logic.dart | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/talk/starChart/views/talkView/talk_view_logic.dart b/lib/talk/starChart/views/talkView/talk_view_logic.dart index 4a64ebe9..830360c1 100644 --- a/lib/talk/starChart/views/talkView/talk_view_logic.dart +++ b/lib/talk/starChart/views/talkView/talk_view_logic.dart @@ -47,7 +47,7 @@ class TalkViewLogic extends BaseGetXController { int minFrameIntervalMs = 30; // 最小帧间隔(约33 FPS) int maxFrameIntervalMs = 100; // 最大帧间隔(约1 FPS) // 定义音频帧缓冲和发送函数 - List _bufferedAudioFrames = []; + final List _bufferedAudioFrames = []; /// 初始化音频播放器 void _initFlutterPcmSound() { @@ -565,8 +565,8 @@ class TalkViewLogic extends BaseGetXController { state.endRecordingAudioTime.value = DateTime.now(); // 计算录音的持续时间 - final duration = state.endRecordingAudioTime.value! - .difference(state.startRecordingAudioTime.value!); + final Duration duration = state.endRecordingAudioTime.value + .difference(state.startRecordingAudioTime.value); state.recordingAudioTime.value = duration.inSeconds; } on PlatformException catch (ex) { @@ -587,16 +587,25 @@ class TalkViewLogic extends BaseGetXController { final int ms = DateTime.now().millisecondsSinceEpoch - state.startRecordingAudioTime.value.millisecondsSinceEpoch; - Future.delayed(const Duration(milliseconds: 1000)).whenComplete(() async { + int getFrameLength = state.frameLength; + if (Platform.isIOS) { + getFrameLength = state.frameLength * 2; + } + + if (_bufferedAudioFrames.length >= getFrameLength) { // 发送音频数据到UDP - await StartChartManage().sendTalkDataMessage( + await StartChartManage() + .sendTalkDataMessage( talkData: TalkData( - content: list, + content: _bufferedAudioFrames, contentType: TalkData_ContentTypeE.G711, durationMs: ms, ), - ); - }); + ) + .then((value) { + _bufferedAudioFrames.clear(); + }); + } } // 错误监听