package com.wdkl.callingmainnurse.util; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.util.Log; import com.wdkl.callingmainnurse.MyApplication; import com.wdkl.callingmainnurse.common.Constants; import com.wdkl.callingmainnurse.entity.MessageEntity; import com.wdkl.callingmainnurse.entity.MessageEvent; import com.wdkl.callingmainnurse.entity.SystemSetEntity; import com.wdkl.callingmainnurse.entity.UdpEntity; import com.wdkl.callingmainnurse.ui.activity.InitActivity; import org.greenrobot.eventbus.EventBus; import serialporttest.utils.SerialPortUtil; import static com.wdkl.callingmainnurse.common.Constants.MYSELF_ID; import static com.wdkl.callingmainnurse.common.Constants.TRUST_FLAG_VALUE; /** * Created by 胡博文 on 2017/10/18. */ public class AnalysisUdpUtil { public static String TAG = AnalysisUdpUtil.class.getSimpleName(); public static boolean isOpen = true;//是否开启托管模式 public static UdpEntity udpEntitys;//托管udp信息 private static boolean isReset = false; private AnalysisUdpUtil() { } public static void AnalysisUdp(String udpMsg, Context context) { //接收UDP LogUtil.d("CheckUpdate", "1===udpMsg==" + udpMsg); if (!isOpen) { return; } //判断是否为美元符号开头,如果是则是android 端的命令 if ("$".equals(udpMsg.substring(0, 1))) { udpMsg = delHeadAndEnd(udpMsg, "$", "#"); final String[] data = udpMsg.split(Character.toString((char) 3)); //总控制室主机呼叫 if (Constants.MANAGER_CALL.equals(data[8])) { switch (data[0]) { case "call_12"://总控制室主机呼叫护士主机 UdpEntity udpEntity = new UdpEntity(); udpEntity.setIndexes(data[0]); udpEntity.setNurseHostID(data[1]); udpEntity.setDoorwayMachineID(data[2]); udpEntity.setHeadMachineID(data[3]); udpEntity.setSipAddress(data[4]); udpEntity.setRoomNumber(data[5]); udpEntity.setBedNumber(data[6]); udpEntity.setLevel(data[7]); udpEntity.setType(data[8]); udpEntity.setName(data[9]); udpEntity.setDeviceMAC(data[10]); udpEntity.setShowText("总控制室主机呼叫护士主机"); EventBus.getDefault().post(new MessageEvent(udpEntity, Constants.EVENT_UDP)); break; case "call_12_hang_up": //总控制室主机取消呼叫 UdpEntity call_12_hang_up = new UdpEntity(); call_12_hang_up.setIndexes(data[0]); call_12_hang_up.setNurseHostID(data[1]); call_12_hang_up.setDoorwayMachineID(data[2]); call_12_hang_up.setHeadMachineID(data[3]); call_12_hang_up.setSipAddress(data[4]); call_12_hang_up.setRoomNumber(data[5]); call_12_hang_up.setBedNumber(data[6]); call_12_hang_up.setLevel(data[7]); call_12_hang_up.setType(data[8]); call_12_hang_up.setName(data[9]); call_12_hang_up.setDeviceMAC(data[10]); call_12_hang_up.setShowText("总控制室主机取消呼叫"); EventBus.getDefault().post(new MessageEvent(call_12_hang_up, Constants.EVENT_UDP)); break; } } //医生主机呼叫 if (Constants.DOCTOR_CALL.equals(data[8])) { Log.e(TAG,"data[8] "+data[8]+" data[0] "+data[0]); switch (data[0]) { case "call_14"://医生主机呼叫护士主机 UdpEntity doctor_call_14_nurse_udpEntity = new UdpEntity(); doctor_call_14_nurse_udpEntity.setIndexes(data[0]); doctor_call_14_nurse_udpEntity.setNurseHostID(data[1]); doctor_call_14_nurse_udpEntity.setDoorwayMachineID(data[2]); doctor_call_14_nurse_udpEntity.setHeadMachineID(data[3]); doctor_call_14_nurse_udpEntity.setSipAddress(data[4]); doctor_call_14_nurse_udpEntity.setRoomNumber(data[5]); doctor_call_14_nurse_udpEntity.setBedNumber(data[6]); doctor_call_14_nurse_udpEntity.setLevel(data[7]); doctor_call_14_nurse_udpEntity.setType(data[8]); doctor_call_14_nurse_udpEntity.setName(data[9]); doctor_call_14_nurse_udpEntity.setDeviceMAC(data[10]); doctor_call_14_nurse_udpEntity.setShowText("总控制室主机呼叫护士主机"); EventBus.getDefault().post(new MessageEvent(doctor_call_14_nurse_udpEntity, Constants.EVENT_UDP)); break; case "call_14_hang_up": //医生主机取消呼叫 UdpEntity doctor_call_14_hang_up = new UdpEntity(); doctor_call_14_hang_up.setIndexes(data[0]); doctor_call_14_hang_up.setNurseHostID(data[1]); doctor_call_14_hang_up.setDoorwayMachineID(data[2]); doctor_call_14_hang_up.setHeadMachineID(data[3]); doctor_call_14_hang_up.setSipAddress(data[4]); doctor_call_14_hang_up.setRoomNumber(data[5]); doctor_call_14_hang_up.setBedNumber(data[6]); doctor_call_14_hang_up.setLevel(data[7]); doctor_call_14_hang_up.setType(data[8]); doctor_call_14_hang_up.setName(data[9]); doctor_call_14_hang_up.setDeviceMAC(data[10]); doctor_call_14_hang_up.setShowText("总控制室主机取消呼叫"); EventBus.getDefault().post(new MessageEvent(doctor_call_14_hang_up, Constants.EVENT_UDP)); break; case "call_14_upremove": //医生主机上滑移除了呼叫列表中的一个条目 UdpEntity call_13_upremove = new UdpEntity(); call_13_upremove.setIndexes(data[0]); call_13_upremove.setNurseHostID(data[1]); call_13_upremove.setDoorwayMachineID(data[2]); call_13_upremove.setHeadMachineID(data[3]); call_13_upremove.setSipAddress(data[4]); call_13_upremove.setRoomNumber(data[5]); call_13_upremove.setBedNumber(data[6]); call_13_upremove.setLevel(data[7]); call_13_upremove.setType(data[8]); call_13_upremove.setName(data[9]); call_13_upremove.setDeviceMAC(data[10]); call_13_upremove.setShowText("医生主机上滑移除呼叫列表中的一个条目"); EventBus.getDefault().post(new MessageEvent(call_13_upremove, Constants.EVENT_UDP)); break; } } if (StringUtils.notEmpty(Constants.PartID)) { try { LogUtil.d("AAGGH", "PartID==" + Constants.PartID + "-----UDPPartID==" + data[data.length - 1]); if (!StringUtils.notEmpty(data[data.length - 1]) || !Constants.PartID.equals(data[data.length - 1])) {// 协议规定所有UDP最后一条为 PartID (科室ID)。只有属于自己科室的才能作用 return; } } catch (Exception e) { return; } } //判断indexes 是否为当前端口使用 switch (data[0]) { case "call_1"://床头机呼叫护士主机 case "call_2"://卫生间呼叫护士主机 case "call_4"://增援呼叫护士主机 UdpEntity udpEntity = new UdpEntity(); udpEntity.setIndexes(data[0]); udpEntity.setNurseHostID(data[1]); udpEntity.setDoorwayMachineID(data[2]); udpEntity.setHeadMachineID(data[3]); udpEntity.setSipAddress(data[4]); udpEntity.setRoomNumber(data[5]); udpEntity.setBedNumber(data[6]); udpEntity.setLevel(data[7]); udpEntity.setType(data[8]); udpEntity.setName(data[9]); udpEntity.setDeviceMAC(data[10]); udpEntity.setShowText("床头机呼叫护士主机"); //推向event EventBus.getDefault().post(new MessageEvent(udpEntity, Constants.EVENT_UDP)); break; case "call_1_b1"://护士已经退出护理 UdpEntity call_1_b1 = new UdpEntity(); call_1_b1.setIndexes(data[0]); call_1_b1.setNurseHostID(data[1]); call_1_b1.setDoorwayMachineID(data[2]); call_1_b1.setHeadMachineID(data[3]); call_1_b1.setSipAddress(data[4]); call_1_b1.setRoomNumber(data[5]); call_1_b1.setBedNumber(data[6]); call_1_b1.setLevel(data[7]); call_1_b1.setType(data[8]); call_1_b1.setName(data[9]); call_1_b1.setShowText("护士已经退出护理"); EventBus.getDefault().post(new MessageEvent(call_1_b1, Constants.EVENT_UDP)); break; case "call_1_hang_up": //子机取消呼叫 UdpEntity call_1_hang_up = new UdpEntity(); call_1_hang_up.setIndexes(data[0]); call_1_hang_up.setNurseHostID(data[1]); call_1_hang_up.setDoorwayMachineID(data[2]); call_1_hang_up.setHeadMachineID(data[3]); call_1_hang_up.setSipAddress(data[4]); call_1_hang_up.setRoomNumber(data[5]); call_1_hang_up.setBedNumber(data[6]); call_1_hang_up.setLevel(data[7]); call_1_hang_up.setType(data[8]); call_1_hang_up.setName(data[9]); call_1_hang_up.setDeviceMAC(data[10]); call_1_hang_up.setShowText("子机取消呼叫"); EventBus.getDefault().post(new MessageEvent(call_1_hang_up, Constants.EVENT_UDP)); break; case "call_1_transfer": //床头机转接护士主机电话 UdpEntity call_1_transfer = new UdpEntity(); call_1_transfer.setIndexes(data[0]); call_1_transfer.setNurseHostID(data[1]); call_1_transfer.setDoorwayMachineID(data[2]); call_1_transfer.setHeadMachineID(data[3]); call_1_transfer.setSipAddress(data[4]); call_1_transfer.setRoomNumber(data[5]); call_1_transfer.setBedNumber(data[6]); call_1_transfer.setLevel(data[7]); call_1_transfer.setType(data[8]); call_1_transfer.setName(data[9]); call_1_transfer.setShowText("床头机转接电话请求"); EventBus.getDefault().post(new MessageEvent(call_1_transfer, Constants.EVENT_UDP)); break; case "call_transfer_bedtobed": //子机转接子机成功后,告诉外面执行状态联动 UdpEntity transfer_bedtobed = new UdpEntity(); transfer_bedtobed.setIndexes(data[0]); transfer_bedtobed.setNurseHostID(data[1]); transfer_bedtobed.setDoorwayMachineID(data[2]); transfer_bedtobed.setHeadMachineID(data[3]); transfer_bedtobed.setSipAddress(data[4]); transfer_bedtobed.setRoomNumber(data[5]); transfer_bedtobed.setBedNumber(data[6]); transfer_bedtobed.setLevel(data[7]); transfer_bedtobed.setType(data[8]); transfer_bedtobed.setName(data[9]); transfer_bedtobed.setShowText("子机转接子机成功"); EventBus.getDefault().post(new MessageEvent(transfer_bedtobed, Constants.EVENT_UDP)); break; case "call_3"://床头机呼叫床头机 break; case "call_5"://床头机呼叫手表 break; case "call_6": UdpEntity udpEntity6 = new UdpEntity(); udpEntity6.setIndexes(data[0]); udpEntity6.setNurseHostID(data[1]); udpEntity6.setDoorwayMachineID(data[2]); udpEntity6.setHeadMachineID(data[3]); udpEntity6.setSipAddress(data[4]); udpEntity6.setRoomNumber(data[5]); udpEntity6.setBedNumber(data[6]); udpEntity6.setLevel(data[7]); udpEntity6.setType(data[8]); udpEntity6.setName(data[9]); udpEntity6.setShowText("门口机呼叫护士主机"); EventBus.getDefault().post(new MessageEvent(udpEntity6, Constants.EVENT_UDP)); break; case "call_7": //门口机呼叫医生主机"); break; case "call_8": //护士主机呼叫分机"); break; case "call_9": //护士主机呼叫护士主机"); break; case "call_10": //护士主机呼叫医生主机"); break; case "call_11": //手表呼叫护士主机"); break; case "call_15_doctor_hang_up_phone"://医生主机挂断电话 UdpEntity udpEntity_15_doctor_hang_up_phone = new UdpEntity(); udpEntity_15_doctor_hang_up_phone.setIndexes(data[0]); udpEntity_15_doctor_hang_up_phone.setNurseHostID(data[1]); udpEntity_15_doctor_hang_up_phone.setDoorwayMachineID(data[2]); udpEntity_15_doctor_hang_up_phone.setHeadMachineID(data[3]); udpEntity_15_doctor_hang_up_phone.setSipAddress(data[4]); udpEntity_15_doctor_hang_up_phone.setRoomNumber(data[5]); udpEntity_15_doctor_hang_up_phone.setBedNumber(data[6]); udpEntity_15_doctor_hang_up_phone.setLevel(data[7]); udpEntity_15_doctor_hang_up_phone.setType(data[8]); udpEntity_15_doctor_hang_up_phone.setName(data[9]); udpEntity_15_doctor_hang_up_phone.setDeviceMAC(data[10]); udpEntity_15_doctor_hang_up_phone.setShowText("医生主机挂断电话"); //推向event EventBus.getDefault().post(new MessageEvent(udpEntity_15_doctor_hang_up_phone, Constants.EVENT_UDP)); break; case "end_1": //挂断"); break; case "deposit_1"://主机一托管给主机二 case "deposit_2"://主机一取消托管 case "deposit_3"://主机二同意托管 case "deposit_4"://主机二不托管 udpEntitys = new UdpEntity(); udpEntitys.setIndexes(data[0]); udpEntitys.setNurseHostID(data[1]); udpEntitys.setDoorwayMachineID(data[2]); udpEntitys.setHeadMachineID(data[3]); udpEntitys.setSipAddress(data[4]); udpEntitys.setRoomNumber(data[5]); udpEntitys.setBedNumber(data[6]); udpEntitys.setLevel(data[7]); udpEntitys.setType(data[8]); udpEntitys.setName(data[9]); udpEntitys.setShowText("护士主机托管护士主机"); if (udpEntitys.getNurseHostID().equals(MYSELF_ID) || udpEntitys.getDoorwayMachineID().equals(MYSELF_ID)) { EventBus.getDefault().post(new MessageEvent(3, Constants.EVENT_FRAGMENT)); EventBus.getDefault().post(new MessageEvent(11, Constants.EVENT_FRAGMENT_TRUST)); } break; case "nursing_1"://进入护理 UdpEntity nursing_1 = new UdpEntity(); nursing_1.setIndexes(data[0]); nursing_1.setNurseHostID(data[1]); nursing_1.setDoorwayMachineID(data[2]); nursing_1.setHeadMachineID(data[3]); nursing_1.setSipAddress(data[4]); nursing_1.setRoomNumber(data[5]); nursing_1.setBedNumber(data[6]); nursing_1.setLevel(data[7]); nursing_1.setType(data[8]); nursing_1.setName(data[9]); EventBus.getDefault().post(new MessageEvent(nursing_1, Constants.EVENT_UDP)); break; case "nursing_2"://退出护理 UdpEntity nursing_2 = new UdpEntity(); nursing_2.setIndexes(data[0]); nursing_2.setNurseHostID(data[1]); nursing_2.setDoorwayMachineID(data[2]); nursing_2.setHeadMachineID(data[3]); nursing_2.setSipAddress(data[4]); nursing_2.setRoomNumber(data[5]); nursing_2.setBedNumber(data[6]); nursing_2.setLevel(data[7]); nursing_2.setType(data[8]); nursing_2.setName(data[9]); EventBus.getDefault().post(new MessageEvent(nursing_2, Constants.EVENT_UDP)); break; case "cancel_bed_call"://门口机取消呼叫 UdpEntity cancel_bed_call = new UdpEntity(); cancel_bed_call.setIndexes(data[0]); cancel_bed_call.setNurseHostID(data[1]); cancel_bed_call.setDoorwayMachineID(data[2]); cancel_bed_call.setHeadMachineID(data[3]); cancel_bed_call.setSipAddress(data[4]); cancel_bed_call.setRoomNumber(data[5]); cancel_bed_call.setBedNumber(data[6]); cancel_bed_call.setLevel(data[7]); cancel_bed_call.setType(data[8]); cancel_bed_call.setName(data[9]); cancel_bed_call.setShowText("门口机取消呼叫"); EventBus.getDefault().post(new MessageEvent(cancel_bed_call, Constants.EVENT_UDP)); break; case "MGR_VOICEMESSAGE"://语音留言 if (!Constants.VOICE_MESSAGE_HOSMANINFO_NURSE.equals(data[1]) || !Constants.VOICE_MESSAGE_DEVICETYPE_NURSE.equals(data[2]) || !Constants.VOICE_MESSAGE_DEVICEID_NURSE.equals(data[3]) || !Constants.VOICE_MESSAGE_PATIENTID_NURSE.equals(data[4]) || !Constants.VOICE_MESSAGE_PATIENTNAME_NURSE.equals(data[5]) || !Constants.VOICE_MESSAGE_FILEORIGINALNAME_NURSE.equals(data[6]) || !Constants.VOICE_MESSAGE_FILESTORENAME_NURSE.equals(data[7]) || !Constants.VOICE_MESSAGE_MESSAGETIME_NURSE.equals(data[8]) || !Constants.VOICE_MESSAGE_CONTENT_NURSE.equals(data[9]) || !Constants.VOICE_MESSAGE_ID_NURSE.equals(data[10]) ) { Constants.VOICE_MESSAGE_HOSMANINFO_NURSE = data[1]; Constants.VOICE_MESSAGE_DEVICETYPE_NURSE = data[2]; Constants.VOICE_MESSAGE_DEVICEID_NURSE = data[3]; Constants.VOICE_MESSAGE_PATIENTID_NURSE = data[4]; Constants.VOICE_MESSAGE_PATIENTNAME_NURSE = data[5]; Constants.VOICE_MESSAGE_FILEORIGINALNAME_NURSE = data[6]; Constants.VOICE_MESSAGE_FILESTORENAME_NURSE = data[7]; Constants.VOICE_MESSAGE_MESSAGETIME_NURSE = data[8]; if (data.length > 9) Constants.VOICE_MESSAGE_CONTENT_NURSE = data[9]; if (data.length > 10) Constants.VOICE_MESSAGE_ID_NURSE = data[10]; MessageEntity messageEntity = new MessageEntity(); messageEntity.setIndexes(data[0]); messageEntity.setHosManInfo(data[1]); messageEntity.setDeviceType(data[2]); messageEntity.setDeviceID(data[3]); messageEntity.setPatientID(data[4]); messageEntity.setPatientName(data[5]); messageEntity.setFileOriginalName(data[6]); messageEntity.setFileStoreName(data[7]); messageEntity.setMessageTime(data[8]); if (data.length > 9) messageEntity.setContent(data[9]); if (data.length > 10) messageEntity.setID(data[10]); EventBus.getDefault().post(new MessageEvent(messageEntity, Constants.EVENT_VOICE_MESSAGE)); } else { return; } case "back_1": //呼叫回复"); break; } } else if ("#".equals(udpMsg.substring(0, 1))) { //判断是否为服务端发过来的命令 udpMsg = delHeadAndEnd(udpMsg, "#", "$"); String[] data = udpMsg.split(Constants.DELIMITER); if(StringUtils.notEmpty(Constants.PartID)){ try { LogUtil.d("AAGGH", "PartID==" + Constants.PartID+"-----UDPPartID=="+data[data.length - 1]); if (!StringUtils.notEmpty(data[data.length - 1]) || !Constants.PartID.equals(data[data.length - 1])) {// 协议规定所有UDP最后一条为 PartID (科室ID)。只有属于自己科室的才能作用 return; } } catch (Exception e) { return; } } switch (data[0]) { case "MGR_UPDATE"://后台相关数据改变后通知护士主机刷新UI if (!Constants.MGR_UPDATE) { Constants.MGR_UPDATE = true; EventBus.getDefault().post(new MessageEvent(null, Constants.EVENT_MGR_UPDATE)); } break; case "HEART"://服务端定时发送心跳监听;APP回复 if (data[1].equals(Constants.MAC_ADDRESS)) { sendString("HEART," + Constants.MAC_ADDRESS); } break; case "MGR_SHUTDOWN": //关机 //批量关机 if (data[1].equals(Constants.MAC_ADDRESS) || (data[1].equals("FF:FF:FF:FF:FF:FF"))) { AutoRebootUtil.shutdown();//调用Linux-shell命令 } break; case "MGR_RESET"://重启AP //批量重启() if (data[1].equals(Constants.MAC_ADDRESS) || (data[1].equals("FF:FF:FF:FF:FF:FF") && data[2].equals(Constants.MYSELF_ID))) { TRUST_FLAG_VALUE = 66; // EventBus.getDefault().post(new MessageEvent("reset", Constants.EVENT_MGR_RESET)); if (!isReset) { isReset = true; Intent mStartActivity = new Intent(MyApplication.getAppContext(), InitActivity.class); int mPendingIntentId = 123456; PendingIntent mPendingIntent = PendingIntent.getActivity(MyApplication.getAppContext(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT); AlarmManager mgr = (AlarmManager) MyApplication.getAppContext().getSystemService(Context.ALARM_SERVICE); mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, mPendingIntent); System.exit(0); } } else { //重启失败 TRUST_FLAG_VALUE = 88; } EventBus.getDefault().post(new MessageEvent(TRUST_FLAG_VALUE, Constants.EVENT_FRAGMENT_TRUST)); break; case "MGR_SYSTEM_RESET"://系统重启 if (data[1].equals(Constants.MAC_ADDRESS)) { if (SerialPortUtil.systemVersionIsO()) {//安卓8.1.0 版用 MyApplication.serialPortUtil.systemRestart();//调用吴总串口 } else { AutoRebootUtil.reboot();//调用Linux-shell命令 } } break; //给出设备信息 case "MGR_REG_Q": try { if (data[1].equals(Constants.MAC_ADDRESS)) { //有线mac地址,设备出场信息,无线mac地址 String str = "$MGR_REG_A" + Constants.DELIMITER + Constants.MAC_ADDRESS + Constants.DELIMITER + "1" + Constants.DELIMITER + android.os.Build.DISPLAY + Constants.DELIMITER + Constants.MAC_ADDRESS + Constants.DELIMITER + "FF:FF:FF:FF:FF:FF" + Constants.DELIMITER + SerialPortUtil.KEY_ID + "#"; UdpHelper.send(str); } } catch (ArrayIndexOutOfBoundsException e) { e.printStackTrace(); } break; case "MGR_MACHINE_SETSYS": //系统设置 try { LogUtil.d("MGR_MACHINE_SETSYS", data[1] + "--" + data[2] + "--" + data[3] + "--" + data[4] + "--" + data[5] + "--" + data[6] + "--" + data[7] + "--" + data[8] + "--" + data[9] + "--" + data[10] + "--" + data[13]); if (!Constants.MORNING_NIGTH.equals(data[1]) || !Constants.SCREENLIGHT.equals(data[2]) || !Constants.BEDSYSVOICE.equals(data[3]) || !Constants.RINGLVOICE.equals(data[4]) || !Constants.RINGLVOICELOOP.equals(data[5]) || !Constants.NURSINGLIGHT.equals(data[6]) || !Constants.CALLINGTIMEOUT.equals(data[7]) || !Constants.SCREENEXTINGUISHTIME.equals(data[8]) || !Constants.DOORCALLVOICE.equals(data[9]) || !Constants.BEDCALLVOICE.equals(data[10]) || !Constants.VOICE_BROADCAST_TYPE.equals(data[13]) ) { Constants.MORNING_NIGTH = data[1]; Constants.SCREENLIGHT = data[2]; Constants.BEDSYSVOICE = data[3]; Constants.RINGLVOICE = data[4]; Constants.RINGLVOICELOOP = data[5]; Constants.NURSINGLIGHT = data[6]; Constants.CALLINGTIMEOUT = data[7]; Constants.SCREENEXTINGUISHTIME = data[8]; Constants.DOORCALLVOICE = data[9]; Constants.BEDCALLVOICE = data[10]; Constants.VOICE_BROADCAST_TYPE = data[13]; SystemSetEntity machine_setsys = new SystemSetEntity(data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8]); EventBus.getDefault().post(new MessageEvent(machine_setsys, Constants.EVENT_SETSYS)); } } catch (Exception e) { } break; case "MGR_APPUPDATE": //APP更新 LogUtil.d("CheckUpdate", "2===data[1]==" + data[1] + "----UPDATE_APP_FLAG==" + Constants.UPDATE_APP_FLAG); if (data[1].equals("1")) { if (!Constants.UPDATE_APP_FLAG) { Constants.UPDATE_APP_FLAG = true; EventBus.getDefault().post(new MessageEvent(null, Constants.EVENT_MGR_APP_UPDATE)); } } break; case "MGR_VOICEMESSAGE"://语音留言 String flag = ""; if (data.length > 7) { flag = data[7]; if (!flag.contains(".amr")) { flag += ".amr"; } } if (data.length > 8) flag = data[8]; if (!Constants.setVoiceTimes(flag)) { MessageEntity messageEntity = new MessageEntity(); messageEntity.setIndexes(data[0]); messageEntity.setHosManInfo(data[1]); messageEntity.setDeviceType(data[2]); messageEntity.setDeviceID(data[3]); messageEntity.setPatientID(data[4]); messageEntity.setPatientName(data[5]); messageEntity.setFileOriginalName(data[6]); if (!data[7].contains(".amr")) { data[7] += ".amr"; } messageEntity.setFileStoreName(data[7]); if (data.length > 8) messageEntity.setMessageTime(data[8]); if (data.length > 9) messageEntity.setContent(data[9]); if (data.length > 10) messageEntity.setID(data[10]); EventBus.getDefault().post(new MessageEvent(messageEntity, Constants.EVENT_VOICE_MESSAGE)); } else { Log.d("", ""); return; } break; } } } public static void sendUdpData(String Indexes, String nurseHostID, String doorwayMachineID, String headMachineID, String sipAddress, String roomNumber, String bedNumber, String level, String type, String name, String deviceMAC) { final String strUdp = Indexes + Character.toString((char) 3) + nurseHostID + Character.toString((char) 3) + doorwayMachineID + Character.toString((char) 3) + headMachineID + Character.toString((char) 3) + sipAddress + Character.toString((char) 3) + roomNumber + Character.toString((char) 3) + bedNumber + Character.toString((char) 3) + level + Character.toString((char) 3) + type + Character.toString((char) 3) + name + Character.toString((char) 3) + deviceMAC + Character.toString((char) 3) + Constants.PartID;//add by waderson 20190627 加了一个partId (科室ID) new Thread() { @Override public void run() { //把网络访问的代码放在这里 UdpHelper.send("$" + strUdp + "#"); } }.start(); } /** * 直接UDP 发送一条字符串 */ public static void sendString(final String str) { new Thread() { @Override public void run() { //把网络访问的代码放在这里 UdpHelper.send("$" + str + "#"); } }.start(); } public static String delHeadAndEnd(String source, String beginTrim, String endTrim) { if (source == null) { return ""; } source = source.trim(); // 循环去掉字符串首的beTrim字符 if (source.isEmpty()) { return ""; } String beginChar = source.substring(0, 1); if (beginChar.equalsIgnoreCase(beginTrim)) { source = source.substring(1, source.length()); beginChar = source.substring(0, 1); } // 循环去掉字符串尾的beTrim字符 String endChar = source.substring(source.length() - 1, source.length()); if (endChar.equalsIgnoreCase(endTrim)) { source = source.substring(0, source.length() - 1); endChar = source.substring(source.length() - 1, source.length()); } return source; } }