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