From c257c28cb70c9f204262f67e817a1793260e4bea Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期三, 11 三月 2020 00:42:54 +0800 Subject: [PATCH] 考试type保存,收到ndk_start的时候进行发送;随机生成五个模拟灯光测试项(第一个永远是开启前照灯);Random随机生成5个不重复的整数算法 --- app/src/main/java/safeluck/drive/evaluation/Constant.java | 2 app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java | 2 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt | 34 +++++++++++ app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | 7 - app/src/main/java/safeluck/drive/evaluation/util/Utils.java | 42 ++++++++++++++ app/src/main/java/safeluck/drive/evaluation/app.java | 9 ++ app/src/main/java/safeluck/drive/evaluation/MainActivity.java | 3 + app/src/main/java/safeluck/drive/evaluation/bean/SimulateNightBean.java | 18 ++++++ app/src/main/java/safeluck/drive/evaluation/DB/Constant.java | 4 + app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java | 51 +++++++++++++---- app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java | 2 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java | 2 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java | 2 13 files changed, 156 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java index 704de3c..fcafc77 100644 --- a/app/src/main/java/safeluck/drive/evaluation/Constant.java +++ b/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"; diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/Constant.java b/app/src/main/java/safeluck/drive/evaluation/DB/Constant.java index 8a21f43..4295bbc 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/Constant.java +++ b/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"; } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java index 7da0bb2..81da498 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java +++ b/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) { diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java index 6a44694..7a8227f 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java +++ b/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(); } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt new file mode 100644 index 0000000..66cc9f5 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt @@ -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) + } + +} \ No newline at end of file diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java index bcc5755..0cda1f6 100644 --- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java +++ b/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 diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java index e66e144..ed04816 100644 --- a/app/src/main/java/safeluck/drive/evaluation/app.java +++ b/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); diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java index 55ff7c4..69cc989 100644 --- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java +++ b/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); } } diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/SimulateNightBean.java b/app/src/main/java/safeluck/drive/evaluation/bean/SimulateNightBean.java index 46cc690..a688ef4 100644 --- a/app/src/main/java/safeluck/drive/evaluation/bean/SimulateNightBean.java +++ b/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) + + '}'; } } diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java index 00235ce..edbca12 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java +++ b/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;//杩斿洖鐨刬c鍗′俊鎭� 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 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯 + 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 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯 -// 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); diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java index 5ed9ac4..a3c5826 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java +++ b/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"; diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java index 5591fbc..95e0c0c 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java +++ b/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); diff --git a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java index 7b178a3..79f7ee8 100644 --- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java +++ b/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; + + } + + + + //璇ユ柟娉曞畬鎴愬垽鏂璽emp鍦╝鏁扮粍涓槸鍚﹀寘鍚� +//鍖呭惈杩斿洖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; + } } -- Gitblit v1.8.0