lizhanwei
2020-04-20 7815e8d838fcd1bca3792671dc20dde77125a343
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -1,6 +1,7 @@
package safeluck.drive.evaluation.fragment;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
@@ -14,7 +15,12 @@
import android.os.Handler;
import android.os.Message;
import android.text.Html;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
@@ -65,6 +71,7 @@
import safeluck.drive.evaluation.im.MessageProcessor;
import safeluck.drive.evaluation.platformMessage.JKMessage0201;
import safeluck.drive.evaluation.platformMessage.JKMessage0202;
import safeluck.drive.evaluation.util.DimenUtil;
import safeluck.drive.evaluation.util.Utils;
import safeluck.drive.evaluation.viewmodels.TimeViewModel;
@@ -86,11 +93,12 @@
    private int exam_type = 2;//2 场地;3 道路,模拟夜考;4 道路,实际夜考;
    private ListView mListView;
    private Button btn_start_exam;
    private Button btn_return;
    private TextView tv_stop;//呼叫请求(结束考试)
    private Gson gson = new Gson();
    private ScoreAdapter mScoreAdapter;
    private ArrowView av_zhijiao, av_curve, av_park, av_podao;
    private HouseView houseView;
    private Button av_zhijiao, av_curve, av_park, av_podao;
    private Button houseView;
    private List<ExamStatus> examStatusList = new ArrayList<>();
    private List<String> item_conents = new ArrayList<>();//坡道定点停车和起步
@@ -119,12 +127,12 @@
        public boolean handleMessage(Message msg) {
            if (msg.what == ADD_DATA){
                MyLog.i("handler add_data totalScore="+currTotalScore);
                tv_total_score.setText(getResources().getString(R.string.total_score,currTotalScore));
                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));
                setTotalScoreText();
                houseView.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_REVERSE));//倒车入库 type =1
                av_podao.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_RAMP));
                av_park.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_PARK));
                av_curve.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_CURVE));
                av_zhijiao.setBackground(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_ANGLE));
                for (int i = 0; i < btn_ids.size(); i++) {
                    int viewId = getResources().getIdentifier(String.valueOf(btn_ids.get(i)),"id",_mActivity.getPackageName());
@@ -162,7 +170,7 @@
        }
    });
    private int aaa(int type) {
    private Drawable aaa(int type) {
        if (examStatusList!=null &&examStatusList.size()>0){
            for (ExamStatus examStatus:
                    examStatusList) {
@@ -172,17 +180,17 @@
                        if (examStatusList.get(0).getStartExam() == Constant.NONE_BEEN_START_EXAM){
                            //结束考试了
                            MyLog.i("进入考场结束考试,startexam="+examStatus.getStartExam());
                            return getResources().getColor(R.color.colorAccent);
                            return getResources().getDrawable(R.drawable.ic_btn_fail);
                        }else{
                            MyLog.i("进入考场,type="+type);
                            return getResources().getColor(R.color.pink);
                            return getResources().getDrawable(R.drawable.ic_btn_examing);
                        }
                    }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);
                            return getResources().getDrawable(R.drawable.ic_btn_daikao);
                        }
                        switch (type) {
@@ -190,7 +198,7 @@
                                if (item_conents.contains("倒车入库")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                    return getResources().getDrawable(R.drawable.ic_btn_fail);
                                }else{
                                    if (examStatus.getResult() ==1){
                                        MyLog.i("已经播放过倒车入库合格");
@@ -199,12 +207,12 @@
                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
                                    }
                                    return getResources().getColor(R.color.train_btn_return);
                                    return getResources().getDrawable(R.drawable.ic_btn_succ);
                                }
                            case 2:
                                if (item_conents.contains("坡道定点停车和起步")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                    return getResources().getDrawable(R.drawable.ic_btn_fail);
                                }else{
                                    if (examStatus.getResult() ==1){
                                        MyLog.i("已经播放过坡道定点停车和起步合格合格");
@@ -213,12 +221,12 @@
                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
                                    }
                                    return getResources().getColor(R.color.train_btn_return);
                                    return getResources().getDrawable(R.drawable.ic_btn_succ);
                                }
                            case 3:
                                if (item_conents.contains("侧方停车")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                    return getResources().getDrawable(R.drawable.ic_btn_fail);
                                }else{
                                    if (examStatus.getResult() ==1){
                                        MyLog.i("已经播放过侧方停车合格");
@@ -227,12 +235,12 @@
                                        ExamPlatformData.getInstance().getTTS().speak("侧方停车合格");
                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
                                    }
                                    return getResources().getColor(R.color.train_btn_return);
                                    return getResources().getDrawable(R.drawable.ic_btn_succ);
                                }
                            case 4:
                                if (item_conents.contains("曲线行驶")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                    return getResources().getDrawable(R.drawable.ic_btn_fail);
                                }else{
                                    if (examStatus.getResult() ==1){
                                        MyLog.i("已经播放过曲线行驶合格");
@@ -241,12 +249,12 @@
                                        ExamPlatformData.getInstance().getTTS().speak("曲线行驶合格");
                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
                                    }
                                    return getResources().getColor(R.color.train_btn_return);
                                    return getResources().getDrawable(R.drawable.ic_btn_succ);
                                }
                            case 5:
                                if (item_conents.contains("直角转弯")) {
                                    MyLog.i("该项考试失败,type="+type);
                                    return getResources().getColor(R.color.colorAccent);
                                    return getResources().getDrawable(R.drawable.ic_btn_fail);
                                }else{
                                    if (examStatus.getResult() ==1){
                                        MyLog.i("已经播放过直角转弯合格");
@@ -255,7 +263,7 @@
                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
                                    }
                                    return getResources().getColor(R.color.train_btn_return);
                                    return getResources().getDrawable(R.drawable.ic_btn_succ);
                                }
@@ -263,12 +271,12 @@
                        }
                    }else{
                        return getResources().getColor(R.color.examing);
                        return getResources().getDrawable(R.drawable.ic_btn_daikao);
                    }
                }
            }
        }
        return getResources().getColor(R.color.examing);
        return getResources().getDrawable(R.drawable.ic_btn_daikao);
    }
    /**
@@ -448,11 +456,11 @@
                    examStatusList.addAll(examStatus);
                    mHandler.obtainMessage(ADD_DATA).sendToTarget();
                    if (examStatus.get(0).getStartExam() != Constant.NONE_BEEN_START_EXAM){
                        btn_start_exam.setEnabled(false);
//                        btn_start_exam.setEnabled(false);
                        tv_stop.setEnabled(true);
                        iv_head.getDrawable().setLevel(1);
                    }else{
                        btn_start_exam.setEnabled(true);
//                        btn_start_exam.setEnabled(true);
                        tv_stop.setEnabled(false);
                        iv_head.getDrawable().setLevel(0);
                    }
@@ -552,7 +560,8 @@
        tv_speed.setText(getResources().getString(R.string.speed,speed));
        view.findViewById(R.id.btn_return).setOnClickListener(this);
        btn_return = view.findViewById(R.id.btn_return);
        btn_return.setOnClickListener(this);
        mListView = view.findViewById(R.id.lv);
        mListView.setFocusable(false);
        mListView.setOnTouchListener(new View.OnTouchListener() {
@@ -575,13 +584,12 @@
        view.findViewById(R.id.view_map).setOnClickListener(this);
        mScoreAdapter = new ScoreAdapter(_mActivity);
        mListView.setAdapter(mScoreAdapter);
        btn_start_exam = view.findViewById(R.id.btn_start);
        btn_start_exam.setText("开始训练");
        btn_start_exam.setOnClickListener(this);
//        btn_start_exam = view.findViewById(R.id.btn_start);
//        btn_start_exam.setText("开始训练");
//        btn_start_exam.setOnClickListener(this);
        tv_stop = view.findViewById(R.id.tv_stop);
        tv_stop.setText("结束训练");
        tv_stop.setOnClickListener(this);
        mListView.addHeaderView(LayoutInflater.from(_mActivity).inflate(R.layout.layout_score_item, null));
    }
@@ -591,40 +599,40 @@
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_start:
                //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));
                if (myDialogFragment == null){
                    myDialogFragment = new MyDialogFragment();
                }
                myDialogFragment.show(getFragmentManager(),"dialog");
                myDialogFragment.setCallback(new MyDialogFragment.Callback() {
                    @Override
                    public void changKao() {
                        sendJK0202(2);
                    }
                    @Override
                    public void luKao() {
                        sendJK0202(3);
                    }
                });
//            case R.id.btn_start:
//
//                //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));
//                if (myDialogFragment == null){
//                    myDialogFragment = new MyDialogFragment();
//                }
//                myDialogFragment.show(getFragmentManager(),"dialog");
//                myDialogFragment.setCallback(new MyDialogFragment.Callback() {
//                    @Override
//                    public void changKao() {
//
//                        sendJK0202(2);
//                    }
//
//                    @Override
//                    public void luKao() {
//                        sendJK0202(3);
//
//
//
//                    }
//                });
                break;
//                break;
            case R.id.tv_stop:
                Toast.makeText(_mActivity, "结束考试", Toast.LENGTH_SHORT).show();
                stopExam();
@@ -648,7 +656,11 @@
                }
                break;
            case R.id.btn_return:
                _mActivity.onBackPressed();
//                _mActivity.onBackPressed();
                Log.i(TAG,"screenWidth="+ DimenUtil.getScreenWidth(_mActivity));
                Log.i(TAG,"screenHeight="+ DimenUtil.getScreenHeight(_mActivity));
                Log.i(TAG,"18px font ="+ DimenUtil.px2sp(_mActivity,18));
                Log.i(TAG,"48px dp ="+ DimenUtil.px2dp(_mActivity,48));
                break;
            case R.id.iv_head:
                MyLog.i(TAG,"签到,获取身份证物理卡号");
@@ -708,8 +720,7 @@
        item_id = 0;
        currTotalScore = 100;
        failedProjViewModel.deleteAll();
        tv_total_score.setText(String.valueOf(currTotalScore));
        setTotalScoreText();
        ExamPlatformData.getInstance().getTTS().speak("结束训练");
@@ -718,6 +729,16 @@
    }
    private void setTotalScoreText() {
        String totalstr=String.format(getString(R.string.total_score),currTotalScore);
        SpannableString msp = new SpannableString(totalstr);
        msp.setSpan(new ForegroundColorSpan(Color.parseColor("#A1A1A3")),totalstr.length()-1,totalstr.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        msp.setSpan(new AbsoluteSizeSpan(13),totalstr.length()-1,totalstr.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv_total_score.setText(msp);
    }
    private ICEventListener icEventListener = new ICEventListener() {
        @Override
        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {