app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -62,7 +62,7 @@ public static final String WORK_PLATFORM_STATUS_COLUMN = "WORK_PLATFORM_STATUS_COLUMN"; public static final int ENTER_OR_EXIT_ITEM = 0x000D; public static final int HAS_BEEN_START_EXAM = 1; public static final int NONE_BEEN_START_EXAM = 0; //没有考试 public static final int REAL_TIME_CAR_POS = 0x000E; public static final String REAL_TIME_POS_CAR_TOPIC = "real_time_car_pos_topic"; public static final String BIND_SPEED_TOPIC = "BIND_SPEED_TOPIC"; app/src/main/java/safeluck/drive/evaluation/DB/Constant.java
@@ -1,5 +1,7 @@ package safeluck.drive.evaluation.DB; import org.jetbrains.annotations.NotNull; /** * MyApplication2 * Created by lzw on 2019/11/26. 12:01:53 @@ -14,4 +16,6 @@ public static final String RTK_CONFIG_PHONE = "RTK_CONFIG_PHONE"; public static final String RTK_CONFIG_IMEI = "RTK_CONFIG_IMEI"; public static final String RTK_CONFIG_SN = "sn"; @NotNull public static final String EXAM_STATUS_TYPE = "exam_status_type"; } app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java
@@ -27,7 +27,7 @@ private int enter; //表示已经点击了开始考试,并且收到了考试应答 1-已经开始考试 0-未考试 //表示已经点击了开始考试,并且收到了考试应答 0-未考试 2-场地 3-模拟灯光,路考, 4-路考 private int startExam; @Ignore public ExamStatus(int map_id, int enter) { app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java
@@ -23,4 +23,6 @@ @Query("select startExam from exam_status where map_id=1") LiveData<Integer> getStartExam(); @Query("select startExam from exam_status where map_id=1") int getStartExamInt(); } app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt
New file @@ -0,0 +1,34 @@ package safeluck.drive.evaluation.DB.exam_status import android.content.Context import android.util.Log import androidx.work.Data import androidx.work.Worker import androidx.work.WorkerParameters import com.anyun.exam.lib.AYSdk import org.json.JSONException import org.json.JSONObject import safeluck.drive.evaluation.DB.Constant import safeluck.drive.evaluation.DB.WorkRoomDataBase class ExamStatusOutWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) { val TAG:String = "ExamStatusOutWorker" override fun doWork(): Result { val examType =WorkRoomDataBase.getWorkRoomDataBase(applicationContext).examStatusDao.startExamInt; Log.i(TAG,"查到的考试type="+examType) val data = Data.Builder().putInt(Constant.EXAM_STATUS_TYPE,examType).build() if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) { try { val jsonObject = JSONObject() jsonObject.put("exam", 1) jsonObject.put("type", examType) val examJson = jsonObject.toString() AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.EXAM_STATUS, examJson) } catch (e: JSONException) { e.printStackTrace() } } return Result.success(data) } } app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -23,6 +23,8 @@ import me.yokeyword.fragmentation.SupportActivity; import safeluck.drive.evaluation.DB.Student; import safeluck.drive.evaluation.DB.WokViewModel; import safeluck.drive.evaluation.DB.exam_status.ExamStatus; import safeluck.drive.evaluation.DB.exam_status.ExamStatusViewModel; import safeluck.drive.evaluation.DB.rtktb.RTKConfig; import safeluck.drive.evaluation.DB.rtktb.RTKConfigViewModel; import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel; @@ -211,6 +213,7 @@ } }); signalConfigViewModel = ViewModelProviders.of(this).get(SignalConfigViewModel.class); signalConfigViewModel.getSignalConfigs().observe(this, new Observer<List<SingalConfig>>() { @Override app/src/main/java/safeluck/drive/evaluation/app.java
@@ -9,8 +9,10 @@ import androidx.annotation.NonNull; import androidx.lifecycle.Observer; import androidx.work.Data; import androidx.work.OneTimeWorkRequest; import androidx.work.WorkInfo; import androidx.work.WorkManager; import com.anyun.exam.lib.AYSdk; @@ -40,6 +42,7 @@ import safeluck.drive.evaluation.DB.WorkRoomDataBase; import safeluck.drive.evaluation.DB.appstatusdb.AppStatusWorker; import safeluck.drive.evaluation.DB.exam_status.ExamStatusInitWorker; import safeluck.drive.evaluation.DB.exam_status.ExamStatusOutWorker; import safeluck.drive.evaluation.DB.exam_status.ExamStatusWoker; import safeluck.drive.evaluation.DB.failitems.FailedProj; import safeluck.drive.evaluation.DB.failitems.FailedProjRepository; @@ -157,8 +160,12 @@ case Constant.NDK_START: sendVechileInfo(); sendMapInfo(); CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json); OneTimeWorkRequest examStatausOutWorker = OneTimeWorkRequest.from(ExamStatusOutWorker.class); WorkManager.getInstance(getApplicationContext()).enqueue(examStatausOutWorker); CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json); break; case Constant.RTK_PLATFORM_REGISTER_STATUS: CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json); app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -232,7 +232,7 @@ public void initTTS(Context context){ if (speaker == null){ speaker = new Speaker(context); speaker = new Speaker(context,null); } } app/src/main/java/safeluck/drive/evaluation/bean/SimulateNightBean.java
@@ -2,6 +2,8 @@ import java.util.List; import safeluck.drive.evaluation.util.FileUtil; public class SimulateNightBean { /** @@ -57,5 +59,21 @@ public void setTts(String tts) { this.tts = tts; } @Override public String toString() { return "QuestionBean{" + "item=" + item + ", tts='" + tts + '\'' + '}'; } } @Override public String toString() { return "SimulateNightBean{" + "exam=" + exam + ", question=" + FileUtil.ListToString(question) + '}'; } } app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -36,6 +36,7 @@ import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Random; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; @@ -63,6 +64,7 @@ import safeluck.drive.evaluation.platformMessage.JKMessage0202; import safeluck.drive.evaluation.platformMessage.JKMessage0203; import safeluck.drive.evaluation.platformMessage.JKMessage0204; import safeluck.drive.evaluation.util.Utils; /** * 联网训练UI @@ -98,6 +100,8 @@ private static final int SPEED_DATA = 2; private FailedProjViewModel failedProjViewModel; String icson;//返回的ic卡信息 json private Random random = new Random(); private List<SimulateNightBean.QuestionBean> tempQs= new ArrayList<>(); public static SupportFragment newInstance() { return new NetWorkTrainFragment(); @@ -202,14 +206,14 @@ examStatusList.clear(); examStatusList.addAll(examStatus); mHandler.obtainMessage(ADD_DATA).sendToTarget(); if (examStatus.get(0).getStartExam() == Constant.HAS_BEEN_START_EXAM){ if (examStatus.get(0).getStartExam() != Constant.NONE_BEEN_START_EXAM){ btn_start_exam.setEnabled(false); tv_stop.setEnabled(true); sendExamJson(Constant.HAS_BEEN_START_EXAM,exam_type); }else{ btn_start_exam.setEnabled(true); tv_stop.setEnabled(false); } exam_type = examStatus.get(0).getStartExam(); } @@ -402,7 +406,13 @@ public void onClick(View v) { switch (v.getId()) { case R.id.btn_start: examStatusViewModel.updateStartExam(Constant.HAS_BEEN_START_EXAM); //TODO 发送JKMessage0202 给平台,开始考试 final JKMessage0202 jkMessage0202 = new JKMessage0202(); jkMessage0202.phone = ExamPlatformData.getInstance().getPhone(); jkMessage0202.timeBCD = new Date(); jkMessage0202.ID = ExamPlatformData.getInstance().getID(); jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id(); failedProjViewModel.deleteAll(); if (myDialogFragment == null){ @@ -415,6 +425,9 @@ exam_type = 2; sendExamJson(1,exam_type); ExamPlatformData.getInstance().getTTS().speak("开始考试"); jkMessage0202.curr_exam = 0; MessageProcessor.getInstance().sendMessage(jkMessage0202); } @Override @@ -425,9 +438,28 @@ simulateNightBean = new SimulateNightBean(); } simulateNightBean.setExam(0); List<SimulateNightBean.QuestionBean> list = ExamPlatformData.getInstance().getSimulate_light_tips(); final List<SimulateNightBean.QuestionBean> list = ExamPlatformData.getInstance().getSimulate_light_tips(); simulateNightBean.setQuestion(list.subList(list.size()-2,list.size()-1)); AYSdk.getInstance().sendCmd(0x8012,gson.toJson(simulateNightBean)); jkMessage0202.curr_exam = 1; MessageProcessor.getInstance().sendMessage(jkMessage0202); tempQs.add(list.get(0)); int [] a =Utils.getRandomInts(4,12); for (int i = 0; i < a.length; i++) { tempQs.add(list.get(a[i])); } simulateNightBean.setQuestion(tempQs); mHandler.postDelayed(new Runnable() { @Override public void run() { AYSdk.getInstance().sendCmd(0x8012,gson.toJson(simulateNightBean)); tempQs.clear(); } },10*1000); } }); @@ -435,14 +467,8 @@ iv_head.getDrawable().setLevel(1); //清空sns sns.clear(); //TODO 发送JKMessage0202 给平台,开始考试 // JKMessage0202 jkMessage0202 = new JKMessage0202(); // jkMessage0202.phone = ExamPlatformData.getInstance().getPhone(); // jkMessage0202.timeBCD = new Date(); // jkMessage0202.curr_exam = 0; // jkMessage0202.ID = ExamPlatformData.getInstance().getID(); // jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id(); // MessageProcessor.getInstance().sendMessage(jkMessage0202); break; case R.id.tv_stop: @@ -472,6 +498,7 @@ private void sendExamJson(int i,int type) { try { examStatusViewModel.updateStartExam(type); JSONObject jsonObject = new JSONObject(); jsonObject.put("exam", i); jsonObject.put("type", type); app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -129,7 +129,7 @@ /**======================测试数据库结束==================*/ Speaker speaker = new Speaker(getActivity()); Speaker speaker = new Speaker(getActivity(),null); speaker.speak("中国加油,重庆加油"); String userId = "100002"; app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -29,13 +29,10 @@ import org.json.JSONObject; import java.util.ArrayList; import java.util.EventListener; import java.util.List; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; import safeluck.drive.evaluation.DB.Student; import safeluck.drive.evaluation.DB.WokViewModel; import safeluck.drive.evaluation.DB.appstatusdb.AppStatus; import safeluck.drive.evaluation.DB.appstatusdb.AppStatusViewModel; import safeluck.drive.evaluation.DB.exam_status.ExamStatus; @@ -164,7 +161,7 @@ examStatusList.clear(); examStatusList.addAll(examStatus); mHandler.obtainMessage(ADD_DATA).sendToTarget(); if (examStatus.get(0).getStartExam() == Constant.HAS_BEEN_START_EXAM){ if (examStatus.get(0).getStartExam() == Constant.NONE_BEEN_START_EXAM){ btn_train.setEnabled(false); tv_stop.setEnabled(true); }else{ @@ -283,7 +280,7 @@ } break; case R.id.btn_start: examStatusViewModel.updateStartExam(Constant.HAS_BEEN_START_EXAM); examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); try { JSONObject jsonObject = new JSONObject(); jsonObject.put("exam", 1); app/src/main/java/safeluck/drive/evaluation/util/Utils.java
@@ -8,6 +8,8 @@ import com.anyun.exam.lib.util.ByteUtil; import com.safeluck.aykj.utils.BytesUtils; import java.util.Random; /** * MyApplication2 * Created by lzw on 2019/3/18. 13:13:42 @@ -116,4 +118,44 @@ byte checkcode = calCheckCode(dtas); System.out.println(BytesUtils.toHexString(checkcode)); } public static int[] getRandomInts(int size,int randomMax){ Random random = new Random(); int[] a=new int[size]; int index=0; while(index<size){ System.out.println("---------------"); int temp=random.nextInt(randomMax); if(temp!=0&&!contains(a,temp)){ a[index++]=temp; } } for(int i=0;i<a.length;i++){ System.out.println(a[i]); } return a; } //该方法完成判断temp在a数组中是否包含 //包含返回true public static boolean contains(int[] a,int temp){ for(int i=0;i<a.length;i++){ if(a[i]==temp){ return true; } } return false; } }