app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt
@@ -12,6 +12,9 @@ import org.json.JSONObject import safeluck.drive.evaluation.DB.Constant import safeluck.drive.evaluation.DB.WorkRoomDataBase import safeluck.drive.evaluation.bean.ExamPlatformData import safeluck.drive.evaluation.im.IMSClientBootstrap import safeluck.drive.evaluation.platformMessage.PlatFormConstant class RTKConfigUpdateWorker(context:Context, workerParams: WorkerParameters) :Worker(context, workerParams){ @@ -21,7 +24,7 @@ override fun doWork(): Result { var data = inputData.getString(Constant.RTK_CONFIG_UPDATE_JSON) Log.i(TAG,"更新RTK_config imei phone sn="+data) MyLog.i(PlatFormConstant.RTK,"更新RTK_config imei phone sn="+data) var imei:String="" var phone:String="" var sn:String="" @@ -29,6 +32,7 @@ var jsonObject: JSONObject? = null jsonObject = JSONObject(data) sn = jsonObject.getString(Constant.RTK_CONFIG_SN) ExamPlatformData.getInstance().setPhone(sn); Log.i(TAG,"sn="+sn) imei = sn.substring(1) Log.i(TAG,"imei="+imei) @@ -39,6 +43,8 @@ */ phone = sn Log.i(TAG,"phone="+phone) MyLog.i(PlatFormConstant.TAG,"重置TCP连接") IMSClientBootstrap.getInstance().resetConnect(); } var rtkConfigDao = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao.also { it.update(sn, imei, phone) app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -139,9 +139,10 @@ public void onChanged(RTKConfig rtkConfig) { MyLog.i(TAG, "RTKConfig Changed: " + (rtkConfig != null ? rtkConfig.toString() : "null")); mRTKConfig = rtkConfig; if (rtkConfig != null) ExamPlatformData.getInstance().setPhone(rtkConfig.getSn()); mRTKConfig = rtkConfig; synchronized (MainActivity.this){ // if (onlySendOnceRTKConfig){ // MyLog.i(TAG,"进入 synchronized (MainActivity.this)"); @@ -291,7 +292,6 @@ JKMessage0100 jkRegisterMessage = new JKMessage0100(); if (mRTKConfig!=null){ jkRegisterMessage.phone = ExamPlatformData.getInstance().getPhone(); jkRegisterMessage.proviceid = mRTKConfig.getProvince(); jkRegisterMessage.cityid = mRTKConfig.getCity(); jkRegisterMessage.imei = mRTKConfig.getImei(); @@ -307,7 +307,6 @@ }else{ MyLog.i(PlatFormConstant.TAG,"密码存在,已注册过,直接发鉴权消息"); JKMessage0101 jkMessage0101 = new JKMessage0101(); jkMessage0101.phone = ExamPlatformData.getInstance().getPhone(); String des = hexPwd; long time = System.currentTimeMillis()/1000; int unsignedInt = Utils.parseUnsignedInt(String.valueOf(time),10); app/src/main/java/safeluck/drive/evaluation/app.java
@@ -327,7 +327,6 @@ CEventCenter.dispatchEvent(Constant.BIND_RTK_SPEED_TOPIC,cmd,0,speed); utc = utc.replace(".",""); JKMessage0206 jkMessage0206 = new JKMessage0206(); jkMessage0206.phone = ExamPlatformData.getInstance().getPhone(); jkMessage0206.alert = 0; jkMessage0206.status = 0; jkMessage0206.jd = longitude; app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -21,6 +21,7 @@ import safeluck.drive.evaluation.Constant; import safeluck.drive.evaluation.DB.appstatusdb.AppStatusWorker; import safeluck.drive.evaluation.app; import safeluck.drive.evaluation.platformMessage.PlatFormConstant; import safeluck.drive.evaluation.util.SPUtils; import safeluck.drive.evaluation.viewmodels.ExamPlatformModel; import safeluck.drive.evaluation.viewmodels.MainViewModel; app/src/main/java/safeluck/drive/evaluation/cEventCenter/CEventCenter.java
@@ -172,8 +172,8 @@ ICEventListener listener = null; LinkedList<ICEventListener> listeners = null; synchronized (LISTENER_LOCK){ Log.d(TAG, "dispatchEvent | topic="+topic+"\tmsgCode="+event.getMsgCode()+"\tresultCode="+event.getResultCode() +"\tobj="+event.getObj()); // Log.d(TAG, "dispatchEvent | topic="+topic+"\tmsgCode="+event.getMsgCode()+"\tresultCode="+event.getResultCode() // +"\tobj="+event.getObj()); Object obj = LISTENER_MAP.get(topic); if (obj == null){ return; app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -130,7 +130,6 @@ String icStr = jsSpeed.getString("serialno"); if (result == 0) { JKMessage0201 jkMessage0201 = new JKMessage0201(); jkMessage0201.phone = ExamPlatformData.getInstance().getPhone(); if (exam_type==Constant.Chang_di){ jkMessage0201.currentExam = 0; }else{ @@ -498,7 +497,6 @@ currTotalScore = 100; //TODO 发送JKMessage0202 给平台,开始考试 final JKMessage0202 jkMessage0202 = new JKMessage0202(); jkMessage0202.phone = ExamPlatformData.getInstance().getPhone(); jkMessage0202.timeBCD = new Date(); jkMessage0202.ID = ExamPlatformData.getInstance().getID(); @@ -595,7 +593,14 @@ private void stopExam() { MyLog.i(TAG,"结束考试"); //TODO 发送JKMessage0204给平台 结束考试 JKMessage0204 jkMessage0204 = new JKMessage0204(); jkMessage0204.timeBCD = new Date(); jkMessage0204.score = currTotalScore; jkMessage0204.stop = JKMessage0204.SUCC_STOP; jkMessage0204.ID = ExamPlatformData.getInstance().getID(); jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id(); MessageProcessor.getInstance().sendMessage(jkMessage0204); //设置模式为NONE 0 ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE); //恢复初始数据 @@ -612,15 +617,7 @@ ExamPlatformData.getInstance().getTTS().speak("结束考试"); examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); sendExamJson(0,0);//结束考试 exstart=0 //TODO 发送JKMessage0204给平台 结束考试 JKMessage0204 jkMessage0204 = new JKMessage0204(); jkMessage0204.phone = ExamPlatformData.getInstance().getPhone(); jkMessage0204.timeBCD = new Date(); jkMessage0204.score = 10; jkMessage0204.stop = JKMessage0204.SUCC_STOP; jkMessage0204.ID = ExamPlatformData.getInstance().getID(); jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id(); MessageProcessor.getInstance().sendMessage(jkMessage0204); } private ICEventListener icEventListener = new ICEventListener() { app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -226,7 +226,6 @@ break; case R.id.btn_start_exam: JKMessage0202 jkMessage0202 = new JKMessage0202(); jkMessage0202.phone = "0314200100000004"; jkMessage0202.timeBCD = new Date(); jkMessage0202.curr_exam = 1; jkMessage0202.ID = "123456789"; @@ -235,7 +234,6 @@ break; case R.id.btn_fail: JKMessage0203 jkMessage0203 = new JKMessage0203(); jkMessage0203.phone = "0314200100000004"; jkMessage0203.timeBCD = "200226135444"; jkMessage0203.fail_item_id = 4; jkMessage0203.fail_score = 10; app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -522,7 +522,6 @@ //TODO 发送JKMessage0202 给平台,开始考试 final JKMessage0202 jkMessage0202 = new JKMessage0202(); jkMessage0202.phone = ExamPlatformData.getInstance().getPhone(); jkMessage0202.timeBCD = new Date(); jkMessage0202.ID = ExamPlatformData.getInstance().getID(); @@ -621,6 +620,15 @@ private void stopExam() { MyLog.i(TAG,"结束训练"); //TODO 发送JKMessage0204给平台 结束考试 JKMessage0204 jkMessage0204 = new JKMessage0204(); jkMessage0204.timeBCD = new Date(); jkMessage0204.score = currTotalScore; jkMessage0204.stop = JKMessage0204.SUCC_STOP; jkMessage0204.ID = ExamPlatformData.getInstance().getID(); jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id(); MessageProcessor.getInstance().sendMessage(jkMessage0204); //设置模式为NONE 0 ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE); @@ -637,15 +645,7 @@ ExamPlatformData.getInstance().getTTS().speak("结束训练"); examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); sendExamJson(0,0);//结束考试 exstart=0 //TODO 发送JKMessage0204给平台 结束考试 JKMessage0204 jkMessage0204 = new JKMessage0204(); jkMessage0204.phone = ExamPlatformData.getInstance().getPhone(); jkMessage0204.timeBCD = new Date(); jkMessage0204.score = 10; jkMessage0204.stop = JKMessage0204.SUCC_STOP; jkMessage0204.ID = ExamPlatformData.getInstance().getID(); jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id(); MessageProcessor.getInstance().sendMessage(jkMessage0204); } private ICEventListener icEventListener = new ICEventListener() { app/src/main/java/safeluck/drive/evaluation/im/IMSClientBootstrap.java
@@ -124,4 +124,17 @@ } } /** * 重置TCP连接 * 原来已经init过,传输过host,本方法知识重置连接 */ public void resetConnect() { if (isActive){ if (imsClient != null){ imsClient.resetConnect(false); } } } } app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java
@@ -94,7 +94,6 @@ @Override public byte[] getHearbeatMsg() { JKMessage0002 jkMessage0002 = new JKMessage0002(); jkMessage0002.phone = ExamPlatformData.getInstance().getPhone(); return messageEscaper.escape(jkMessage0002.toBytes()); } app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
@@ -75,7 +75,6 @@ String des = ((JKMessage8100) jk2019MessageBase).des; SPUtils.put(app.getAppContext(),SPUtils.DES_HEX_PWD,des); JKMessage0101 jkMessage0101 = new JKMessage0101(); // jkMessage0101.des =((JKMessage8100) jk2019MessageBase).des; long time =System.currentTimeMillis()/1000; int unsignedInt = Utils.parseUnsignedInt(String.valueOf(time),10); MyLog.i(String.format("总秒数(long)=%d,装换成unsigned int= %d",time,unsignedInt)); @@ -120,26 +119,34 @@ if ( ExamPlatformData.getInstance().getExamplatformStatus() == ExamPlatformData.DEV_LOGIN){ if (IMSClientBootstrap.getInstance().isActive()){ IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes())); }else{ Log.e(TAG, "run: 发送消息失败,未初始化连接NettyTcp"); byte[] msgidbytes= ArrayUtils.subArray(msg.toBytes(),2,2); String msgid = BytesUtils.bytesToHexString(msgidbytes); if (canSend(msgid)){ if (IMSClientBootstrap.getInstance().isActive()){ IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes())); }else{ Log.e(TAG, "run: 发送消息失败,未初始化连接NettyTcp"); } } }else{ // JK2019MessageBase jk2019MessageBase = MessageManager.get(msg.toString()); byte[] msgidbytes= ArrayUtils.subArray(msg.toBytes(),2,2); String msgid = BytesUtils.bytesToHexString(msgidbytes); Log.i(TAG, "run: msgid="+msgid); if ((msgid.equalsIgnoreCase("0100")) || (msgid.equalsIgnoreCase("0101"))){ MyLog.i(PlatFormConstant.TAG,"注册/鉴权消息直接发送,不发送是否登录成功"); if (IMSClientBootstrap.getInstance().isActive()){ IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes())); if (canSend(msgid)){ if ((msgid.equalsIgnoreCase("0100")) || (msgid.equalsIgnoreCase("0101"))){ MyLog.i(PlatFormConstant.TAG,"注册/鉴权消息直接发送"); if (IMSClientBootstrap.getInstance().isActive()){ IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes())); }else{ MyLog.i(PlatFormConstant.TAG, "发送消息失败,未初始化连接NettyTcp"); } }else{ MyLog.i(PlatFormConstant.TAG, "发送消息失败,未初始化连接NettyTcp"); MyLog.i(PlatFormConstant.TAG,"登录未成功,不能发送消息="+msgid); } }else{ MyLog.i(PlatFormConstant.TAG,"登录未成功,不能发送消息="+msgid); } } @@ -153,4 +160,21 @@ IMSClientBootstrap.getInstance().addHeartbeat(seconds); } } private boolean canSend(String msgId){ if (ExamPlatformData.getInstance().getTrainingMode()==ExamPlatformData.TRAINING_MODE){ //训练模式下 只有几条可以发送 switch (msgId){ case "0206": case "0100": case "0101": return true; } }else{ //考试模式下全部都可以发送 return true; } return false; } } app/src/main/java/safeluck/drive/evaluation/platformMessage/JK2019MessageBase.java
@@ -14,6 +14,7 @@ import com.safeluck.aykj.utils.BitState; import com.safeluck.aykj.utils.BytesUtils; import safeluck.drive.evaluation.bean.ExamPlatformData; import safeluck.drive.evaluation.platformMessage.decoder.JWD; import safeluck.drive.evaluation.platformMessage.decoder.JWDCoder; import safeluck.drive.evaluation.platformMessage.decoder.Phone; @@ -99,7 +100,7 @@ public BitState props = new BitState((short) 0); @Order(5) @Phone public String phone="0314200100000004"; public String phone= ExamPlatformData.getInstance().getPhone(); @Order(6) @Int16 public int messageNo; app/src/main/java/safeluck/drive/evaluation/platformMessage/PlatFormConstant.java
@@ -1,5 +1,7 @@ package safeluck.drive.evaluation.platformMessage; import org.jetbrains.annotations.Nullable; import java.util.HashMap; public class PlatFormConstant { @@ -8,4 +10,6 @@ public static final int SUCCESS = 0; public static final short STU_INFO_SUCC = 1; @Nullable public static final String RTK = "RTK_Config"; } app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt
@@ -26,7 +26,6 @@ var gson:Gson =Gson() override fun doWork(): Result { val jkMessage0203 = JKMessage0203() jkMessage0203.phone = ExamPlatformData.getInstance().phone jkMessage0203.ID = ExamPlatformData.getInstance().id jkMessage0203.exam_id = ExamPlatformData.getInstance().exam_id var ttsInput = inputData.getString(Constant.TTS);