From 558c2b293637494eb3887a99b3e3d461210b0777 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期四, 12 三月 2020 09:47:21 +0800
Subject: [PATCH] 修改分数

---
 app/src/main/java/safeluck/drive/evaluation/Constant.java                      |    4 
 app/src/main/java/safeluck/drive/evaluation/app.java                           |    3 
 app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java         |    4 
 app/src/main/java/safeluck/drive/evaluation/worker/TimeWorker.kt               |   21 +
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java        |  508 +++++++++++++++++++++++++++++++++++++--------
 app/src/main/java/safeluck/drive/evaluation/util/Utils.java                    |   56 +++++
 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java |   34 ++
 7 files changed, 528 insertions(+), 102 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java
index 6c78e2e..9e6c2d5 100644
--- a/app/src/main/java/safeluck/drive/evaluation/Constant.java
+++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -1,5 +1,7 @@
 package safeluck.drive.evaluation;
 
+import org.jetbrains.annotations.NotNull;
+
 /**
  * MyApplication2
  * Created by lzw on 2020/1/7. 18:01:40
@@ -87,4 +89,6 @@
     public static int Chang_di = 2;
     public static int DaoLu_night = 3;
     public static int DaoLu = 4;
+    @NotNull
+    public static final String TIME_MINUTE = "show_time_minute";
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index eb2892f..db36839 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -329,6 +329,9 @@
                     jkMessage0206.speed = speed;
                     jkMessage0206.fangXiang = (int)track_ture;
                     jkMessage0206.rf = qf;
+                    if (utc.length()>16){
+                        utc = utc.substring(0,16);
+                    }
                     jkMessage0206.timeBCD = utc;
                     jkMessage0206.json =json;
                     jkMessage0206.length = jkMessage0206.json.length();
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
index d668133..0b425f3 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -42,9 +42,9 @@
     private static List<SimulateNightBean.QuestionBean> simulate_light_tips = new ArrayList<>();
     static {
         examPlatformStrs.put(TCP_DISCONNECT,"鏈繛鎺�");
-        examPlatformStrs.put(TCP_CONNECTED,"宸茶繛鎺�");
+        examPlatformStrs.put(TCP_CONNECTED,"鏈櫥褰�");
         examPlatformStrs.put(DEV_NOT_REGISTERED,"鏈敞鍐�");
-        examPlatformStrs.put(DEV_REGISTERED,"宸叉敞鍐�");
+        examPlatformStrs.put(DEV_REGISTERED,"鏈櫥褰�");
         examPlatformStrs.put(DEV_NOT_LOGIN,"鏈櫥褰�");
         examPlatformStrs.put(DEV_LOGIN,"宸茬櫥褰�");
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
index 2ebd2e2..aa3634f 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -23,6 +23,8 @@
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProviders;
 import androidx.work.OneTimeWorkRequest;
+import androidx.work.PeriodicWorkRequest;
+import androidx.work.WorkInfo;
 import androidx.work.WorkManager;
 
 import com.anyun.exam.lib.AYSdk;
@@ -37,6 +39,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Random;
+import java.util.concurrent.TimeUnit;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.Constant;
@@ -65,6 +68,7 @@
 import safeluck.drive.evaluation.platformMessage.JKMessage0203;
 import safeluck.drive.evaluation.platformMessage.JKMessage0204;
 import safeluck.drive.evaluation.util.Utils;
+import safeluck.drive.evaluation.worker.TimeWorker;
 
 /**
  * 鑱旂綉璁粌UI
@@ -91,7 +95,7 @@
     private int item_id;//鎵e垎鍒嗘暟鎬诲拰
     private ExamStatusViewModel examStatusViewModel;
     private static final int ADD_DATA = 1;
-    private TextView tv_speed,tv_total_score,tv_sat_num,tv_name,tv_id,tv_work_platform;
+    private TextView tv_speed,tv_total_score,tv_sat_num,tv_name,tv_id,tv_work_platform,tv_network_time;
     private double speed=0.0;
     private ImageView iv_rtk_status,iv_head;
 
@@ -112,8 +116,8 @@
         @Override
         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(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));
@@ -243,6 +247,7 @@
                 if (failedProj_selects != null && failedProj_selects.size()>0){
                    
                     item_id = 0;
+                    currTotalScore = 100;
                     mArrayList.clear();
                     item_conents.clear();
                     for (FailedProj_select f :
@@ -257,6 +262,7 @@
                     }
                     //TODO 鍙戦�丣KMessage0203 缁欏钩鍙帮紝杩欏効鏈夌偣澶嶆潅锛岀湅鎬庝箞澶勭悊
                     sendJKMessage0203(failedProj_selects);
+                    MyLog.i("娌℃墸鍒嗕箣鍓嶅緱鍒嗭細"+currTotalScore);
                     currTotalScore -=item_id;
                     MyLog.i("褰撳墠寰楀垎锛�"+currTotalScore);
                     if (currTotalScore < Constant.PASSING_SCORE){
@@ -457,6 +463,25 @@
         tv_sat_num = view.findViewById(R.id.tv_sat_num);
         tv_speed = view.findViewById(R.id.tv_speed);
         tv_total_score = view.findViewById(R.id.tv_total_score);
+        tv_network_time = view.findViewById(R.id.network_time);
+
+
+        PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest.Builder(TimeWorker.class,30, TimeUnit.SECONDS).build();
+        WorkManager.getInstance(getContext().getApplicationContext()).enqueue(periodicWorkRequest);
+        WorkManager.getInstance(getContext().getApplicationContext()).getWorkInfoByIdLiveData(periodicWorkRequest.getId())
+                .observe(this, new Observer<WorkInfo>() {
+                    @Override
+                    public void onChanged(WorkInfo workInfo) {
+                        if (workInfo!= null&&workInfo.getState().isFinished()){
+                            String time = workInfo.getOutputData().getString(Constant.TIME_MINUTE);
+                            MyLog.i("Time="+time);
+                            tv_network_time.setText(time);
+                        }
+
+                    }
+                });
+        tv_network_time.setText(Utils.getHHmm());
+
         tv_speed.setText(getResources().getString(R.string.speed,speed));
 
         view.findViewById(R.id.btn_return).setOnClickListener(this);
@@ -499,6 +524,8 @@
             case R.id.btn_start:
                 OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class);
                 WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork);
+                item_id = 0;
+                currTotalScore = 100;
                 //TODO 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯
                 final JKMessage0202 jkMessage0202 = new JKMessage0202();
                 jkMessage0202.phone = ExamPlatformData.getInstance().getPhone();
@@ -608,8 +635,7 @@
     private void stopExam() {
         MyLog.i(TAG,"缁撴潫鑰冭瘯");
 
-        item_id = 0;
-        currTotalScore = 100;
+
         tv_total_score.setText(String.valueOf(currTotalScore));
         iv_head.getDrawable().setLevel(0);
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
index 95e0c0c..cdb728b 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -12,8 +12,10 @@
 
 import android.os.Handler;
 import android.os.Message;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.Button;
@@ -24,15 +26,21 @@
 
 import com.anyun.exam.lib.AYSdk;
 import com.anyun.exam.lib.MyLog;
+import com.google.gson.Gson;
 
 import org.json.JSONException;
 import org.json.JSONObject;
 
 import java.util.ArrayList;
+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;
+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;
@@ -42,11 +50,20 @@
 import safeluck.drive.evaluation.DB.failitems.FailedProj_select;
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.adapter.ScoreAdapter;
+import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.bean.ScoreBean;
+import safeluck.drive.evaluation.bean.SimulateNightBean;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
 import safeluck.drive.evaluation.customview.ArrowView;
 import safeluck.drive.evaluation.customview.HouseView;
+import safeluck.drive.evaluation.customview.MyDialogFragment;
+import safeluck.drive.evaluation.im.MessageProcessor;
+import safeluck.drive.evaluation.platformMessage.JKMessage0201;
+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
  * MyApplication2
@@ -57,66 +74,176 @@
 public class TrainFragment extends SupportFragment implements View.OnClickListener {
 
     private static final String TAG = TrainFragment.class.getSimpleName();
-    private ListView mListView ;
-    private Button btn_train;
-    private ScoreAdapter mScoreAdapter;
 
-    private int item_id;//鎵e垎鍒嗘暟鎬诲拰
+    public static SupportFragment newInstance() {
+        return new TrainFragment();
+    }
+
+    private int exam_type = 2;//2 鍦哄湴锛�3 閬撹矾锛屾ā鎷熷鑰冿紱4 閬撹矾锛屽疄闄呭鑰冿紱
+    private ListView mListView;
+    private Button btn_start_exam;
+    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 List<ExamStatus> examStatusList = new ArrayList<>();
     private List<String> item_conents = new ArrayList<>();//鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝�
 
+    private int item_id;//鎵e垎鍒嗘暟鎬诲拰
     private ExamStatusViewModel examStatusViewModel;
     private static final int ADD_DATA = 1;
-    private static final int SPEED_DATA = 2;
+    private TextView tv_speed,tv_total_score,tv_sat_num,tv_name,tv_id,tv_work_platform;
+    private double speed=0.0;
     private ImageView iv_rtk_status,iv_head;
 
-    private List<ScoreBean> mArrayList = new ArrayList<>();
-    private View tv_stop;
-    private TextView tv_speed,tv_total_score,tv_sat_num;
     private int currTotalScore = 100;
-    private double speed=0.0;
+    private List<ScoreBean> mArrayList = new ArrayList<>();
+    private static final int SPEED_DATA = 2;
+    private FailedProjViewModel failedProjViewModel;
+    String icson;//杩斿洖鐨刬c鍗′俊鎭� json
+    private Random random = new Random();
+    private List<SimulateNightBean.QuestionBean> tempQs=  new ArrayList<>();
+
+
+
 
     private Handler mHandler = new Handler(new Handler.Callback() {
         @Override
         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(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(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));
+            }
+            if (msg.what == Constant.IC_ID){
+                try {
+                    JSONObject jsSpeed = new JSONObject(icson);
+                    int result = jsSpeed.getInt("result");
+                    String icStr = jsSpeed.getString("serialno");
+                    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);
+                    }
+
+                }catch (JSONException e){
+
+                }
+
             }
             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("杩涘叆鑰冨満缁撴潫鑰冭瘯锛宻tartexam="+examStatus.getStartExam());
+                            return getResources().getColor(R.color.colorAccent);
+                        }else{
+                            MyLog.i("杩涘叆鑰冨満锛宼ype="+type);
+                            return getResources().getColor(R.color.pink);
+                        }
 
 
-    public static SupportFragment newInstance(){
-        return new TrainFragment();
+                    }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("璇ラ」鑰冭瘯澶辫触锛宼ype="+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("璇ラ」鑰冭瘯澶辫触锛宼ype="+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("璇ラ」鑰冭瘯澶辫触锛宼ype="+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("璇ラ」鑰冭瘯澶辫触锛宼ype="+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("璇ラ」鑰冭瘯澶辫触锛宼ype="+type);
+                                    return getResources().getColor(R.color.colorAccent);
+                                }else{
+                                    MyLog.i("璇ラ」鑰冭瘯鎴愬姛锛宼ype="+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
-    public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(R.layout.layout_train_fragment,container,false);
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View view = inflater.inflate(R.layout.layout_train_fragment, container, false);
         initView(view);
 
-
-
-        FailedProjViewModel failedProjViewModel =ViewModelProviders.of(this).get(FailedProjViewModel.class);
+        failedProjViewModel = ViewModelProviders.of(this).get(FailedProjViewModel.class);
         failedProjViewModel.getFailedProjectsForI(Constant.TEST_STU_ID).observe(this, new Observer<List<FailedProj_select>>() {
             @Override
             public void onChanged(List<FailedProj_select> failedProj_selects) {
                 if (failedProj_selects != null && failedProj_selects.size()>0){
 
                     item_id = 0;
+                    currTotalScore = 100;
                     mArrayList.clear();
                     item_conents.clear();
                     for (FailedProj_select f :
@@ -125,22 +252,28 @@
                         Log.i(TAG, "onChanged: " + f.toString());
                         mArrayList.add(new ScoreBean(f.getScore_deducting(), f.getItem_content(), f.getDeducting_reason()));
                         item_conents.add(f.getItem_content());
+                        Collections.reverse(mArrayList);
                         mScoreAdapter.addDatas(mArrayList);
+                        MyLog.i("item_score="+item_id);
                     }
+                    //TODO 鍙戦�丣KMessage0203 缁欏钩鍙帮紝杩欏効鏈夌偣澶嶆潅锛岀湅鎬庝箞澶勭悊
+                    sendJKMessage0203(failedProj_selects);
+                    MyLog.i("娌℃墸鍒嗕箣鍓嶅緱鍒嗭細"+currTotalScore);
                     currTotalScore -=item_id;
+                    MyLog.i("褰撳墠寰楀垎锛�"+currTotalScore);
                     if (currTotalScore < Constant.PASSING_SCORE){
-                        MyLog.i(TAG,"浣庝簬80锛屼笉鍚堟牸");
+                        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");
                     item_id = 0;
                     mArrayList.clear();
                     item_conents.clear();
+                    Collections.reverse(mArrayList);
                     mScoreAdapter.addDatas(mArrayList);
                     mHandler.obtainMessage(ADD_DATA).sendToTarget();
                 }
@@ -153,26 +286,43 @@
             @Override
             public void onChanged(List<ExamStatus> examStatus) {
 
-                for (ExamStatus e :
-                        examStatus) {
-                    Log.i(TAG, "onChanged: e="+e.toString());
+
+
+                Log.i(TAG, "ExamStatus onChanged: ");
+                if (examStatus!=null && examStatus.size()>0){
+                    MyLog.i(TAG,"鑰冭瘯鐘舵�佹洿鏂�");
+                    examStatusList.clear();
+                    examStatusList.addAll(examStatus);
+                    mHandler.obtainMessage(ADD_DATA).sendToTarget();
+                    if (examStatus.get(0).getStartExam() != Constant.NONE_BEEN_START_EXAM){
+                        btn_start_exam.setEnabled(false);
+                        tv_stop.setEnabled(true);
+                    }else{
+                        btn_start_exam.setEnabled(true);
+                        tv_stop.setEnabled(false);
+                    }
+                    exam_type = examStatus.get(0).getStartExam();
                 }
-                Log.i(TAG, "onChanged: ");
-                examStatusList.clear();
-                examStatusList.addAll(examStatus);
-                mHandler.obtainMessage(ADD_DATA).sendToTarget();
-                if (examStatus.get(0).getStartExam() == Constant.NONE_BEEN_START_EXAM){
-                    btn_train.setEnabled(false);
-                    tv_stop.setEnabled(true);
-                }else{
-                    btn_train.setEnabled(true);
-                    tv_stop.setEnabled(false);
-                }
+
 
             }
         });
+        WokViewModel wokViewModel = ViewModelProviders.of(this).get(WokViewModel.class);
+        wokViewModel.getStudents().observe(this, new Observer<List<Student>>() {
+            @Override
+            public void onChanged(List<Student> students) {
+                for (Student student :
+                        students) {
+                    MyLog.i(TAG, "onChanged: " + student.toString());
+                    if (!TextUtils.isEmpty(student.getName())){
 
-
+                        tv_name.setText(getString(R.string.name)+student.getName());
+                        tv_id.setText(getString(R.string.user_id)+student.getID());
+                        ExamPlatformData.getInstance().setId(student.getID());
+                    }
+                }
+            }
+        });
 
         AppStatusViewModel appStatusViewModel = ViewModelProviders.of(this).get(AppStatusViewModel.class);
         appStatusViewModel.getAppStatus().observe(this, new Observer<AppStatus>() {
@@ -181,6 +331,7 @@
                 if (appStatus != null){
                     Log.i(TAG, "onChanged: "+appStatus.toString());
                     iv_rtk_status.getDrawable().setLevel(appStatus.getRtk_connect_status());
+                    tv_work_platform.setText(getString(R.string.platform_status,ExamPlatformData.getInstance().getExamplatformStatusStr(appStatus.getWork_platform())));
                     tv_sat_num.setText(String.valueOf(appStatus.getDefault_observe1()).length()==1?"0"+appStatus.getDefault_observe1():String.valueOf(appStatus.getDefault_observe1()));
                 }
             }
@@ -188,43 +339,65 @@
 
         return view;
     }
-    private void initView(View view) {
+    private List<Integer> sns =new ArrayList<>();
+    private void sendJKMessage0203(List<FailedProj_select> failedProj_selects) {
+        JKMessage0203 jkMessage0203 = new JKMessage0203();
+        jkMessage0203.phone =  ExamPlatformData.getInstance().getPhone();
+        jkMessage0203.ID = ExamPlatformData.getInstance().getID();
+        jkMessage0203.exam_id = ExamPlatformData.getInstance().getExam_id();
 
-        av_curve = view.findViewById(R.id.av3);
-        av_park = view.findViewById(R.id.av2);
-        av_podao = view.findViewById(R.id.av1);
-        av_zhijiao = view.findViewById(R.id.av4);
-        houseView = view.findViewById(R.id.hv);
+        for (int i = 0; i < failedProj_selects.size(); i++) {
+            if (hasSnEqulas(failedProj_selects.get(i).getSn())){
+                MyLog.i("sn鐩稿悓"+failedProj_selects.get(i).getSn());
+            }else{
+                ExamPlatformData.getInstance().getTTS().speak(failedProj_selects.get(i).getDeducting_reason()+(
+                        failedProj_selects.get(i).getScore_deducting()==100?"涓嶅悎鏍�":"鎵�"+
+                                failedProj_selects.get(i).getScore_deducting()+"鍒�"));
+                MyLog.i("娌℃湁鐩稿悓鐨剆n锛屽彂閫�"+failedProj_selects.get(i).getSn());
+                sns.add(failedProj_selects.get(i).getSn());
+                String utc =   failedProj_selects.get(i).getUtc();
+                if (!TextUtils.isEmpty(utc)&&utc.length()>12){
+                    utc =utc.substring(0,12);
+                }
+                jkMessage0203.timeBCD = utc ;
 
-        tv_speed = view.findViewById(R.id.tv_speed);
-        iv_rtk_status = view.findViewById(R.id.iv_rtk_connect);
-        iv_head = view.findViewById(R.id.iv_head);
-        tv_sat_num = view.findViewById(R.id.tv_sat_num);
+                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();
+            }
 
-        tv_total_score = view.findViewById(R.id.tv_total_score);
-        tv_speed.setText(getResources().getString(R.string.speed,speed));
-        view.findViewById(R.id.btn_return).setOnClickListener(this);
-        mListView = view.findViewById(R.id.lv);
-        tv_stop = view.findViewById(R.id.tv_stop);
-        tv_stop.setOnClickListener(this);
-        mListView.setFocusable(false);//listview涓嶈幏鍙栫劍鐐癸紝涓嶇劧鐨勮瘽scrollview浼氶《鍒板簳閮�
-        view.findViewById(R.id.view_map).setOnClickListener(this);
-        btn_train = view.findViewById(R.id.btn_start);
-        btn_train.setOnClickListener(this);
-        btn_train.setText("寮�濮嬭缁�");
-        mScoreAdapter = new ScoreAdapter(_mActivity);
-        mListView.setAdapter(mScoreAdapter);
-
-        mListView.addHeaderView(LayoutInflater.from(_mActivity).inflate(R.layout.layout_score_item,null));
+        }
 
 
+
+
+
+
+
+        MessageProcessor.getInstance().sendMessage(jkMessage0203);
+    }
+
+    private boolean hasSnEqulas(int failedProjSn){
+        if (sns.size() > 0){
+            for (int j = 0; j < sns.size(); j++) {
+                MyLog.i("宸插瓨鍦ㄧ殑sn"+sns.get(j));
+                if (sns.get(j) == failedProjSn){
+                    MyLog.i("sn鐩稿悓锛屼笉鍙�"+sns.get(j));
+                    return true;
+                }else{
+                    continue;
+                }
+            }
+
+        }
+        return false;
 
     }
 
     private int whatPaintColor(ExamStatus examStat) {
         int map_id = examStat.getMap_id();
         int status = examStat.getEnter();
-        Log.i(TAG, "whatPaintColor: map_id="+map_id+" status="+status);
+        MyLog.i(TAG, "whatPaintColor: map_id="+map_id+" status="+status);
         switch (status) {
             case 0://鑰冭瘯瀹屾垚
                 switch (map_id) {
@@ -261,57 +434,173 @@
 
                 }
             case 1://杩涘叆鑰冨満椤圭洰
+                MyLog.i("pink 杩涘叆鏌愪釜鑰冨満椤圭洰");
                 return getResources().getColor(R.color.pink);
             case 2://寰呰��
                 return getResources().getColor(R.color.examing);
         }
         return getResources().getColor(R.color.examing);
     }
+
+    private void initView(View view) {
+
+        view.findViewById(R.id.iv_head).setOnClickListener(this);
+        av_curve = view.findViewById(R.id.av3);
+        av_park = view.findViewById(R.id.av2);
+        av_podao = view.findViewById(R.id.av1);
+        av_zhijiao = view.findViewById(R.id.av4);
+        houseView = view.findViewById(R.id.hv);
+        tv_name = view.findViewById(R.id.tv_name);
+        tv_id = view.findViewById(R.id.tv_ID);
+        tv_work_platform = view.findViewById(R.id.platform);
+
+        iv_rtk_status = view.findViewById(R.id.iv_rtk_connect);
+        iv_head = view.findViewById(R.id.iv_head);
+        tv_sat_num = view.findViewById(R.id.tv_sat_num);
+        tv_speed = view.findViewById(R.id.tv_speed);
+        tv_total_score = view.findViewById(R.id.tv_total_score);
+        tv_speed.setText(getResources().getString(R.string.speed,speed));
+
+        view.findViewById(R.id.btn_return).setOnClickListener(this);
+        mListView = view.findViewById(R.id.lv);
+        mListView.setFocusable(false);
+        mListView.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View v, MotionEvent ev) {
+                switch (ev.getAction()) {
+                    case MotionEvent.ACTION_DOWN:
+                    case MotionEvent.ACTION_MOVE:
+                        mListView.getParent().requestDisallowInterceptTouchEvent(true);
+                        break;
+                    case MotionEvent.ACTION_UP:
+                    case MotionEvent.ACTION_CANCEL:
+                        mListView.getParent().requestDisallowInterceptTouchEvent(false);
+                        break;
+                }
+                return false;
+            }
+        });
+
+        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.setOnClickListener(this);
+        tv_stop = view.findViewById(R.id.tv_stop);
+        tv_stop.setOnClickListener(this);
+        mListView.addHeaderView(LayoutInflater.from(_mActivity).inflate(R.layout.layout_score_item, null));
+
+    }
+
+
+    MyDialogFragment myDialogFragment;
+    SimulateNightBean simulateNightBean = null;
     @Override
     public void onClick(View v) {
-        switch (v.getId()){
-            case R.id.view_map:
-                TcpFragment passwordFragment = findFragment(TcpFragment.class);
-                if (passwordFragment == null) {
-                    passwordFragment = (TcpFragment) TcpFragment.newInstance();
-                    start(passwordFragment);
-                } else {
-                    start(passwordFragment);
-                }
-                break;
+        switch (v.getId()) {
             case R.id.btn_start:
-                examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM);
-                try {
-                    JSONObject jsonObject = new JSONObject();
-                    jsonObject.put("exam", 1);
-                    String examJson = jsonObject.toString();
-                    Log.i(TAG, "onClick: " + examJson);
-                    AYSdk.getInstance().sendCmd(Constant.EXAM_STATUS, examJson);
-                } catch (JSONException e) {
-                    e.printStackTrace();
+                OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class);
+                WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork);
+                item_id = 0;
+                currTotalScore = 100;
+                //TODO 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯
+                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){
+                    myDialogFragment = new MyDialogFragment();
                 }
+                myDialogFragment.show(getFragmentManager(),"dialog");
+                myDialogFragment.setCallback(new MyDialogFragment.Callback() {
+                    @Override
+                    public void changKao() {
+                        exam_type = 2;
+                        examStatusViewModel.updateStartExam(exam_type);
+                        sendExamJson(1,exam_type);
+                        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯");
+                        jkMessage0202.curr_exam = 0;
+
+                        MessageProcessor.getInstance().sendMessage(jkMessage0202);
+                    }
+
+                    @Override
+                    public void luKao() {
+                        exam_type = 3;
+                        examStatusViewModel.updateStartExam(exam_type);
+                        sendExamJson(1,exam_type);
+                        if (simulateNightBean == null){
+                            simulateNightBean = new SimulateNightBean();
+                        }
+                        simulateNightBean.setExam(0);
+
+                        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);
+
+                    }
+                });
+
+                iv_head.getDrawable().setLevel(1);
+                //娓呯┖sns
+                sns.clear();
+
+
+
                 break;
             case R.id.tv_stop:
                 Toast.makeText(_mActivity, "缁撴潫鑰冭瘯", Toast.LENGTH_SHORT).show();
                 stopExam();
+
+                break;
+            case R.id.view_map:
+                MapFragment mapFragment = findFragment(MapFragment.class);
+                MyLog.i(TAG,"鏌ョ湅鍦板浘");
+                if (mapFragment == null) {
+                    mapFragment = (MapFragment) MapFragment.newInstance();
+                }
+                start(mapFragment);
                 break;
             case R.id.btn_return:
                 _mActivity.onBackPressed();
                 break;
+            case R.id.iv_head:
+                MyLog.i(TAG,"绛惧埌锛岃幏鍙栬韩浠借瘉鐗╃悊鍗″彿");
+                AYSdk.getInstance().sendCmd(Constant.READ_PHYSICAL_ID,"");
+                //TODO 鑾峰緱鐗╃悊鍗″彿 鍙戦�丣KMessage0201缁欏钩鍙帮紝鑾峰彇濮撳悕銆佽韩浠借瘉銆乭ead_url
+
+                break;
         }
     }
 
-    private void stopExam() {
-        MyLog.i(TAG,"缁撴潫鑰冭瘯");
-        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);
+    private void sendExamJson(int i,int type) {
         try {
+
             JSONObject jsonObject = new JSONObject();
-            jsonObject.put("exam", 0);
+            jsonObject.put("exam", i);
+            jsonObject.put("type", type);
             String examJson = jsonObject.toString();
             Log.i(TAG, "onClick: " + examJson);
             AYSdk.getInstance().sendCmd(Constant.EXAM_STATUS, examJson);
@@ -320,11 +609,38 @@
         }
     }
 
+    private void stopExam() {
+        MyLog.i(TAG,"缁撴潫鑰冭瘯");
+
+
+        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
+        //TODO 鍙戦�丣KMessage0204缁欏钩鍙� 缁撴潫鑰冭瘯
+        JKMessage0204 jkMessage0204 = new JKMessage0204();
+        jkMessage0204.phone = ExamPlatformData.getInstance().getPhone();
+        jkMessage0204.timeBCD = new Date();
+        jkMessage0204.score = 10;
+        jkMessage0204.stop = JKMessage0204.SUCC_STOP;
+        jkMessage0204.ID = ExamPlatformData.getInstance().getID();
+        jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id();
+        MessageProcessor.getInstance().sendMessage(jkMessage0204);
+    }
+
     private ICEventListener icEventListener = new ICEventListener() {
         @Override
         public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
-            speed  = (double)obj;
-            mHandler.obtainMessage(SPEED_DATA).sendToTarget();
+            if (msgCode == Constant.IC_ID){
+                icson = (String)obj;
+                mHandler.obtainMessage(msgCode).sendToTarget();
+            }else{
+                speed  = (double)obj;
+                mHandler.obtainMessage(SPEED_DATA).sendToTarget();
+            }
+
         }
     };
     @Override
diff --git a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
index 79f7ee8..2daba11 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
@@ -8,6 +8,7 @@
 import com.anyun.exam.lib.util.ByteUtil;
 import com.safeluck.aykj.utils.BytesUtils;
 
+import java.util.Calendar;
 import java.util.Random;
 
 /**
@@ -158,4 +159,59 @@
 
         return false;
     }
+
+
+    public static String getHHmm(){
+        String mMonth,mDay,mWay,mHours,mMinute;
+        StringBuffer stringBuffer = new StringBuffer();
+        Calendar calendar = Calendar.getInstance();
+        mMonth = String.valueOf(calendar.get(Calendar.MONTH) + 1);        //鑾峰彇鏃ユ湡鐨勬湀
+        mDay = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));      //鑾峰彇鏃ユ湡鐨勫ぉ
+        mWay = String.valueOf(calendar.get(Calendar.DAY_OF_WEEK));      //鑾峰彇鏃ユ湡鐨勬槦鏈�
+
+        /**
+         * 濡傛灉灏忔椂鏄釜浣嶆暟
+         *
+         *鍒欏湪鍓嶉潰浠锋牸鈥�0鈥�
+         * */
+        if (calendar.get(Calendar.HOUR) < 10) {
+            mHours = "0" + calendar.get(Calendar.HOUR);
+
+        } else {
+            mHours = String.valueOf(calendar.get(Calendar.HOUR));
+        }
+        stringBuffer.append(mHours);
+        stringBuffer.append(":");
+        /**
+         * 濡傛灉鍒嗛挓鏄釜浣嶆暟
+         *
+         *鍒欏湪鍓嶉潰浠锋牸鈥�0鈥�
+         * */
+        if (calendar.get(Calendar.MINUTE) < 10) {
+            mMinute = "0" + calendar.get(Calendar.MINUTE);
+        } else {
+            mMinute = String.valueOf(calendar.get(Calendar.MINUTE));
+        }
+        stringBuffer.append(mMinute);
+        /**
+         * 鑾峰彇鏄熸湡
+         * 骞惰缃嚭鏉�
+         * */
+        if ("1".equals(mWay)) {
+            mWay = "澶�";
+        } else if ("2".equals(mWay)) {
+            mWay = "涓�";
+        } else if ("3".equals(mWay)) {
+            mWay = "浜�";
+        } else if ("4".equals(mWay)) {
+            mWay = "涓�";
+        } else if ("5".equals(mWay)) {
+            mWay = "鍥�";
+        } else if ("6".equals(mWay)) {
+            mWay = "浜�";
+        } else if ("7".equals(mWay)) {
+            mWay = "鍏�";
+        }
+        return stringBuffer.toString();
+    }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/worker/TimeWorker.kt b/app/src/main/java/safeluck/drive/evaluation/worker/TimeWorker.kt
new file mode 100644
index 0000000..768cc44
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/worker/TimeWorker.kt
@@ -0,0 +1,21 @@
+package safeluck.drive.evaluation.worker
+
+import android.content.Context
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.work.Data
+import androidx.work.Worker
+import androidx.work.WorkerParameters
+import com.anyun.exam.lib.MyLog
+import safeluck.drive.evaluation.Constant
+import safeluck.drive.evaluation.util.Utils
+
+class TimeWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
+    override fun doWork(): Result {
+        MyLog.i("鍛ㄦ湡鎬т换鍔�"+TimeWorker::class.java.simpleName)
+        var timeStr= Utils.getHHmm()
+        val data = Data.Builder().putString(Constant.TIME_MINUTE,timeStr).build()
+        return Result.success(data)
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.8.0