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