修改考试模式结束考试仍然可以展示错误项目,直至被销毁或者重新开始考试
3个文件已修改
114 ■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/java/com/anyun/exam/lib/SvrManager.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -370,11 +370,11 @@
                        }else{
                            MyLog.i(TAG,"路考失败项目数据表被清空更新UI");
                            item_id = 0;
                            mArrayList.clear();
                            item_conents.clear();
                            Collections.sort(mArrayList);
                            mScoreAdapter.addDatas(mArrayList);
                            mHandler.obtainMessage(ADD_DATA).sendToTarget();
//                            mArrayList.clear();
//                            item_conents.clear();
//                            Collections.sort(mArrayList);
//                            mScoreAdapter.addDatas(mArrayList);
//                            mHandler.obtainMessage(ADD_DATA).sendToTarget();
                        }
                    }
@@ -386,7 +386,7 @@
            @Override
            public void onChanged(List<FailedProj_select> failedProj_selects) {
                if (ExamPlatformData.getInstance().getExamType()<=ExamPlatformData.EXAM_TYPE_ChangKAO){
                    MyLog.i("现在是场考状态,监视路考数据失败项目");
                    MyLog.i("现在是场考状态,监视数据失败项目");
                    if (failedProj_selects != null && failedProj_selects.size()>0){
                        item_id = 0;
@@ -408,19 +408,19 @@
                        MyLog.i("当前得分:"+currTotalScore);
                        if (currTotalScore < Constant.PASSING_SCORE){
                            MyLog.i("场考低于80,不合格"+currTotalScore);
//                            ExamPlatformData.getInstance().getTTS().speak("考试不合格");
//                            stopExam();
                            ExamPlatformData.getInstance().getTTS().speak("考试不合格");
                            stopExam();
                        }
                        MyLog.i("场考监测到有失败项目加入,通知UI更新颜色");
                        mHandler.obtainMessage(ADD_DATA).sendToTarget();
                    }else{
                        MyLog.i(TAG,"场考失败项目数据表被清空更新UI");
                        item_id = 0;
                        mArrayList.clear();
                        item_conents.clear();
                        Collections.sort(mArrayList);
                        mScoreAdapter.addDatas(mArrayList);
                        mHandler.obtainMessage(ADD_DATA).sendToTarget();
//                        mArrayList.clear();
//                        item_conents.clear();
//                        Collections.sort(mArrayList);
//                        mScoreAdapter.addDatas(mArrayList);
//                        mHandler.obtainMessage(ADD_DATA).sendToTarget();
                    }
                }
@@ -456,9 +456,11 @@
                    if (examStatus.get(0).getStartExam() != Constant.NONE_BEEN_START_EXAM){
                        btn_start_exam.setEnabled(false);
                        tv_stop.setEnabled(true);
                        iv_head.getDrawable().setLevel(1);
                    }else{
                        btn_start_exam.setEnabled(true);
                        tv_stop.setEnabled(false);
                        iv_head.getDrawable().setLevel(0);
                    }
                    exam_type = examStatus.get(0).getStartExam();
                }
@@ -591,15 +593,10 @@
        switch (v.getId()) {
            case R.id.btn_start:
                clearArrayListResetTotalScore();
                //TODO 发送JKMessage0202 给平台,开始考试
                final JKMessage0202 jkMessage0202 = new JKMessage0202();
                Date date = new Date();
                wokViewModel.updateBeginTime(date.getTime());
                jkMessage0202.timeBCD = date;
                ExamPlatformData.getInstance().setExam_id(Utils.parseUnsignedInt(String.valueOf(date.getTime()/1000),10));
                jkMessage0202.ID = ExamPlatformData.getInstance().getID();
                jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
                if (myDialogFragment == null){
                    myDialogFragment = new MyDialogFragment();
@@ -610,13 +607,20 @@
                    public void changKao() {
                        exam_type = 2;
                        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.EXAMING_MODE);
                        iv_head.getDrawable().setLevel(1);
                        ExamPlatformData.getInstance().setExamType(exam_type);
                        examStatusViewModel.updateStartExam(exam_type);
                        sendExamJson(1,exam_type);
                        ExamPlatformData.getInstance().getTTS().speak("开始考试");
                        jkMessage0202.curr_exam = 0;
                        Date date = new Date();
                        wokViewModel.updateBeginTime(date.getTime());
                        jkMessage0202.timeBCD = date;
                        ExamPlatformData.getInstance().setExam_id(Utils.parseUnsignedInt(String.valueOf(date.getTime()/1000),10));
                        jkMessage0202.ID = ExamPlatformData.getInstance().getID();
                        jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
                        jkMessage0202.curr_exam = 0;
                        MessageProcessor.getInstance().sendMessage(jkMessage0202);
                    }
@@ -627,10 +631,18 @@
                        ExamPlatformData.getInstance().setExamType(exam_type);
                        examStatusViewModel.updateStartExam(exam_type);
                        sendExamJson(1,exam_type);
                        jkMessage0202.curr_exam = 1;
                        iv_head.getDrawable().setLevel(1);
                        MessageProcessor.getInstance().sendMessage(jkMessage0202);
                        ExamPlatformData.getInstance().getTTS().speak("开始考试");
                        Date date = new Date();
                        wokViewModel.updateBeginTime(date.getTime());
                        jkMessage0202.timeBCD = date;
                        ExamPlatformData.getInstance().setExam_id(Utils.parseUnsignedInt(String.valueOf(date.getTime()/1000),10));
                        jkMessage0202.ID = ExamPlatformData.getInstance().getID();
                        jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
                        jkMessage0202.curr_exam = 1;
                        MessageProcessor.getInstance().sendMessage(jkMessage0202);
                    }
                });
@@ -707,18 +719,30 @@
        WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork);
        item_id = 0;
        currTotalScore = 100;
        failedProjViewModel.deleteAll();
        tv_total_score.setText(String.valueOf(currTotalScore));
        iv_head.getDrawable().setLevel(0);
        ExamPlatformData.getInstance().getTTS().speak("结束考试");
        examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM);
        sendExamJson(0,0);//结束考试 exstart=0
    }
    /**
     * 因为考试结束瞬间清掉数据库,所以不会显示失败项目和分数,加下面这个方法是在开始考试的时候reset数据,
     * 这样就可以保证考试结束的时候,还能显示错误项和分数(只是保存在了内存中,不会影响训练模式的使用)
     */
    private void clearArrayListResetTotalScore(){
        item_id = 0;
        mArrayList.clear();
        item_conents.clear();
        Collections.sort(mArrayList);
        mScoreAdapter.addDatas(mArrayList);
        mHandler.obtainMessage(ADD_DATA).sendToTarget();
        currTotalScore = 100;
    }
    private ICEventListener icEventListener = new ICEventListener() {
        @Override
        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java
@@ -8,6 +8,7 @@
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.SurfaceHolder;
@@ -24,6 +25,7 @@
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.IOException;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.ArrayList;
@@ -35,6 +37,7 @@
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.Constant;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.bean.ExamPlatformData;
import safeluck.drive.evaluation.bean.RealTimeCarPos;
import safeluck.drive.evaluation.bean.RoadExamMap;
import safeluck.drive.evaluation.cEventCenter.CEventCenter;
@@ -47,7 +50,7 @@
    private static final int ALL_MAP = 100;
    private boolean isDrawing = false;
    private StringBuffer buffer;//存放地图的buffer
    private StringBuffer buffer = null;//存放地图的buffer
    private ICEventListener rtcmicEventListener = new ICEventListener() {
        @Override
        public void onCEvent(String topic, int msgCode, int resultCode, final Object obj) {
@@ -470,6 +473,7 @@
        }
    };
    boolean flag = true;
    String newmap = null;
    class CalRunnable implements Runnable{
@@ -544,15 +548,29 @@
                    tire.add(tire4.get(0));
                    if (buffer == null) {
                        buffer = FileUtil.readAssetTxtFile(_mActivity, Constant.ROAD_MAP);
                        Log.i(TAG, "ditu=" + buffer.toString().trim());
                    }
                        final String roadMapPath = ExamPlatformData.getInstance().getRoadMapPath();
                        if (!TextUtils.isEmpty(roadMapPath)){
                                byte [] datas= FileUtil.readFile(roadMapPath);
                                if (datas != null){
                                    newmap= new String(datas);
                                }else{
                                    MyLog.i(String.format("文件:%s不存在",roadMapPath));
                                }
                        }else{
                            buffer = FileUtil.readAssetTxtFile(_mActivity, Constant.ROAD_MAP);
                            Log.i(TAG, "ditu=" + buffer.toString().trim());
                        }
                    Type type = new TypeToken<RoadExamMap>() {
                    }.getType();
                    if (buffer != null) {
                        examMaps = gson.fromJson(buffer.toString().trim(), type);
                    }else{
                        examMaps = gson.fromJson(newmap.trim(),type);
                    }
                    if (examMaps != null) {
lib/src/main/java/com/anyun/exam/lib/SvrManager.java
@@ -22,6 +22,7 @@
    private static final SvrManager ourInstance = new SvrManager();
    private static final String TAG = "SvrManager";
    private MyServiceConn conn;
    private Intent intent;
    private IAYExamListener mCallback;
@@ -109,7 +110,7 @@
    }
    public void bindRemoteService(Context mContext){
        Intent intent = new Intent(mContext,RemoteService.class);
        intent = new Intent(mContext,RemoteService.class);
        conn = new MyServiceConn();
        mContext.bindService(intent,conn, Context.BIND_AUTO_CREATE);
    }
@@ -124,6 +125,9 @@
            }
        }
        mContext.unbindService(conn);
        if (intent!=null){
            mContext.stopService(intent);
        }
    }
    /**