From 753ef56294899a5495ec565de0a1337cb81f4849 Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期一, 27 七月 2020 08:36:21 +0800 Subject: [PATCH] 发送灯光等不在worker里面,容易出问题 --- app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt | 201 ++++++++++++++++++++++++++++++++++++++++ app/src/main/java/safeluck/drive/evaluation/app.java | 11 + app/src/main/java/safeluck/drive/evaluation/MainActivity.java | 6 app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java | 6 app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java | 4 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | 7 app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java | 4 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java | 6 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java | 1 9 files changed, 228 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java index fb107b4..0bc7afd 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java @@ -28,7 +28,7 @@ public AppStatusWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { super(context, workerParams); - MyLog.i("鍒濆鍖朅ppStatusWorker"); + MyLog.i(TAG,"鍒濆鍖朅ppStatusWorker"); appStatusDao = WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getAppStatusDao(); } @@ -37,7 +37,7 @@ public Result doWork() { String[] str = getInputData().getStringArray(Constant.APP_STATUS); JSONObject jsonObject = null; - MyLog.i("AppStatusWorker:"+str[0]+": "+str[1]); + MyLog.i(TAG,"AppStatusWorker:"+str[0]+": "+str[1]); try { jsonObject = new JSONObject(str[1]); switch (str[0]) { diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java index 2199a40..8838945 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusWorkRepo.java @@ -40,7 +40,6 @@ WorkRoomDataBase.dataBaseWriteExecutor.execute(new Runnable() { @Override public void run() { - examStatusDao.updateStartExam(startex); } }); diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java index 9cf5b06..1964cd7 100644 --- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java +++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java @@ -125,7 +125,8 @@ hideBottomUIMenu(); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main); - + //鍒濆鍖杢ts + ExamPlatformData.getInstance().initTTS(getApplicationContext()); viewtitle = findViewById(R.id.top_title); btn_return = findViewById(R.id.btn_return); @@ -141,8 +142,7 @@ tv_network_time.setText(Utils.getHHmm()); - //鍒濆鍖杢ts - ExamPlatformData.getInstance().initTTS(getApplicationContext()); + diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java index f21a3d9..2401054 100644 --- a/app/src/main/java/safeluck/drive/evaluation/app.java +++ b/app/src/main/java/safeluck/drive/evaluation/app.java @@ -52,6 +52,7 @@ import safeluck.drive.evaluation.platformMessage.JKMessage0206; import safeluck.drive.evaluation.platformMessage.PlatFormConstant; import safeluck.drive.evaluation.util.CThreadPoolExecutor; +import safeluck.drive.evaluation.util.DataInitKt; import safeluck.drive.evaluation.util.FileUtil; import safeluck.drive.evaluation.util.SystemUtil; import safeluck.drive.evaluation.util.Utils; @@ -108,11 +109,15 @@ MyLog.i("寮�濮嬪垵濮嬪寲鏁版嵁鍙戦�佸湴鍥�/杞﹁締/mcu鍗囩骇鏂囦欢/鑰冭瘯鐘舵��"); int type = WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getExamStatusDao().getStartExamInt(); ExamPlatformData.getInstance().setExamType(type); - OneTimeWorkRequest examStatausOutWorker = OneTimeWorkRequest.from(ExamStatusOutWorker.class); +// OneTimeWorkRequest examStatausOutWorker = OneTimeWorkRequest.from(ExamStatusOutWorker.class); sendMapInfo(); sendVechileInfo(); - OneTimeWorkRequest mcuUpgradeWorker = OneTimeWorkRequest.from(MCUUpgradeWorker.class); - WorkManager.getInstance(getApplicationContext()).beginWith(examStatausOutWorker).then(mcuUpgradeWorker).enqueue(); + DataInitKt.MCUUpgrade(getApplicationContext()); + DataInitKt.sendExamLights(getApplicationContext()); + DataInitKt.sendRtkConfig(getApplicationContext()); + DataInitKt.sendSignalConfigToRemote(getApplicationContext()); +// OneTimeWorkRequest mcuUpgradeWorker = OneTimeWorkRequest.from(MCUUpgradeWorker.class); +// WorkManager.getInstance(getApplicationContext()).beginWith(examStatausOutWorker).then(mcuUpgradeWorker).enqueue(); }); } 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 0c64c66..bd92cb9 100644 --- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java +++ b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java @@ -286,9 +286,11 @@ return enter_exit_item_tts.get(item); } - public Speaker getTTS(){ + public synchronized Speaker getTTS(){ if (speaker == null){ - throw new RuntimeException("璇峰厛鍒濆鍖朤TS,鍏堣皟鐢╥nitTTS"); + MyLog.i("璇峰厛鍒濆鍖朤TS,鍏堣皟鐢╥nitTTS"); + initTTS(app.getAppContext()); + return speaker; }else return speaker; } 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 7477d75..ef32b5e 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java @@ -460,12 +460,13 @@ examStatusList.clear(); examStatusList.addAll(examStatus); mHandler.obtainMessage(ADD_DATA).sendToTarget(); - if (examStatus.get(0).getStartExam() != Constant.NONE_BEEN_START_EXAM){ + exam_type = examStatus.get(0).getStartExam(); + if (exam_type != Constant.NONE_BEEN_START_EXAM){ btn_start_exam.setText("缁撴潫鑰冭瘯"); }else{ btn_start_exam.setText("寮�濮嬭�冭瘯"); } - exam_type = examStatus.get(0).getStartExam(); + } @@ -685,6 +686,7 @@ ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯"); Date date = new Date(); + MyLog.i("淇敼exam_status琛ㄧ殑startExam瀛楁涓�"+exam_type); wokViewModel.updateBeginTime(date.getTime()); jkMessage0202.timeBCD = date; ExamPlatformData.getInstance().setExam_id(Utils.parseUnsignedInt(String.valueOf(date.getTime()/1000),10)); diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java b/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java index 7777c40..75bf62a 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/RoadDriveMapFragmentaa.java @@ -59,7 +59,7 @@ public class RoadDriveMapFragmentaa extends SupportFragment implements View.OnClickListener { private static final int ALL_MAP = 100; - private int pixels = 80; + private int pixels = 3; private boolean isDrawing = false; private StringBuffer buffer = null;//瀛樻斁鍦板浘鐨刡uffer @@ -865,7 +865,7 @@ scale_x = Math.round(Math.abs(50 / Math.sqrt(Math.pow(car[0][0], 2) + Math.pow(car[0][1], 2)) )); - scale_x = 3; + scale_x = pixels; scale_y = scale_x; 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 8ac2f3d..a4f3b2c 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java @@ -449,16 +449,17 @@ Log.i(TAG, "ExamStatus onChanged: "); if (examStatus!=null && examStatus.size()>0){ showChangKaoOrLukao(examStatus.get(0).getStartExam()); - MyLog.i(TAG,"鑰冭瘯鐘舵�佹洿鏂�"+examStatus.get(0).getStartExam()); + MyLog.i("鑰冭瘯鐘舵�佹洿鏂�"+examStatus.get(0).getStartExam()); examStatusList.clear(); examStatusList.addAll(examStatus); mHandler.obtainMessage(ADD_DATA).sendToTarget(); - if (examStatus.get(0).getStartExam() != Constant.NONE_BEEN_START_EXAM){ + exam_type = examStatus.get(0).getStartExam(); + if (exam_type != Constant.NONE_BEEN_START_EXAM){ btn_start_exam.setText("缁撴潫璁粌"); }else{ btn_start_exam.setText("寮�濮嬭缁�"); } - exam_type = examStatus.get(0).getStartExam(); + } diff --git a/app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt b/app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt new file mode 100644 index 0000000..2b1f5ea --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/util/DataInit.kt @@ -0,0 +1,201 @@ +package safeluck.drive.evaluation.util + +import android.content.Context +import androidx.work.Data +import androidx.work.ListenableWorker +import com.anyun.exam.lib.AYSdk +import com.anyun.exam.lib.MyLog +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.google.gson.stream.JsonReader +import org.json.JSONException +import org.json.JSONObject +import safeluck.drive.evaluation.Constant +import safeluck.drive.evaluation.DB.WorkRoomDataBase +import safeluck.drive.evaluation.DB.rtktb.RTKConfig +import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig +import safeluck.drive.evaluation.bean.ExamPlatformData +import safeluck.drive.evaluation.bean.SignalConfigRemote +import safeluck.drive.evaluation.bean.SimulateNightBean +import safeluck.drive.evaluation.worker.MCUUpgradeWorker +import java.io.IOException +import java.io.InputStreamReader +import java.nio.charset.Charset + +/** + * + * @ProjectName: DriveJudge + * @Package: safeluck.drive.evaluation.util + * @ClassName: DataInit + * @Description: java绫讳綔鐢ㄦ弿杩� + * @Author: 鏉庡崰浼� + * @CreateDate: 20/7/26 涓嬪崍4:44 + * @UpdateUser: 鏇存柊鑰� + * @UpdateDate: 20/7/26 涓嬪崍4:44 + * @UpdateRemark: 鏇存柊璇存槑 + * @Version: 1.0 + */ + +fun MCUUpgrade(applicationContext:Context) { + MyLog.i("鍗囩骇鍗曠墖鏈�") + try { + val datas = FileUtil.readLocalFile(applicationContext, "dfu.bin") + if (datas != null) { + val strs = String(datas, Charset.forName("ISO-8859-1")) + AYSdk.getInstance().sendCmd(Constant.UPGRADE_MCU_CONTENT_FILE, strs) + + FileUtil.deleteFile("", Constant.MCU_FILE_NAME); + } else { + + MyLog.i( "mcu鍗囩骇鏂囦欢涓嶅瓨鍦�") + var data = Data.Builder().putString(Constant.MCU_UPGRADE_FAIL_RESASON,"mcu鍗囩骇鏂囦欢涓嶅瓨鍦�").build() + + } + } catch (e: IOException) { + e.printStackTrace() + } +} + +private val gson = Gson() +private val tempQs: MutableList<SimulateNightBean.QuestionBean> = java.util.ArrayList() +var simulateNightBean:SimulateNightBean=SimulateNightBean() +fun sendExamLights(applicationContext: Context){ + MyLog.i("鍙戦�佺伅鍏�") + + val examType = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).examStatusDao.startExamInt; + simulateNightBean.setExam(0) + + val list = ExamPlatformData.getInstance().simulate_light_tips + + tempQs.add(list[list.size-2])//鎻愮ず涓嬮潰灏嗚繘琛岀伅鍏夎�冭瘯 + tempQs.add(list[0]) + val a = Utils.getRandomInts(4, 12) + for (i in a.indices) { + tempQs.add(list[a[i]]) + } + tempQs.add(list[list.size-1])//鎻愮ず鐏厜鑰冭瘯缁撴潫 + simulateNightBean.setQuestion(tempQs) + + MyLog.i("寮�濮嬪彂閫佺伅鍏�,鑰冭瘯椤瑰叡鏈�"+simulateNightBean.question.size) + AYSdk.getInstance().sendCmd(0x8012, gson.toJson(simulateNightBean)) + + //鍙戦�佽�冭瘯鐘舵�� + MyLog.i("鏌ュ埌鐨勮�冭瘯type=$examType") + try { + val jsonObject = JSONObject() + if (examType == safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) { + jsonObject.put("exam", 0) + }else{ + jsonObject.put("exam", 1) + } + + jsonObject.put("type", examType) + val examJson = jsonObject.toString() + AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.EXAM_STATUS, examJson) + } catch (e: JSONException) { + e.printStackTrace() + } + +} + + + +fun sendRtkConfig(applicationContext: Context){ + var rtk = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao._getRtkConfig() + if (rtk == null){ + try { + MyLog.i("璇绘枃浠跺彂閫丷TK閰嶇疆") + val inputStream = applicationContext.assets.open(safeluck.drive.evaluation.Constant.RTK_CONFIG_JSON) + val inputStreamReader = InputStreamReader(inputStream) + val jsonReader = JsonReader(inputStreamReader) + val gson = Gson() + val type = object : TypeToken<RTKConfig?>() {}.type + val mstus = gson.fromJson<RTKConfig>(jsonReader, type) + rtk = mstus + } catch (e: IOException) { + e.printStackTrace() + } + }else{ + + } + sendRtkConfigInfo(rtk) +} + +private var signalConfiglist: MutableList<SignalConfigRemote> = ArrayList() +private fun sendRtkConfigInfo(mRTKConfig: RTKConfig) { + if (mRTKConfig != null) { + var rtkjson = gson.toJson(mRTKConfig) + //鍘婚櫎id瀛楁 + var jsonObject: JSONObject? = null + try { + jsonObject = JSONObject(rtkjson) + } catch (e: JSONException) { + e.printStackTrace() + } + jsonObject!!.remove("_id") + rtkjson = null + rtkjson = jsonObject.toString() + MyLog.i("NDK_start RTK閰嶇疆淇℃伅") + AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_RTK_PLATFORM_INFO, rtkjson) + } else { + MyLog.i("RTKConfig鏈彇鍒版暟鎹�") + } +} + +private var singalConfigs :List<SingalConfig> = ArrayList() + +fun sendSignalConfigToRemote(applicationContext: Context){ + + singalConfigs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao._getSignalConfigs() + if (singalConfigs ==null){ + MyLog.i("璇绘枃浠跺彂閫佷俊鍙烽厤缃�") + try { + val inputStream = applicationContext.assets.open("signal_config_file.json") + val inputStreamReader = InputStreamReader(inputStream) + val jsonReader = JsonReader(inputStreamReader) + val gson = Gson() + val type = object : TypeToken<List<SingalConfig?>?>() {}.type + val mstus = gson.fromJson<List<SingalConfig>>(jsonReader, type) + singalConfigs = mstus + } catch (e: IOException) { + e.printStackTrace() + } + }else{ + + } + for (i in singalConfigs.indices) { + val signalConfigRemote = SignalConfigRemote() + signalConfigRemote.func_id = singalConfigs.get(i).func_id + signalConfigRemote.gpio_num = singalConfigs.get(i).getIndex()-1 + signalConfigRemote.level = singalConfigs.get(i).getHighLevel() + signalConfiglist.add(signalConfigRemote) + } + + + var indexs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao.allIndexs + sendSignalConfigsToRemote_(indexs) +} + +private fun sendSignalConfigsToRemote_(indexs: List<Int>) { + if (signalConfiglist.size > 0) { + if (listContainsSameValue(indexs)) { + MyLog.i("sendSignalConfigsToRemote: 鏈夌浉鍚岀殑index锛屼笉鑳藉彂閫�" + gson.toJson(signalConfiglist)) + } else { + AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.SEND_CONFIG_SIGNAL, gson.toJson(signalConfiglist)) + } + } +} + +private fun listContainsSameValue(indexs: List<Int>): Boolean { + for (i in indexs.indices) { //鍙互榛樿鏄�0 0涓嶅垽鏂槸鍚︽湁鐩稿悓鐨刬ndex + if (indexs[i] == 0) { + continue + } + for (j in i + 1 until indexs.size) { + if (indexs[i] === indexs[j]) { + return true + } + } + } + return false +} -- Gitblit v1.8.0