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