import 'dart:typed_data'; import '../../tools/toast.dart'; import '../call/callTalk.dart'; import 'udp_talkClass.dart'; class CommandUDPReciverManager { static void appDataReceive(List data) async { ///解析数据 if (data.isEmpty) { return; } int dataSize = data.length; if (dataSize < 4) { return; } print("appDataReceiveData:$data"); Uint8List data1 = Uint8List.fromList(data); if (data1.length == 1) { if (data[0] == 0x30 || data[0] == 0x31) { print("p2p打洞"); } } if (data[6] == 4) { if (data[7] == 2) { // print("心跳包反馈 在线状态"); } else if (data[7] == 3) { [Toast.show(msg: "您已在其他设备登录")]; } } else if (data[6] == 150) { // if( [Pub getApp].isBack){ // [_udp receiveWithTimeout:-1 tag:0]; // return YES; // } // 对讲命令 var beiCallType = data[8] & 0xff; print("被呼叫类型$beiCallType"); switch (beiCallType) { case 1: { //被叫 UDPTalkClass().beCallW(data: data); } break; case 6: { //接听 if ((data[7] & 0x3) == 2) { //被叫 接听反馈 print("接听反馈"); } } break; case 7: case 8: { //音视频数据 // print("音视频数据"); CallTalk cllTalk = CallTalk(); cllTalk.getAVData(data1, data1.length); } break; case 9: { if ((data[7] & 0x3) == 1) { //对方保持连接 //print("对方保持连接"); data[7] = 2; } else { //print("保持连接反馈"); } } break; case 10: { //开门反馈 if ((data[7] & 0x3) == 2) { print("开门成功"); } else {} } break; case 30: { //开门反馈 if ((data[7] & 0x3) == 1) { //对方结束对讲 print("对方结束对讲"); } else { //结束对讲反馈 print("结束对讲反馈"); } } break; case 140: { // p2p测试 } break; case 141: { // p2p测试 } break; case 142: { // p2p测试 } break; case 143: { //p2p测试 NSAsk print("p2pNSAskNSAsk"); } break; default: break; } } else if (data[6] == 152) { // 监视命令 switch (data[8] & 0xff) { case 2: { //被叫 print("对方忙"); } break; case 4: { //监视成功 print("监视成功"); } break; case 7: case 8: { //音视频数据 //print("音视频数据"); } break; case 9: { //保持连接 if ((data[7] & 0x3) == 1) { //对方保持连接 //print("对方保持连接"); data[7] = 2; } else { //print("保持连接反馈"); } } break; case 10: { //开门反馈 if ((data[7] & 0x3) == 2) { print("开门成功"); } else {} } break; case 30: { // 监视结束 if ((data[7] & 0x3) == 1) { // 对方结束监视 print("对方结束监视"); } else { //结束对讲反馈 print("结束监视反馈"); } } break; default: break; } } } }