fix:补充测试代码
This commit is contained in:
parent
0f65751f48
commit
cdbd0c3d03
@ -22,6 +22,9 @@ class StarChartLogic extends BaseGetXController {
|
||||
/// 收到Talk发送的状态
|
||||
StreamSubscription? _getTalkStatusRefreshUIEvent;
|
||||
|
||||
int startTime = DateTime.now().millisecondsSinceEpoch;
|
||||
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
super.onReady();
|
||||
@ -73,6 +76,22 @@ class StarChartLogic extends BaseGetXController {
|
||||
});
|
||||
}
|
||||
|
||||
void syncPlay() {
|
||||
int currentTime = DateTime.now().millisecondsSinceEpoch - startTime;
|
||||
|
||||
// 播放音频
|
||||
// while (audioBuffer.isNotEmpty && audioBuffer.first.durationMs <= currentTime) {
|
||||
// TalkData audioData = audioBuffer.removeAt(0);
|
||||
// playAudio(audioData.content);
|
||||
// }
|
||||
//
|
||||
// // 播放视频
|
||||
// while (videoBuffer.isNotEmpty && videoBuffer.first.durationMs <= currentTime) {
|
||||
// TalkData videoData = videoBuffer.removeAt(0);
|
||||
// playVideo(videoData.content);
|
||||
// }
|
||||
}
|
||||
|
||||
/// 播放音频数据
|
||||
Future<void> _playG711Data(List<int> pcmData) async {
|
||||
// 将 PCM 数据转换为 PcmArrayInt16
|
||||
|
||||
@ -38,7 +38,7 @@ class _StarChartPageState extends State<StarChartPage> {
|
||||
super.initState();
|
||||
|
||||
initAsync();
|
||||
_getTVDataRefreshUIAction();
|
||||
// _getTVDataRefreshUIAction();
|
||||
}
|
||||
|
||||
Future<void> initAsync() async {
|
||||
@ -265,52 +265,52 @@ class _StarChartPageState extends State<StarChartPage> {
|
||||
}
|
||||
}
|
||||
|
||||
void _getTVDataRefreshUIAction() {
|
||||
// state.getTVDataRefreshUIEvent = eventBus
|
||||
// .on<GetTVDataRefreshUI>()
|
||||
// .listen((GetTVDataRefreshUI event) async {
|
||||
// if (event.tvList.isNotEmpty && event.tvList.length > 100) {
|
||||
// final Uint8List imageData = Uint8List.fromList(event.tvList);
|
||||
// if (!listEquals(state.listPhotoData.value, imageData)) {
|
||||
// state.listPhotoData.value = imageData;
|
||||
// state.shouldUpdateUI.value = true;
|
||||
// if (state.shouldUpdateUI.value) {
|
||||
// setState(() {});
|
||||
// state.shouldUpdateUI.value = false;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
state.talkDataRepository.talkDataStream.listen((talkData) {
|
||||
final contentType = talkData.contentType;
|
||||
// 判断数据类型,进行分发处理
|
||||
switch (contentType) {
|
||||
case TalkData_ContentTypeE.Image:
|
||||
state.listPhotoData.value = Uint8List.fromList(talkData.content);
|
||||
if (talkData.content.isNotEmpty && talkData.content.length > 100) {
|
||||
// 比较新旧数据是否相同
|
||||
final Uint8List imageData = Uint8List.fromList(talkData.content);
|
||||
if (!listEquals(state.listPhotoData.value, imageData)) {
|
||||
// 更新状态
|
||||
state.listPhotoData.value = imageData;
|
||||
// 设置标志为true,表示需要更新UI
|
||||
state.shouldUpdateUI.value = true;
|
||||
// WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
// 调用setState方法之前检查标志,只有当标志为true时才更新UI
|
||||
if (state.shouldUpdateUI.value) {
|
||||
setState(() {
|
||||
// 更新UI
|
||||
});
|
||||
// 更新完UI后将标志重新设置为false
|
||||
state.shouldUpdateUI.value = false;
|
||||
}
|
||||
// });
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
// void _getTVDataRefreshUIAction() {
|
||||
// // state.getTVDataRefreshUIEvent = eventBus
|
||||
// // .on<GetTVDataRefreshUI>()
|
||||
// // .listen((GetTVDataRefreshUI event) async {
|
||||
// // if (event.tvList.isNotEmpty && event.tvList.length > 100) {
|
||||
// // final Uint8List imageData = Uint8List.fromList(event.tvList);
|
||||
// // if (!listEquals(state.listPhotoData.value, imageData)) {
|
||||
// // state.listPhotoData.value = imageData;
|
||||
// // state.shouldUpdateUI.value = true;
|
||||
// // if (state.shouldUpdateUI.value) {
|
||||
// // setState(() {});
|
||||
// // state.shouldUpdateUI.value = false;
|
||||
// // }
|
||||
// // }
|
||||
// // }
|
||||
// // });
|
||||
// state.talkDataRepository.talkDataStream.listen((talkData) {
|
||||
// final contentType = talkData.contentType;
|
||||
// // 判断数据类型,进行分发处理
|
||||
// switch (contentType) {
|
||||
// case TalkData_ContentTypeE.Image:
|
||||
// state.listPhotoData.value = Uint8List.fromList(talkData.content);
|
||||
// if (talkData.content.isNotEmpty && talkData.content.length > 100) {
|
||||
// // 比较新旧数据是否相同
|
||||
// final Uint8List imageData = Uint8List.fromList(talkData.content);
|
||||
// if (!listEquals(state.listPhotoData.value, imageData)) {
|
||||
// // 更新状态
|
||||
// state.listPhotoData.value = imageData;
|
||||
// // 设置标志为true,表示需要更新UI
|
||||
// state.shouldUpdateUI.value = true;
|
||||
// // WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
// // 调用setState方法之前检查标志,只有当标志为true时才更新UI
|
||||
// if (state.shouldUpdateUI.value) {
|
||||
// setState(() {
|
||||
// // 更新UI
|
||||
// });
|
||||
// // 更新完UI后将标志重新设置为false
|
||||
// state.shouldUpdateUI.value = false;
|
||||
// }
|
||||
// // });
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
|
||||
@ -30,11 +30,20 @@ class UdpTalkDataHandler extends ScpMessageBaseHandle
|
||||
talkDataOverTimeTimerManager.receiveMessage();
|
||||
if (scpMessage.Payload != null) {
|
||||
final TalkData talkData = scpMessage.Payload;
|
||||
print('talkData: ${listToHexString(talkData.content)}');
|
||||
|
||||
// 处理音视频数据
|
||||
_handleTalkData(talkData: talkData);
|
||||
}
|
||||
}
|
||||
|
||||
String listToHexString(List<int> intList) {
|
||||
// 将整数列表转换为十六进制字符串列表
|
||||
List<String> hexList = intList.map((num) => num.toRadixString(16)).toList();
|
||||
// 将十六进制字符串列表连接成一个字符串,没有空格
|
||||
return hexList.join('');
|
||||
}
|
||||
|
||||
void _handleTalkData({required TalkData talkData}) {
|
||||
if (talkData == null) return;
|
||||
final contentType = talkData.contentType;
|
||||
|
||||
@ -115,12 +115,13 @@ class ScpMessageBaseHandle {
|
||||
final TalkData talkData = TalkData();
|
||||
talkData.mergeFromBuffer(completePayload);
|
||||
return talkData;
|
||||
} else if (payloadType == PayloadTypeConstant.echoTest) {
|
||||
return completePayload;
|
||||
} else {
|
||||
String payload = utf8.decode(completePayload);
|
||||
return payload;
|
||||
}
|
||||
// if (payloadType == PayloadTypeConstant.echoTest) {
|
||||
// return completePayload;
|
||||
// } else {
|
||||
// String payload = utf8.decode(completePayload);
|
||||
// return payload;
|
||||
// }
|
||||
} else {
|
||||
// 如果分包尚未接收完全,返回 null 或其他指示符
|
||||
return null;
|
||||
|
||||
@ -330,6 +330,14 @@ class StartChartManage {
|
||||
|
||||
// 发送同意接听消息
|
||||
void sendTalkAcceptMessage() async {
|
||||
if (talkStatus.status == TalkStatus.duringCall) {
|
||||
_log(text: '已经在通话中,请勿重复发送同意接听消息');
|
||||
return;
|
||||
}
|
||||
if (talkStatus.status != TalkStatus.waitingAnswer) {
|
||||
_log(text: '当前未处于等待接听状态, 无法发送同意接听消息');
|
||||
return;
|
||||
}
|
||||
final message = MessageCommand.talkAcceptMessage(
|
||||
ToPeerId: ToPeerId,
|
||||
FromPeerId: FromPeerId,
|
||||
@ -341,6 +349,10 @@ class StartChartManage {
|
||||
|
||||
// 发送拒绝接听消息
|
||||
void sendTalkRejectMessage() async {
|
||||
if (talkStatus.status != TalkStatus.waitingAnswer) {
|
||||
_log(text: '当前未处于等待接听状态, 无法发送拒绝接听消息');
|
||||
return;
|
||||
}
|
||||
final message = MessageCommand.talkRejectMessage(
|
||||
ToPeerId: ToPeerId,
|
||||
FromPeerId: FromPeerId,
|
||||
@ -351,6 +363,10 @@ class StartChartManage {
|
||||
|
||||
// 发送期望接受消息
|
||||
void sendTalkExpectMessage({required TalkExpect talkExpect}) async {
|
||||
if (talkStatus.status != TalkStatus.duringCall) {
|
||||
_log(text: '当前未处于接听状态, 无法发送期望接受数据消息');
|
||||
return;
|
||||
}
|
||||
final message = MessageCommand.talkExpectMessage(
|
||||
ToPeerId: ToPeerId,
|
||||
FromPeerId: FromPeerId,
|
||||
@ -391,6 +407,10 @@ class StartChartManage {
|
||||
// 发送通话保持消息
|
||||
Future<void> sendTalkPingMessage(
|
||||
{required String ToPeerId, required String FromPeerId}) async {
|
||||
if (talkStatus.status != TalkStatus.duringCall) {
|
||||
_log(text: '当前未处于接听状态, 无法发送通话保持消息');
|
||||
return;
|
||||
}
|
||||
final message = MessageCommand.talkPingMessage(
|
||||
ToPeerId: ToPeerId,
|
||||
FromPeerId: FromPeerId,
|
||||
@ -401,6 +421,10 @@ class StartChartManage {
|
||||
|
||||
// 发送通话中挂断消息
|
||||
Future<void> sendTalkHangupMessage() async {
|
||||
if (talkStatus.status != TalkStatus.duringCall) {
|
||||
_log(text: '当前未处于接听状态, 无法发送通话中挂断消息');
|
||||
return;
|
||||
}
|
||||
final message = MessageCommand.talkHangupMessage(
|
||||
ToPeerId: ToPeerId,
|
||||
FromPeerId: FromPeerId,
|
||||
@ -475,7 +499,6 @@ class StartChartManage {
|
||||
StarChartRegisterNodeEntity starChartRegisterNodeEntity) async {
|
||||
if (starChartRegisterNodeEntity != null) {
|
||||
await Storage.saveStarChartRegisterNodeInfo(starChartRegisterNodeEntity);
|
||||
_log(text: '注册成功');
|
||||
}
|
||||
}
|
||||
|
||||
@ -764,7 +787,6 @@ class StartChartManage {
|
||||
if (deserialize.Payload != null) {
|
||||
_log(text: 'Udp收到结构体数据---》$deserialize');
|
||||
}
|
||||
|
||||
// _log(text: 'text---》${utf8.decode(deserialize.Payload)}');
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user