app/src/main/java/safeluck/drive/evaluation/MainActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/app.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
im_lib/src/main/java/com/anyun/im_lib/util/PlatFormConstant.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -283,8 +283,11 @@ MyLog.i("TCP连接成功"); //TODO 判断SPUtils 是否保存有des密码;如果没有则进行注册JKMessage0100,如果有密码则进行鉴权JKMessage0101 String hexPwd = (String) SPUtils.get(this,SPUtils.DES_HEX_PWD,""); hexPwd=""; MessageProcessor.getInstance().addBeatHeart(10); if (TextUtils.isEmpty(hexPwd)){ MyLog.i(PlatFormConstant.TAG,"密码不存在,进行注册,发送注册消息"); JKMessage0100 jkRegisterMessage = new JKMessage0100(); if (mRTKConfig!=null){ @@ -302,6 +305,7 @@ MessageProcessor.getInstance().sendMessage(jkRegisterMessage); Log.i(TAG, "onClick: "+ BytesUtils.bytesToHexString(str)+" ============"); }else{ MyLog.i(PlatFormConstant.TAG,"密码存在,已注册过,直接发鉴权消息"); JKMessage0101 jkMessage0101 = new JKMessage0101(); jkMessage0101.phone = ExamPlatformData.getInstance().getPhone(); String des = hexPwd; app/src/main/java/safeluck/drive/evaluation/app.java
@@ -62,6 +62,7 @@ import safeluck.drive.evaluation.platformMessage.JKMessage0101; import safeluck.drive.evaluation.platformMessage.JKMessage0203; import safeluck.drive.evaluation.platformMessage.JKMessage0206; import safeluck.drive.evaluation.platformMessage.PlatFormConstant; import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.FileUtil; import safeluck.drive.evaluation.util.SPUtils; @@ -192,35 +193,7 @@ Data judgeData = new Data.Builder().putString(Constant.TTS,json).build(); OneTimeWorkRequest ttswoker = new OneTimeWorkRequest.Builder(TTSWorker.class).setInputData(judgeData).build(); WorkManager.getInstance(getAppContext()).enqueue(ttswoker); JsonArray jsonArray = JsonParser.parseString(json).getAsJsonArray(); for (int i = 0; i < jsonArray.size(); i++) { JsonObject jsonObject = jsonArray.get(i).getAsJsonObject(); int emp_id = jsonObject.get("wrong_id").getAsInt(); String utc = jsonObject.get("utc").getAsString(); MyLog.i("评判消息解析之前的utc="+utc); utc = utc.substring(2,utc.length()-3); MyLog.i("评判消息解析之后的utc="+utc); int sn = jsonObject.get("sn").getAsInt(); // if (ExamPlatformData.getInstance().getExamType()==2){//场地评判消息 // if (emp_id>31|| emp_id<0){ // MyLog.i(TAG,"emp_id超出范围不能插入数据库(I类考场)"); // return; // } // FailedProj failedProj = new FailedProj(Constant.SUBJECT_I, emp_id, Constant.TEST_STU_ID,utc,sn); // MyLog.i("插入fail_projects表="+failedProj.toString()); // failedProjRepository.insert(failedProj); // } // if (ExamPlatformData.getInstance().getExamType()>2){//道路 评判消息 // if (emp_id>66|| emp_id<1){ // MyLog.i(TAG,"emp_id超出范围不能插入数据库(路考类考场)"); // return; // } // LuKaoFailedProj failedProj = new LuKaoFailedProj(Constant.SUBJECT_III, emp_id, Constant.TEST_STU_ID,utc,sn); // MyLog.i("插入路考fail_projects表="+failedProj.toString()); // failedProjRepository.insertLuKao(failedProj); // } } } break; @@ -388,6 +361,15 @@ e.printStackTrace(); } }else{ String str = "登录未成功,不能发送消息=0206"; if (str.equalsIgnoreCase(last0206Str)){ }else{ last0206Str = str; MyLog.i(PlatFormConstant.TAG,str); } } break; @@ -395,7 +377,7 @@ } } private String last0206Str=""; private int lastSatNum= 0; private int lastQf = 0; app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -109,8 +109,8 @@ private Speaker speaker = null; private String ip; private int port; private String ip="47.93.80.84"; private int port=12125; private String mapPath;//绝对路径包含文件名的path private String carPath;//绝对路径包含文件名的path private StringBuffer stringBuffer; @@ -127,12 +127,12 @@ } public String getPlatformIP(){ ip = (String) SPUtils.get(app.getAppContext(),SPUtils.PLATFORM_IP,"47.93.157.103"); ip = (String) SPUtils.get(app.getAppContext(),SPUtils.PLATFORM_IP,"47.93.80.84"); return ip; } public int getPlatformPort(){ port = (int) SPUtils.get(app.getAppContext(),SPUtils.PLATFORM_PORT,2020); port = (int) SPUtils.get(app.getAppContext(),SPUtils.PLATFORM_PORT,12125); return port; } app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java
@@ -67,7 +67,7 @@ case R.id.car_train: //单机训练 if (ExamPlatformData.getInstance().getTrainingMode()==ExamPlatformData.EXAMING_MODE){ Toast.makeText(_mActivity, "当前正处于考试模式,无法进入单击训练,请先结束考试", Toast.LENGTH_SHORT).show(); Toast.makeText(_mActivity, "当前正处于考试模式,无法进入单机训练,请先结束考试", Toast.LENGTH_SHORT).show(); }else{ TrainFragment trainFragment = findFragment(TrainFragment.class); if (trainFragment == null) { app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -426,7 +426,6 @@ return view; } private List<Integer> sns =new ArrayList<>(); @@ -540,8 +539,6 @@ } }); //清空sns sns.clear(); @@ -552,18 +549,22 @@ break; case R.id.view_map: // MapFragment mapFragment = findFragment(MapFragment.class); // MyLog.i(TAG,"查看地图"); // if (mapFragment == null) { // mapFragment = (MapFragment) MapFragment.newInstance(); // } // start(mapFragment); RoadDriveMapFragmentaa mapFragment = findFragment(RoadDriveMapFragmentaa.class); MyLog.i(TAG,"查看地图"); if (mapFragment == null) { mapFragment = (RoadDriveMapFragmentaa) RoadDriveMapFragmentaa.newInstance(); if (ExamPlatformData.getInstance().getExamType()>ExamPlatformData.EXAM_TYPE_ChangKAO){ RoadDriveMapFragmentaa mapFragment = findFragment(RoadDriveMapFragmentaa.class); MyLog.i(TAG,"查看路考地图"); if (mapFragment == null) { mapFragment = (RoadDriveMapFragmentaa) RoadDriveMapFragmentaa.newInstance(); } start(mapFragment); }else{ MapFragment mapFragment = findFragment(MapFragment.class); MyLog.i(TAG,"查看场考地图"); if (mapFragment == null) { mapFragment = (MapFragment) MapFragment.newInstance(); } start(mapFragment); } start(mapFragment); break; case R.id.btn_return: _mActivity.onBackPressed(); @@ -594,7 +595,6 @@ private void stopExam() { MyLog.i(TAG,"结束考试"); sns.clear(); //设置模式为NONE 0 ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE); app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -283,46 +283,98 @@ initView(view); failedProjViewModel = ViewModelProviders.of(this).get(FailedProjViewModel.class); failedProjViewModel.getFailedProjectsForIII(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() { @Override public void onChanged(List<FailedProj_select> failedProj_selects) { if (ExamPlatformData.getInstance().getExamType()>ExamPlatformData.EXAM_TYPE_ChangKAO){ MyLog.i("现在是路考状态,监视路考数据失败项目"); if (failedProj_selects != null && failedProj_selects.size()>0){ item_id = 0; currTotalScore = 100; mArrayList.clear(); item_conents.clear(); for (FailedProj_select f : failedProj_selects) { item_id += f.getScore_deducting(); Log.i(TAG, "onChanged: " + f.toString()); mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason())); item_conents.add(f.getItem_content()); Collections.reverse(mArrayList); mScoreAdapter.addDatas(mArrayList); MyLog.i("item_score="+item_id); } MyLog.i("没扣分之前得分:"+currTotalScore); currTotalScore -=item_id; MyLog.i("路考当前得分:"+currTotalScore); if (currTotalScore < Constant.PASSING_SCORE){ MyLog.i("路考低于80,不合格"+currTotalScore); // ExamPlatformData.getInstance().getTTS().speak("考试不合格"); // stopExam(); } MyLog.i("路考监测到有失败项目加入,通知UI更新颜色"); mHandler.obtainMessage(ADD_DATA).sendToTarget(); }else{ MyLog.i(TAG,"路考失败项目数据表被清空更新UI"); item_id = 0; mArrayList.clear(); item_conents.clear(); Collections.reverse(mArrayList); mScoreAdapter.addDatas(mArrayList); mHandler.obtainMessage(ADD_DATA).sendToTarget(); } } } }); failedProjViewModel.getFailedProjectsForI(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() { @Override public void onChanged(List<FailedProj_select> failedProj_selects) { if (failedProj_selects != null && failedProj_selects.size()>0){ if (ExamPlatformData.getInstance().getExamType()<=ExamPlatformData.EXAM_TYPE_ChangKAO){ if (failedProj_selects != null && failedProj_selects.size()>0){ item_id = 0; currTotalScore = 100; mArrayList.clear(); item_conents.clear(); for (FailedProj_select f : failedProj_selects) { item_id += f.getScore_deducting(); Log.i(TAG, "onChanged: " + f.toString()); mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason())); item_conents.add(f.getItem_content()); Collections.reverse(mArrayList); mScoreAdapter.addDatas(mArrayList); MyLog.i("item_score="+item_id); } //TODO 发送JKMessage0203 给平台,这儿有点复杂,看怎么处理 item_id = 0; currTotalScore = 100; mArrayList.clear(); item_conents.clear(); for (FailedProj_select f : failedProj_selects) { item_id += f.getScore_deducting(); Log.i(TAG, "onChanged: " + f.toString()); mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason())); item_conents.add(f.getItem_content()); Collections.reverse(mArrayList); mScoreAdapter.addDatas(mArrayList); MyLog.i("item_score="+item_id); } //TODO 发送JKMessage0203 给平台,这儿有点复杂,看怎么处理 // sendJKMessage0203(failedProj_selects); MyLog.i("没扣分之前得分:"+currTotalScore); currTotalScore -=item_id; MyLog.i("当前得分:"+currTotalScore); if (currTotalScore < Constant.PASSING_SCORE){ MyLog.i("低于80,不合格"+currTotalScore); MyLog.i("没扣分之前得分:"+currTotalScore); currTotalScore -=item_id; MyLog.i("当前得分:"+currTotalScore); if (currTotalScore < Constant.PASSING_SCORE){ MyLog.i("低于80,不合格"+currTotalScore); // ExamPlatformData.getInstance().getTTS().speak("考试不合格"); // stopExam(); } MyLog.i("监测到有失败项目加入,通知UI更新颜色"); mHandler.obtainMessage(ADD_DATA).sendToTarget(); }else{ MyLog.i(TAG,"失败项目数据表被清空更新UI"); item_id = 0; mArrayList.clear(); item_conents.clear(); Collections.reverse(mArrayList); mScoreAdapter.addDatas(mArrayList); mHandler.obtainMessage(ADD_DATA).sendToTarget(); } MyLog.i("监测到有失败项目加入,通知UI更新颜色"); mHandler.obtainMessage(ADD_DATA).sendToTarget(); }else{ MyLog.i(TAG,"失败项目数据表被清空更新UI"); item_id = 0; mArrayList.clear(); item_conents.clear(); Collections.reverse(mArrayList); mScoreAdapter.addDatas(mArrayList); mHandler.obtainMessage(ADD_DATA).sendToTarget(); } } }); @@ -395,53 +447,6 @@ return view; } // private void sendJKMessage0203(List<FailedProj_select> failedProj_selects) { //// JKMessage0203 jkMessage0203 = new JKMessage0203(); //// jkMessage0203.phone = ExamPlatformData.getInstance().getPhone(); //// jkMessage0203.ID = ExamPlatformData.getInstance().getID(); //// jkMessage0203.exam_id = ExamPlatformData.getInstance().getExam_id(); //// //// for (int i = 0; i < failedProj_selects.size(); i++) { //// if (hasSnEqulas(failedProj_selects.get(i).getSn())){ //// MyLog.i("sn相同"+failedProj_selects.get(i).getSn()); //// }else{ //// ExamPlatformData.getInstance().getTTS().speak(failedProj_selects.get(i).getDeducting_reason()+( //// failedProj_selects.get(i).getScore_deducting()==100?"不合格":"扣"+ //// failedProj_selects.get(i).getScore_deducting()+"分")); //// MyLog.i("没有相同的sn,发送"+failedProj_selects.get(i).getSn()); //// ExamPlatformData.getInstance().addSn(failedProj_selects.get(i).getSn()); //// String utc = failedProj_selects.get(i).getUtc(); //// if (!TextUtils.isEmpty(utc)&&utc.length()>12){ //// utc =utc.substring(0,12); //// } //// jkMessage0203.timeBCD = utc ; //// //// jkMessage0203.fail_item_id = failedProj_selects.get(i).getEmp_id(); //// jkMessage0203.fail_score = failedProj_selects.get(i).getScore_deducting(); //// jkMessage0203.fail_reason = failedProj_selects.get(i).getDeducting_reason(); //// } //// //// } // //// MessageProcessor.getInstance().sendMessage(jkMessage0203); //// } // //// private boolean hasSnEqulas(int failedProjSn){ //// if (ExamPlatformData.getInstance().getSns().size() > 0){ //// for (int j = 0; j < ExamPlatformData.getInstance().getSns().size(); j++) { //// MyLog.i("已存在的sn"+ExamPlatformData.getInstance().getSns().get(j)); //// if (ExamPlatformData.getInstance().getSns().get(j) == failedProjSn){ //// MyLog.i("sn相同,不发"+ExamPlatformData.getInstance().getSns().get(j)); //// return true; // }else{ // continue; // } // } // // } // return false; // // } @@ -532,6 +537,7 @@ public void changKao() { exam_type = 2; iv_head.getDrawable().setLevel(1); ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.TRAINING_MODE); ExamPlatformData.getInstance().setExamType(exam_type); examStatusViewModel.updateStartExam(exam_type); sendExamJson(1,exam_type); @@ -546,6 +552,7 @@ @Override public void luKao() { exam_type = 3; ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.TRAINING_MODE); ExamPlatformData.getInstance().setExamType(exam_type); examStatusViewModel.updateStartExam(exam_type); sendExamJson(1,exam_type); @@ -570,12 +577,21 @@ break; case R.id.view_map: MapFragment mapFragment = findFragment(MapFragment.class); MyLog.i(TAG,"查看地图"); if (mapFragment == null) { mapFragment = (MapFragment) MapFragment.newInstance(); if (ExamPlatformData.getInstance().getExamType()>ExamPlatformData.EXAM_TYPE_ChangKAO){ RoadDriveMapFragmentaa mapFragment = findFragment(RoadDriveMapFragmentaa.class); MyLog.i(TAG,"查看路考地图"); if (mapFragment == null) { mapFragment = (RoadDriveMapFragmentaa) RoadDriveMapFragmentaa.newInstance(); } start(mapFragment); }else{ MapFragment mapFragment = findFragment(MapFragment.class); MyLog.i(TAG,"查看场考地图"); if (mapFragment == null) { mapFragment = (MapFragment) MapFragment.newInstance(); } start(mapFragment); } start(mapFragment); break; case R.id.btn_return: _mActivity.onBackPressed(); @@ -604,10 +620,7 @@ } private void stopExam() { MyLog.i(TAG,"结束考试"); //清空sns ExamPlatformData.getInstance().clearSns(); MyLog.i(TAG,"结束训练"); //设置模式为NONE 0 ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE); app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
@@ -67,7 +67,7 @@ //反转义 byte[] datas=messageEscaper.unescape(message); MyLog.i(PlatFormConstant.TAG,"转义过后的服务消息:"+ BytesUtils.bytesToHexString(datas)); MyLog.i(PlatFormConstant.TAG,"服务消息:"+ BytesUtils.bytesToHexString(datas)); JK2019MessageBase jk2019MessageBase = MessageManager.get(BytesUtils.bytesToHexString(datas)); if (jk2019MessageBase instanceof JKMessage8100){ if (((JKMessage8100) jk2019MessageBase).result == JKMessage8100.SUCCESS){ @@ -83,6 +83,7 @@ byte[] miwen =Utils.encrypt(ByteUtil.intGetBytes(unsignedInt),des); MyLog.i(PlatFormConstant.TAG,"鉴权密文="+BytesUtils.bytesToHexString(miwen)+" time="+unsignedInt); jkMessage0101.des = BytesUtils.bytesToHexString(miwen); MyLog.i(PlatFormConstant.TAG,"发送鉴权消息"); sendMessage(jkMessage0101); ExamPlatformData.getInstance().setExamplatformStatus(ExamPlatformData.DEV_REGISTERED); }else{ @@ -130,11 +131,11 @@ 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())); }else{ Log.e(TAG, "run: 发送消息失败,未初始化连接NettyTcp"); MyLog.i(PlatFormConstant.TAG, "发送消息失败,未初始化连接NettyTcp"); } }else{ MyLog.i(PlatFormConstant.TAG,"登录未成功,不能发送消息="+msgid); im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java
@@ -13,6 +13,7 @@ import com.anyun.im_lib.listener.OnEventListener; import com.anyun.im_lib.util.ByteUtil; import com.anyun.im_lib.util.MyLog; import com.anyun.im_lib.util.PlatFormConstant; import com.safeluck.aykj.utils.BytesUtils; import java.nio.ByteBuffer; @@ -183,7 +184,7 @@ try { channel = bootstrap.connect(currentHost,currentPort).sync().channel(); } catch (Exception e) { Log.i(TAG, String.format("连接Server(ip[%s],port[%d]失败)",currentHost,currentPort)); MyLog.i(PlatFormConstant.TAG, String.format("连接Server(ip[%s],port[%d]失败)",currentHost,currentPort)); try { Thread.sleep(500); } catch (InterruptedException ex) { @@ -210,13 +211,13 @@ this.connectStatus = connectStateConnecting; switch (connectStatus){ case IMSConfig.CONNECT_STATE_CONNECTING: Log.i(TAG, "onConnectStatusCallback: ims连接中..."); MyLog.i(PlatFormConstant.TAG, "onConnectStatusCallback: ims连接中..."); if (imsConnectStatusCallback != null){ imsConnectStatusCallback.onConnecting(); } break; case IMSConfig.CONNECT_STATE_SUCCESSFUL: MyLog.i(String.format("onConnectStatusCallback: ims连接成功,host[%s],port[%s]",currentHost,currentPort)); MyLog.i(PlatFormConstant.TAG,String.format("onConnectStatusCallback: ims连接成功,host[%s],port[%s]",currentHost,currentPort)); if (imsConnectStatusCallback != null){ imsConnectStatusCallback.onConnected(); } @@ -232,7 +233,7 @@ break; case IMSConfig.CONNECT_STATE_FAILURE: default: MyLog.i( "onConnectStatusCallback: ims连接失败"); MyLog.i( PlatFormConstant.TAG," ims连接失败"); if (imsConnectStatusCallback != null){ imsConnectStatusCallback.onConnectFailed(); } @@ -336,12 +337,12 @@ return; } try { MyLog.i("PlatformMessage", "sendMsg: "+ BytesUtils.bytesToHexString(msg)); MyLog.i(PlatFormConstant.TAG, "客户端消息(转义后):"+ BytesUtils.bytesToHexString(msg)); ByteBuf byteBuf = ByteBufAllocator.DEFAULT.ioBuffer(); byteBuf.writeBytes(msg); channel.writeAndFlush(byteBuf); } catch (Exception e) { Log.i("PlatformMessage", "发送消息失败,reason="+e.getMessage()+"\t"+msg); MyLog.i(PlatFormConstant.TAG, "客户端发送消息失败,reason="+e.getMessage()+"\t"+msg); } } @@ -456,7 +457,7 @@ @Override public void run() { MyLog.i(TAG, "执行重连任务"); MyLog.i(PlatFormConstant.TAG, "执行重连任务"); if (!isFirst){ onConnectStatusCallback(IMSConfig.CONNECT_STATE_FAILURE); } @@ -536,7 +537,7 @@ if(connectStatus != IMSConfig.CONNECT_STATE_CONNECTING){ onConnectStatusCallback(IMSConfig.CONNECT_STATE_CONNECTING); } MyLog.i( String.format("正在进行connectServer【%s】的第[%d]连接,当前重连延时时长为[%dms]: ",serverUrl,j,j*getReconnectInterval())); MyLog.i(PlatFormConstant.TAG, String.format("正在进行connectServer【%s】的第[%d]连接,当前重连延时时长为[%dms]: ",serverUrl,j,j*getReconnectInterval())); try { currentPort = Integer.parseInt(address[1]); currentHost = address[0]; im_lib/src/main/java/com/anyun/im_lib/util/PlatFormConstant.java
New file @@ -0,0 +1,9 @@ package com.anyun.im_lib.util; public class PlatFormConstant { public static final String TAG = "PlatFormMessage"; public static final int SUCCESS = 0; public static final short STU_INFO_SUCC = 1; }