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