lizhanwei
2020-03-11 a583cc69c148fb9766aa1cd728e1201d04244c57
完成考试项目状态跟随考试状态进行颜色变化
13个文件已修改
173 ■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/Constant.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/Constant.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusInitWorker.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWoker.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/MainActivity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/app.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/customview/MyDialogFragment.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java 124 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -84,4 +84,7 @@
    public static final String BIND_RTK_SPEED_TOPIC = "BIND_RTK_SPEED_TOPIC";
    public static final int EXIT_CURRENT_ITEM = 0;//退出某场地
    public static String exam_enter_exitdata="exam_enter_exitdata";
    public static int Chang_di = 2;
    public static int DaoLu_night = 3;
    public static int DaoLu = 4;
}
app/src/main/java/safeluck/drive/evaluation/DB/Constant.java
@@ -18,4 +18,11 @@
    public static final String RTK_CONFIG_SN = "sn";
    @NotNull
    public static final String EXAM_STATUS_TYPE = "exam_status_type";
    public static final int EXAM_MAP_TYPE_REVERSE = 1;
    public static final int EXAM_MAP_TYPE_RAMP = 2;
    public static final int EXAM_MAP_TYPE_PARK = 3;
    public static final int EXAM_MAP_TYPE_CURVE = 4;
    public static final int EXAM_MAP_TYPE_ANGLE = 5;
    public static final int FINISH_ITEM = 0;//该项场地考试结束(出场地)
    public static final int BEGIN_ITEM = 1;//该项考试开始进入场地
}
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java
@@ -26,6 +26,16 @@
    //1 进入(正在进行考试)  2-待考
    private int enter;
    public ExamStatus(int map_id) {
        this.map_id = map_id;
    }
    public void setResult(int result) {
        this.result = result;
    }
    private int result=-1;//该项考试结果  默认-1 没有结果;  0-成功 1-失败
    //表示已经点击了开始考试,并且收到了考试应答  0-未考试  2-场地  3-模拟灯光,路考,  4-路考
    private int startExam;
@@ -78,4 +88,8 @@
                ", startExam=" + startExam +
                '}';
    }
    public int getResult() {
        return result;
    }
}
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusDao.java
@@ -2,6 +2,7 @@
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
@@ -25,4 +26,7 @@
    LiveData<Integer> getStartExam();
    @Query("select startExam from exam_status where map_id=1")
    int getStartExamInt();
    @Query("delete from exam_status")
    void deleteAll();
}
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusInitWorker.java
@@ -26,11 +26,12 @@
    @NonNull
    @Override
    public Result doWork() {
        MyLog.i(TAG,"exam_status表reset 初始化");
        for (int i = 0; i < 5; i++) {
        MyLog.i("exam_status表reset 初始化");
        WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getExamStatusDao().deleteAll();
        for (int i = 0; i < 1; i++) {
            examStatus.setEnter(2);//默认待考项目
            examStatus.setStartExam(0);//默认没有开始考试
            examStatus.setMap_id(i+1);
            examStatus.setMap_id(1);
            WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getExamStatusDao().insert(examStatus);
        }
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt
@@ -6,6 +6,7 @@
import androidx.work.Worker
import androidx.work.WorkerParameters
import com.anyun.exam.lib.AYSdk
import com.anyun.exam.lib.MyLog
import org.json.JSONException
import org.json.JSONObject
import safeluck.drive.evaluation.DB.Constant
@@ -15,7 +16,7 @@
    val TAG:String = "ExamStatusOutWorker"
    override fun doWork(): Result {
        val examType =WorkRoomDataBase.getWorkRoomDataBase(applicationContext).examStatusDao.startExamInt;
        Log.i(TAG,"查到的考试type="+examType)
        MyLog.i("查到的考试type="+examType)
        val data = Data.Builder().putInt(Constant.EXAM_STATUS_TYPE,examType).build()
        if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) {
            try {
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWoker.java
@@ -32,10 +32,11 @@
                jsonObject = new JSONObject(str);
                int mapId = jsonObject.getInt("map_id");
                int enter = jsonObject.getInt("enter");
                int type = jsonObject.getInt("type");
                ExamStatus examStatus = new ExamStatus();
                examStatus.setEnter(enter);
                examStatus.setMap_id(mapId);
                examStatus.setMap_item(1);
                examStatus.setMap_item(type);
                WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getExamStatusDao().insert(examStatus);
                return Result.success();
            } catch (JSONException e) {
app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java
@@ -40,6 +40,7 @@
        WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() {
            @Override
            public void run() {
                examStatusDao.updateStartExam(startex);
            }
        });
app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -165,7 +165,7 @@
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        //初始化tts
        ExamPlatformData.getInstance().initTTS(this);
        ExamPlatformData.getInstance().initTTS(getApplicationContext());
        // TODO
        //  进行tcp连接
        final String userId = "100002";
app/src/main/java/safeluck/drive/evaluation/app.java
@@ -329,7 +329,6 @@
                    jkMessage0206.speed = speed;
                    jkMessage0206.fangXiang = (int)track_ture;
                    jkMessage0206.rf = qf;
                    utc =utc.substring(0,15);
                    jkMessage0206.timeBCD = utc;
                    jkMessage0206.json =json;
                    jkMessage0206.length = jkMessage0206.json.length();
app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -69,7 +69,8 @@
        simulate_light_tips.add(new SimulateNightBean.QuestionBean(6,"雾天行驶"));
        simulate_light_tips.add(new SimulateNightBean.QuestionBean(7,"拱桥、人行道"));
        simulate_light_tips.add(new SimulateNightBean.QuestionBean(8,"夜间在道路上发生故障,妨碍交通又难以移动"));
        simulate_light_tips.add(new SimulateNightBean.QuestionBean(9," 夜间通过急弯、坡路、拱桥、人行横道、或者没有交通信号灯控制的路口"));
        //、拱桥、人行横道、或者没有交通信号灯控制的路口
        simulate_light_tips.add(new SimulateNightBean.QuestionBean(9," 夜间通过急弯、坡路"));
        simulate_light_tips.add(new SimulateNightBean.QuestionBean(10,"没有交通控制灯之路口"));
        simulate_light_tips.add(new SimulateNightBean.QuestionBean(11,"临时停车"));
        simulate_light_tips.add(new SimulateNightBean.QuestionBean(12,"超车"));
app/src/main/java/safeluck/drive/evaluation/customview/MyDialogFragment.java
@@ -42,6 +42,7 @@
                        }
                    }
                }).create();
        dialog.setCancelable(false);
        return dialog;
    }
    private Callback callback;
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -113,11 +113,12 @@
        public boolean handleMessage(Message msg) {
            if (msg.what == ADD_DATA){
                tv_total_score.setText(getResources().getString(R.string.total_score,currTotalScore));
                houseView.setColor(whatPaintColor(examStatusList.get(0)));
                av_podao.setColor(whatPaintColor(examStatusList.get(1)));
                av_park.setColor(whatPaintColor(examStatusList.get(2)));
                av_curve.setColor(whatPaintColor(examStatusList.get(3)));
                av_zhijiao.setColor(whatPaintColor(examStatusList.get(4)));
//                houseView.setColor(whatPaintColor(examStatusList));
                houseView.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_REVERSE));//倒车入库 type =1
                av_podao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_RAMP));
                av_park.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_PARK));
                av_curve.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_CURVE));
                av_zhijiao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_ANGLE));
            }
            if (msg.what == SPEED_DATA){
                tv_speed.setText(getResources().getString(R.string.speed,speed));
@@ -130,7 +131,12 @@
                    if (result == 0) {
                        JKMessage0201 jkMessage0201 = new JKMessage0201();
                        jkMessage0201.phone = ExamPlatformData.getInstance().getPhone();
                        if (exam_type==Constant.Chang_di){
                        jkMessage0201.currentExam = 0;
                        }else{
                            jkMessage0201.currentExam = 1;
                        }
                        jkMessage0201.id = icStr;
                        MessageProcessor.getInstance().sendMessage(jkMessage0201);
                    }
@@ -143,6 +149,86 @@
            return false;
        }
    });
    private int aaa(int type) {
        if (examStatusList!=null &&examStatusList.size()>0){
            for (ExamStatus examStatus:
                 examStatusList) {
                if (type == examStatus.getMap_item()){
                    if (examStatus.getEnter() == safeluck.drive.evaluation.DB.Constant.BEGIN_ITEM){
                        //进入考场
                        if (examStatusList.get(0).getStartExam() == Constant.NONE_BEEN_START_EXAM){
                            //结束考试了
                            MyLog.i("进入考场结束考试,startexam="+examStatus.getStartExam());
                            return getResources().getColor(R.color.colorAccent);
                        }else{
                            MyLog.i("进入考场,type="+type);
                            return getResources().getColor(R.color.pink);
                        }
                    }else if (examStatus.getEnter() == safeluck.drive.evaluation.DB.Constant.FINISH_ITEM){
                        if (examStatusList.get(0).getStartExam()==Constant.NONE_BEEN_START_EXAM){
                            return getResources().getColor(R.color.examing);
                        }
                        switch (type) {
                            case 1://倒库
                                if (item_conents.contains("倒车入库")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                }else{
                                    ExamPlatformData.getInstance().getTTS().speak("倒车入库合格");
                                    return getResources().getColor(R.color.train_btn_return);
                                }
                            case 2:
                                if (item_conents.contains("坡道定点停车和起步")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                }else{
                                    ExamPlatformData.getInstance().getTTS().speak("坡道定点停车和起步合格");
                                    return getResources().getColor(R.color.train_btn_return);
                                }
                            case 3:
                                if (item_conents.contains("侧方停车")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                }else{
                                    ExamPlatformData.getInstance().getTTS().speak("侧方停车合格");
                                    return getResources().getColor(R.color.train_btn_return);
                                }
                            case 4:
                                if (item_conents.contains("曲线行驶")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                }else{
                                    ExamPlatformData.getInstance().getTTS().speak("曲线行驶合格");
                                    return getResources().getColor(R.color.train_btn_return);
                                }
                            case 5:
                                if (item_conents.contains("直角转弯")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                }else{
                                    MyLog.i("该项考试成功,type="+type);
                                    ExamPlatformData.getInstance().getTTS().speak("直角转弯合格");
                                    return getResources().getColor(R.color.train_btn_return);
                                }
                        }
                    }else{
                        return getResources().getColor(R.color.examing);
                    }
                }
            }
        }
        return getResources().getColor(R.color.examing);
    }
    @Nullable
    @Override
@@ -174,11 +260,11 @@
                    currTotalScore -=item_id;
                    MyLog.i("当前得分:"+currTotalScore);
                    if (currTotalScore < Constant.PASSING_SCORE){
                        MyLog.i(TAG,"低于80,不合格"+currTotalScore);
                        MyLog.i("低于80,不合格"+currTotalScore);
                        ExamPlatformData.getInstance().getTTS().speak("考试不合格");
                        stopExam();
                    }
                    MyLog.i(TAG,"监测到有失败项目加入,通知UI更新颜色");
                    MyLog.i("监测到有失败项目加入,通知UI更新颜色");
                    mHandler.obtainMessage(ADD_DATA).sendToTarget();
                }else{
                    MyLog.i(TAG,"失败项目数据表被清空更新UI");
@@ -267,7 +353,12 @@
                        failedProj_selects.get(i).getScore_deducting()+"分"));
                MyLog.i("没有相同的sn,发送"+failedProj_selects.get(i).getSn());
                sns.add(failedProj_selects.get(i).getSn());
                jkMessage0203.timeBCD = failedProj_selects.get(i).getUtc();
                String utc =   failedProj_selects.get(i).getUtc();
                if (!TextUtils.isEmpty(utc)&&utc.length()>12){
                    utc =utc.substring(0,12);
                }
                jkMessage0203.timeBCD = utc ;
                jkMessage0203.fail_item_id = failedProj_selects.get(i).getEmp_id();
                jkMessage0203.fail_score = failedProj_selects.get(i).getScore_deducting();
                jkMessage0203.fail_reason = failedProj_selects.get(i).getDeducting_reason();
@@ -308,7 +399,7 @@
        switch (status) {
            case 0://考试完成
                switch (map_id) {
                    case 863://倒库
                    case 1://倒库
                        if (item_conents.contains("倒车入库")) {
                            return getResources().getColor(R.color.colorAccent);
                        }else{
@@ -406,6 +497,8 @@
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_start:
                OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class);
                WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork);
                //TODO 发送JKMessage0202 给平台,开始考试
                final JKMessage0202 jkMessage0202 = new JKMessage0202();
                jkMessage0202.phone = ExamPlatformData.getInstance().getPhone();
@@ -423,6 +516,7 @@
                    @Override
                    public void changKao() {
                        exam_type = 2;
                        examStatusViewModel.updateStartExam(exam_type);
                        sendExamJson(1,exam_type);
                        ExamPlatformData.getInstance().getTTS().speak("开始考试");
                        jkMessage0202.curr_exam = 0;
@@ -433,6 +527,7 @@
                    @Override
                    public void luKao() {
                        exam_type = 3;
                        examStatusViewModel.updateStartExam(exam_type);
                        sendExamJson(1,exam_type);
                        if (simulateNightBean == null){
                            simulateNightBean = new SimulateNightBean();
@@ -498,7 +593,7 @@
    private void sendExamJson(int i,int type) {
        try {
            examStatusViewModel.updateStartExam(type);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("exam", i);
            jsonObject.put("type", type);
@@ -512,16 +607,15 @@
    private void stopExam() {
        MyLog.i(TAG,"结束考试");
        //清空已经存在的sns
        sns.clear();
        item_id = 0;
        currTotalScore = 100;
        tv_total_score.setText(String.valueOf(currTotalScore));
        iv_head.getDrawable().setLevel(0);
        OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class);
        WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork);
        ExamPlatformData.getInstance().getTTS().speak("结束考试");
        sendExamJson(0,exam_type);
        examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM);
        sendExamJson(0,0);//结束考试 exstart=0
        //TODO 发送JKMessage0204给平台 结束考试
        JKMessage0204 jkMessage0204 = new JKMessage0204();
        jkMessage0204.phone = ExamPlatformData.getInstance().getPhone();