import 'dart:async'; import 'package:fast_gbk/fast_gbk.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../appRouters.dart'; import '../../main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart'; import '../../tools/storage.dart'; import 'udp_manage.dart'; class UDPTalkClass{ static UDPTalkClass? _manager; static UDPTalkClass _share(){ _manager ??= UDPTalkClass._init(); return _manager!; } factory UDPTalkClass() => _share(); UDPTalkClass get manager => _share(); UDPTalkClass._init(); var status = 0;// 0空闲 var remoteEquid;// 手机号 late Timer timer; // 该字段是为了判断是否跳转到接听界面 挂断或者退出接听界面要记得变更状态 var isBeCall = false; beCallW({List? data, String? ip, int? port}) async { // print("beCall"); // if (await isCallMe(data)) { // return; // } if(status == 0){ // 空闲 // 响铃 // [[Pub getApp] ring]; remoteEquid = getEquidFrombb(data, 9); status = 6; // 呼叫应答,呼叫成功 data![7] = 1; data[8] = 4; UDPManage().sendData(data); // 门锁发送视频 data[7] = 1; data[8] = 5; UDPManage().sendData(data); // Get.to(MaterialPageRoute( // builder: (context) { // return const LockMonitoringPage(); // }, // fullscreenDialog: true // )); if(UDPTalkClass().isBeCall == false){ UDPTalkClass().isBeCall = true; // 保持连接 timer = Timer.periodic(1.seconds, (timer) { data[7] = 1; data[8] = 9; UDPManage().sendData(data); }); } Get.toNamed(Routers.lockMonitoringPage, arguments: { "lockId": "111" }); }else{ // 忙 } } // 判断是否是call的本人 Future isCallMe(List? data) async { final loginData = await Storage.getLoginData(); print("getEquidFrombb(data, 1000):${getEquidFrombb(data, 12)}"); if(loginData!.mobile == getEquidFrombb(data, 12)){ return true; } return false; } String getEquidFrombb(List? bb, int pos) { var equid = ""; int equlen = 8; if (bb![pos] == 77) { //M equlen = 8; } else if (bb[pos] == 87) { //W equlen = 5; } else if (bb[pos] == 72) { //H equlen = 12; } else if (bb[pos] == 83) { //S equlen = 12; } else if (bb[pos] == 0x50) { //P equlen = 12; } else if (bb[pos] == 0x54) { //T equlen = 16; } else { equlen = 12; } List tempbb = bb.sublist(pos, pos + equlen); equid = gbk.decode(tempbb); return equid; } }