From 5fdd4458a3c9f99a3c951683d503f73a47ff976d Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期五, 13 三月 2020 15:43:07 +0800
Subject: [PATCH] 解决RTK配置,传感器配置收到NDK_Start的时候发两次的问题;在ExamStatusOutWork里面发送rtf配置 传感器配置、考试状态;RTK配置增加数据库访问;电话使用sn,sn更新发送给服务在RTKConfigUpdateWorker;基本设置里删除电话显示;修改鉴权消息,使用服务器注册给的密码,用des加密时间,发鉴权消息给服务;Utils增加des加密和解密算法

---
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java |  181 ++++++++++++++++++++++++---------------------
 1 files changed, 96 insertions(+), 85 deletions(-)

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 e0031b7..341aada 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -12,6 +12,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 android.os.Handler;
@@ -41,6 +43,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;
@@ -69,6 +72,9 @@
 import safeluck.drive.evaluation.platformMessage.JKMessage0203;
 import safeluck.drive.evaluation.platformMessage.JKMessage0204;
 import safeluck.drive.evaluation.util.Utils;
+import safeluck.drive.evaluation.worker.TimeWorker;
+
+import static androidx.work.PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS;
 
 /**鍗曟満璁粌UI
  * MyApplication2
@@ -100,7 +106,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;
 
@@ -111,8 +117,6 @@
     String icson;//杩斿洖鐨刬c鍗′俊鎭� json
     private Random random = new Random();
     private List<SimulateNightBean.QuestionBean> tempQs=  new ArrayList<>();
-
-
 
 
     private Handler mHandler = new Handler(new Handler.Callback() {
@@ -128,7 +132,7 @@
                 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));
+                tv_speed.setText(_mActivity.getApplicationContext().getResources().getString(R.string.speed,speed));
             }
             if (msg.what == Constant.IC_ID){
                 try {
@@ -187,7 +191,13 @@
 
                                     return getResources().getColor(R.color.colorAccent);
                                 }else{
-                                    ExamPlatformData.getInstance().getTTS().speak("鍊掕溅鍏ュ簱鍚堟牸");
+                                    if (examStatus.getResult() ==1){
+                                        MyLog.i("宸茬粡鎾斁杩囧�掕溅鍏ュ簱鍚堟牸");
+                                    }else{
+                                        ExamPlatformData.getInstance().getTTS().speak("鍊掕溅鍏ュ簱鍚堟牸");
+                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
+                                    }
+
                                     return getResources().getColor(R.color.train_btn_return);
                                 }
                             case 2:
@@ -195,7 +205,13 @@
                                     MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type);
                                     return getResources().getColor(R.color.colorAccent);
                                 }else{
-                                    ExamPlatformData.getInstance().getTTS().speak("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝ュ悎鏍�");
+                                    if (examStatus.getResult() ==1){
+                                        MyLog.i("宸茬粡鎾斁杩囧潯閬撳畾鐐瑰仠杞﹀拰璧锋鍚堟牸鍚堟牸");
+                                    }else{
+                                        ExamPlatformData.getInstance().getTTS().speak("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝ュ悎鏍�");
+                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
+                                    }
+
                                     return getResources().getColor(R.color.train_btn_return);
                                 }
                             case 3:
@@ -203,7 +219,13 @@
                                     MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type);
                                     return getResources().getColor(R.color.colorAccent);
                                 }else{
-                                    ExamPlatformData.getInstance().getTTS().speak("渚ф柟鍋滆溅鍚堟牸");
+                                    if (examStatus.getResult() ==1){
+                                        MyLog.i("宸茬粡鎾斁杩囦晶鏂瑰仠杞﹀悎鏍�");
+                                    }else{
+
+                                        ExamPlatformData.getInstance().getTTS().speak("渚ф柟鍋滆溅鍚堟牸");
+                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
+                                    }
                                     return getResources().getColor(R.color.train_btn_return);
                                 }
                             case 4:
@@ -211,7 +233,13 @@
                                     MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type);
                                     return getResources().getColor(R.color.colorAccent);
                                 }else{
-                                    ExamPlatformData.getInstance().getTTS().speak("鏇茬嚎琛岄┒鍚堟牸");
+                                    if (examStatus.getResult() ==1){
+                                        MyLog.i("宸茬粡鎾斁杩囨洸绾胯椹跺悎鏍�");
+                                    }else{
+
+                                        ExamPlatformData.getInstance().getTTS().speak("鏇茬嚎琛岄┒鍚堟牸");
+                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
+                                    }
                                     return getResources().getColor(R.color.train_btn_return);
                                 }
                             case 5:
@@ -219,8 +247,13 @@
                                     MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type);
                                     return getResources().getColor(R.color.colorAccent);
                                 }else{
-                                    MyLog.i("璇ラ」鑰冭瘯鎴愬姛锛宼ype="+type);
-                                    ExamPlatformData.getInstance().getTTS().speak("鐩磋杞集鍚堟牸");
+                                    if (examStatus.getResult() ==1){
+                                        MyLog.i("宸茬粡鎾斁杩囩洿瑙掕浆寮悎鏍�");
+                                    }else{
+                                        ExamPlatformData.getInstance().getTTS().speak("鐩磋杞集鍚堟牸");
+                                        examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id());
+                                    }
+
                                     return getResources().getColor(R.color.train_btn_return);
                                 }
 
@@ -270,8 +303,8 @@
                     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();
@@ -346,7 +379,7 @@
 
         return view;
     }
-    private List<Integer> sns =new ArrayList<>();
+
     private void sendJKMessage0203(List<FailedProj_select> failedProj_selects) {
         JKMessage0203 jkMessage0203 = new JKMessage0203();
         jkMessage0203.phone =  ExamPlatformData.getInstance().getPhone();
@@ -361,7 +394,7 @@
                         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());
+                ExamPlatformData.getInstance().addSn(failedProj_selects.get(i).getSn());
                 String utc =   failedProj_selects.get(i).getUtc();
                 if (!TextUtils.isEmpty(utc)&&utc.length()>12){
                     utc =utc.substring(0,12);
@@ -385,11 +418,11 @@
     }
 
     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));
+        if (ExamPlatformData.getInstance().getSns().size() > 0){
+            for (int j = 0; j < ExamPlatformData.getInstance().getSns().size(); j++) {
+                MyLog.i("宸插瓨鍦ㄧ殑sn"+ExamPlatformData.getInstance().getSns().get(j));
+                if (ExamPlatformData.getInstance().getSns().get(j) == failedProjSn){
+                    MyLog.i("sn鐩稿悓锛屼笉鍙�"+ExamPlatformData.getInstance().getSns().get(j));
                     return true;
                 }else{
                     continue;
@@ -401,63 +434,9 @@
 
     }
 
-    private int whatPaintColor(ExamStatus examStat) {
-        int map_id = examStat.getMap_id();
-        int status = examStat.getEnter();
-        MyLog.i(TAG, "whatPaintColor: map_id="+map_id+" status="+status);
-        switch (status) {
-            case 0://鑰冭瘯瀹屾垚
-                switch (map_id) {
-                    case 1://鍊掑簱
-                        if (item_conents.contains("鍊掕溅鍏ュ簱")) {
-                            return getResources().getColor(R.color.colorAccent);
-                        }else{
-                            return getResources().getColor(R.color.train_btn_return);
-                        }
-                    case 2:
-                        if (item_conents.contains("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝�")) {
-                            return getResources().getColor(R.color.colorAccent);
-                        }else{
-                            return getResources().getColor(R.color.train_btn_return);
-                        }
-                    case 3:
-                        if (item_conents.contains("渚ф柟鍋滆溅")) {
-                            return getResources().getColor(R.color.colorAccent);
-                        }else{
-                            return getResources().getColor(R.color.train_btn_return);
-                        }
-                    case 4:
-                        if (item_conents.contains("鏇茬嚎琛岄┒")) {
-                            return getResources().getColor(R.color.colorAccent);
-                        }else{
-                            return getResources().getColor(R.color.train_btn_return);
-                        }
-                    case 5:
-                        if (item_conents.contains("鐩磋杞集")) {
-                            return getResources().getColor(R.color.colorAccent);
-                        }else{
-                            return getResources().getColor(R.color.train_btn_return);
-                        }
 
-                }
-            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) {
-
-        Intent intent = new Intent(ALARM_ACTION_CODE);
-        PendingIntent pendingIntent = PendingIntent.getBroadcast(_mActivity.getApplicationContext(),
-                REQUEST_CODE, intent,
-                PendingIntent.FLAG_CANCEL_CURRENT);
-        AlarmManager alarmManager = (AlarmManager) _mActivity.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
-        alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(),pendingIntent);
-
 
         view.findViewById(R.id.iv_head).setOnClickListener(this);
         av_curve = view.findViewById(R.id.av3);
@@ -474,6 +453,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,MIN_PERIODIC_INTERVAL_MILLIS, TimeUnit.MICROSECONDS).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);
@@ -500,8 +498,10 @@
         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);
         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));
 
@@ -514,10 +514,7 @@
     public void onClick(View v) {
         switch (v.getId()) {
             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();
@@ -525,7 +522,6 @@
                 jkMessage0202.ID = ExamPlatformData.getInstance().getID();
 
                 jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id();
-                failedProjViewModel.deleteAll();
 
                 if (myDialogFragment == null){
                     myDialogFragment = new MyDialogFragment();
@@ -535,10 +531,13 @@
                     @Override
                     public void changKao() {
                         exam_type = 2;
+                        iv_head.getDrawable().setLevel(1);
                         examStatusViewModel.updateStartExam(exam_type);
                         sendExamJson(1,exam_type);
-                        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯");
+                        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭缁�");
                         jkMessage0202.curr_exam = 0;
+
+                        ExamPlatformData.getInstance().setTrainingMode(true);//璁剧疆涓鸿缁冩ā寮�
 
                         MessageProcessor.getInstance().sendMessage(jkMessage0202);
                     }
@@ -551,8 +550,10 @@
                         if (simulateNightBean == null){
                             simulateNightBean = new SimulateNightBean();
                         }
+                        iv_head.getDrawable().setLevel(1);
                         simulateNightBean.setExam(0);
-
+                        ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭缁�");
+                        ExamPlatformData.getInstance().setTrainingMode(true);//璁剧疆涓鸿缁冩ā寮�
                         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));
@@ -561,7 +562,7 @@
                         MessageProcessor.getInstance().sendMessage(jkMessage0202);
 
                         tempQs.add(list.get(0));
-                        int [] a = Utils.getRandomInts(4,12);
+                        int [] a =Utils.getRandomInts(4,12);
                         for (int i = 0; i < a.length; i++) {
                             tempQs.add(list.get(a[i]));
                         }
@@ -578,9 +579,8 @@
                     }
                 });
 
-                iv_head.getDrawable().setLevel(1);
-                //娓呯┖sns
-                sns.clear();
+
+
 
 
 
@@ -627,11 +627,22 @@
     private void stopExam() {
         MyLog.i(TAG,"缁撴潫鑰冭瘯");
 
+        //娓呯┖sns
+        ExamPlatformData.getInstance().clearSns();
+        //璁剧疆璁粌妯″紡涓篺alse
+        ExamPlatformData.getInstance().setTrainingMode(false);
+
+        //鎭㈠鍒濆鏁版嵁
+        OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class);
+        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("缁撴潫鑰冭瘯");
+        ExamPlatformData.getInstance().getTTS().speak("缁撴潫璁粌");
         examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM);
         sendExamJson(0,0);//缁撴潫鑰冭瘯 exstart=0
         //TODO 鍙戦�丣KMessage0204缁欏钩鍙� 缁撴潫鑰冭瘯

--
Gitblit v1.8.0