endian11
2021-01-19 b2fe9c4f073523284c671bf8895a8412cd269518
完成灯光发送
9个文件已修改
248 ■■■■ 已修改文件
app/src/main/assets/lightallanswers.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/lightdefault.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestions.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestionsDao.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/AbsInitialData.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/SimulateNightBean.java 174 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/LightExamFragment.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/fragment_light_exam_list.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/assets/lightallanswers.json
@@ -9,7 +9,7 @@
  {
    "id":1,
    "question_id":0,
    "answer": "开启大灯,远近光灯都可以",
    "answer": "开启大灯,远、近光灯都可以",
    "choose":0
  },
  {
@@ -39,7 +39,7 @@
  {
    "id":6,
    "question_id":5,
    "answer": "开启示宽灯和危险警示灯",
    "answer": "示宽灯+危险警示灯",
    "choose":1
  },
  {
app/src/main/assets/lightdefault.json
@@ -37,7 +37,7 @@
  {
    "id":5,
    "question": "夜间在道路上发生故障,妨碍交通又难以移动",
    "answer": "开启示宽灯和危险警示灯",
    "answer": "示宽灯+危险警示灯",
    "flag":0
  },
  {
app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestions.java
@@ -49,4 +49,14 @@
    public void setFlag(int flag) {
        this.flag = flag;
    }
    @Override
    public String toString() {
        return "LightUseQuestions{" +
                "id=" + id +
                ", question='" + question + '\'' +
                ", answer='" + answer + '\'' +
                ", flag=" + flag +
                '}';
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/lightdb/LightUseQuestionsDao.java
@@ -33,4 +33,6 @@
    LiveData<List<LightUseQuestions>> getLightUseQuestions();
    @Query("SELECT * FROM lightUseQuest")
    List<LightUseQuestions>  lightUseQuestionsNoLive();
}
app/src/main/java/safeluck/drive/evaluation/bean/AbsInitialData.java
@@ -15,6 +15,7 @@
import safeluck.drive.evaluation.app;
import safeluck.drive.evaluation.util.CThreadPoolExecutor;
import safeluck.drive.evaluation.util.DataInitKt;
import static safeluck.drive.evaluation.util.DataInitKt.sendJudgeArgs;
@@ -107,14 +108,17 @@
//需要延迟发送,因为前面有http请求
            executorService.schedule(()->{
                Log.i("AYJiaKao","延迟发送");
                if (DataInitKt.getSendVehiSucc() && (DataInitKt.getSendMapSucc() || DataInitKt.getSendRoadMapSucc())){
//                if (DataInitKt.getSendVehiSucc() && (DataInitKt.getSendMapSucc() || DataInitKt.getSendRoadMapSucc())){
                CThreadPoolExecutor.runInBackground(()->{
                    sendLightsAndExamStatus();
                }else{
                });
//                }else{
                    MyLog.i(DataInitKt.getSendRoadMapSucc()?String.format("道路地图发送成功"):"道路地图发送失败");
                    MyLog.i(DataInitKt.getSendMapSucc()?String.format("场地地图发送成功"):"场地地图发送失败");
                    MyLog.i(DataInitKt.getSendVehiSucc()?String.format("车辆模型发送成功"):"车辆模型发送失败");
                    Toast.makeText(app.getAppContext(), "地图或车模型不存在,请检查平台配置或手工配置", Toast.LENGTH_SHORT).show();
                }
//                }
                },2, TimeUnit.SECONDS);
app/src/main/java/safeluck/drive/evaluation/bean/SimulateNightBean.java
@@ -1,14 +1,12 @@
package safeluck.drive.evaluation.bean;
import java.util.ArrayList;
import java.util.List;
import safeluck.drive.evaluation.util.FileUtil;
public class SimulateNightBean {
    /**
     * exam : 0
     * question : [{"item":1,"tts":"打开车灯"},{"item":2,"tts":"通过人行道"}]
     * question : [{"item":100,"process":[],"solution":[-1],"tts":"下面将进行模拟夜间行驶场景灯光使用的考试,请按语音指令在5秒内做出相应的灯光操作"},{"item":1,"process":[3],"solution":[1],"tts":"请打开前照灯"},{"item":2,"process":[3],"solution":[1],"tts":"夜间在没有路灯,照明不良条件下行驶"},{"item":7,"process":[3],"solution":[1],"tts":"夜间在道路上发生故障,妨碍交通又难以移动"},{"item":10,"process":[3],"solution":[1],"tts":"路边临时停车"},{"item":9,"process":[3],"solution":[1],"tts":"夜间通过没有交通信号灯控制的路口"},{"item":101,"process":[],"solution":[-1],"tts":"模拟夜间考试完成请关闭所有灯光,请起步继续完成考试"}]
     */
    private int exam;
@@ -32,18 +30,82 @@
    public static class QuestionBean {
        /**
         * item : 1
         * tts : 打开车灯
         * item : 100
         * process : []
         * solution : [-1]
         * tts : 下面将进行模拟夜间行驶场景灯光使用的考试,请按语音指令在5秒内做出相应的灯光操作
         */
        private int item;
        private String tts;
        private List<Integer> process;
        private List<Integer> solution;
        public QuestionBean(int i, String s) {
            this.item =i;
                        this.item =i;
            this.tts = s;
            if (i>=100){
            }else{
                if (process == null){
                    this.process = new ArrayList<>();
                }
                this.process.add(-1);
                if (solution == null){
                    this.solution = new ArrayList<>();
                }
                this.solution.add(-1);
            }
        }
        public void parseSolutionAndProcess(String content){
            solution.clear();
            process.clear();
            if (content.contains("+")){
                String regx = "\\+";
                    String[] strs = content.split(regx);
                for (int i = 0; i < strs.length; i++) {
                    if (strs[i].contains("大灯")){
                        //1近光灯
                        solution.add(1);
                    }else if (strs[i].contains("小灯")){
                        //3示廓灯
                        solution.add(3);
                    }else if (strs[i].contains("警示灯")){
                        //7危险警示灯
                        solution.add(7);
                    }else if (strs[i].contains("雾灯")){
                        //4雾灯
                        solution.add(4);
                    }else if (strs[i].contains("左转向")){
                        //5左转信号
                        solution.add(5);
                    }else if (strs[i].contains("右转向")){
                        //6右转信号
                        solution.add(6);
                    }
                }
            }else if (content.contains("变换")){
                process.add(8);
                solution.add(1);
            }else if (content.equalsIgnoreCase("开启远光灯")){
                solution.add(2);
            }else if (content.equalsIgnoreCase("开启近光灯")){
                solution.add(1);
            }else if (content.contains("远、近光灯")){
                solution.add(1);
                solution.add(2);
            }else if (content.contains("注意是近光")){
                solution.add(1);
            }else if (content.equalsIgnoreCase("开启危险警示灯")){
                solution.add(7);
            }else if (content.equalsIgnoreCase("先开左转向灯,后变换远近光灯")){
                process.add(5);
                solution.add(8);
            }
        }
        public int getItem() {
            return item;
        }
@@ -60,20 +122,92 @@
            this.tts = tts;
        }
        @Override
        public String toString() {
            return "QuestionBean{" +
                    "item=" + item +
                    ", tts='" + tts + '\'' +
                    '}';
        public List<Integer> getProcess() {
            return process;
        }
        public void setProcess(List<Integer> process) {
            this.process = process;
        }
        public List<Integer> getSolution() {
            return solution;
        }
        public void setSolution(List<Integer> solution) {
            this.solution = solution;
        }
    }
    @Override
    public String toString() {
        return "SimulateNightBean{" +
                "exam=" + exam +
                ", question=" + FileUtil.ListToString(question) +
                '}';
    }
//    /**
//     * exam : 0
//     * question : [{"item":1,"tts":"打开车灯"},{"item":2,"tts":"通过人行道"}]
//     */
//
//    private int exam;
//    private List<QuestionBean> question;
//
//    public int getExam() {
//        return exam;
//    }
//
//    public void setExam(int exam) {
//        this.exam = exam;
//    }
//
//    public List<QuestionBean> getQuestion() {
//        return question;
//    }
//
//    public void setQuestion(List<QuestionBean> question) {
//        this.question = question;
//    }
//
//    public static class QuestionBean {
//        /**
//         * item : 1
//         * tts : 打开车灯
//         */
//
//        private int item;
//        private String tts;
//
//        public QuestionBean(int i, String s) {
//            this.item =i;
//            this.tts = s;
//        }
//
//        public int getItem() {
//            return item;
//        }
//
//        public void setItem(int item) {
//            this.item = item;
//        }
//
//        public String getTts() {
//            return tts;
//        }
//
//        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/LightExamFragment.java
@@ -55,11 +55,13 @@
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.adapter.LightExamSelectAdapter;
import safeluck.drive.evaluation.adapter.LightExamUseAdapter;
import safeluck.drive.evaluation.app;
import safeluck.drive.evaluation.bean.AnswerStatus;
import safeluck.drive.evaluation.bean.Question2Answers;
import safeluck.drive.evaluation.customview.MyDecoration;
import safeluck.drive.evaluation.util.CThreadPoolExecutor;
import safeluck.drive.evaluation.util.DataInitKt;
/**
 * DriveJudge
@@ -294,7 +296,10 @@
                OneTimeWorkRequest oneTimeWorkRequest = OneTimeWorkRequest.from(LightUseInitWorker.class);
                WorkManager.getInstance(_mActivity).enqueue(oneTimeWorkRequest);
                break;
            case R.id.btn_sure:
            case R.id.btn_light_sure:
                CThreadPoolExecutor.runInBackground(()->{
                    DataInitKt.sendExamLightsAndExamStatus(app.getAppContext());
                });
                break;
        }
    }
app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt
@@ -23,6 +23,7 @@
import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig
import safeluck.drive.evaluation.app
import safeluck.drive.evaluation.bean.*
import safeluck.drive.evaluation.bean.SimulateNightBean.QuestionBean
import safeluck.drive.evaluation.httpmodule.HttpCarRespBean
import safeluck.drive.evaluation.httpmodule.HttpRequetBean
import safeluck.drive.evaluation.httpmodule.HttpRoadMapRsp
@@ -78,19 +79,39 @@
    val examType = ExamPlatformData.getInstance().examType
    simulateNightBean.setExam(0)
    val list = ExamPlatformData.getInstance().simulate_light_tips
    tempQs.clear()
    val list = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).lightUseQuestionsDao.lightUseQuestionsNoLive()
    Log.i("AYJiaKao",list.size.toString())
    tempQs.add(QuestionBean(100, "下面将进行模拟夜间行驶场景灯光使用的考试,请按语音指令在5秒内做出相应的灯光操作"))//提示下面将进行灯光考试
    tempQs.add(list[list.size-2])//提示下面将进行灯光考试
    tempQs.add(list[0])
    val a = Utils.getRandomInts(4, 10)
    for (i in a.indices) {
        tempQs.add(list[a[i]])
    if (list.size>5){
        var questbean = QuestionBean(list[0].id,list[0].question)
        questbean.parseSolutionAndProcess(list[0].answer)
        tempQs.add(questbean)
        val a = Utils.getRandomInts(4, list.size)
        for (i in a.indices) {
            var te = list[a[i]]
            Log.i("AYJiaKao",te.toString())
            var questbean = QuestionBean(te.id,te.question)
            questbean.parseSolutionAndProcess(te.answer)
            tempQs.add(questbean)
        }
    }else{
        for (i in list.indices){
        var questbean = QuestionBean(list[i].id,list[i].question)
        questbean.parseSolutionAndProcess(list[i].answer)
        tempQs.add(questbean)
    }
    tempQs.add(list[list.size-1])//提示灯光考试结束
    }
    tempQs.add(QuestionBean(101, "模拟夜间考试完成请关闭所有灯光,请起步继续完成考试"))//提示灯光考试结束
    simulateNightBean.setQuestion(tempQs)
    MyLog.i("开始发送灯光,考试项共有"+simulateNightBean.question.size)
    AYSdk.getInstance().sendCmd(0x8012, gson.toJson(simulateNightBean))
    MyLog.i("开始发送灯光,gson="+gson.toJson(simulateNightBean))
//    AYSdk.getInstance().sendCmd(0x8012, gson.toJson(simulateNightBean))
    //发送考试状态
    MyLog.i("查到的考试type=$examType")
app/src/main/res/layout/fragment_light_exam_list.xml
@@ -72,7 +72,7 @@
                android:layout_height="@dimen/ui_margin_50dp"
                android:textColor="@android:color/white"
                android:textSize="28sp"
                android:text="可以更换的题目"/>
                android:text="题目库"/>
            <androidx.recyclerview.widget.RecyclerView
                android:layout_width="match_parent"
                android:layout_height="match_parent"