考试type保存,收到ndk_start的时候进行发送;随机生成五个模拟灯光测试项(第一个永远是开启前照灯);Random随机生成5个不重复的整数算法
12个文件已修改
1个文件已添加
178 ■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/Constant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/Constant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/MainActivity.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/app.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/SimulateNightBean.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/util/Utils.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}