fix:补充测试代码

This commit is contained in:
liyi 2024-12-25 09:41:46 +08:00
parent 0f65751f48
commit cdbd0c3d03
5 changed files with 105 additions and 54 deletions

View File

@ -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

View File

@ -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;
// trueUI
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;
// // trueUI
// 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() {

View File

@ -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;

View File

@ -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;

View File

@ -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)}');
}
}