From 60256c53ae45de03d522befe3958913f6bbf3095 Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期一, 16 三月 2020 15:54:05 +0800 Subject: [PATCH] 解决初次安装(卸载后安装)不发送rtk配置的bug --- app/src/main/java/safeluck/drive/evaluation/app.java | 5 - app/src/main/java/safeluck/drive/evaluation/MainActivity.java | 23 ------- app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java | 2 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt | 68 ++++++++++++++++++---- app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java | 34 +++++++++++ 5 files changed, 91 insertions(+), 41 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 aaa42eb..1f172d2 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 @@ -29,7 +29,7 @@ public AppStatusWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { super(context, workerParams); - MyLog.d(TAG,"鍒濆鍖朅ppStatusDao"); + MyLog.d(TAG,"鍒濆鍖朅ppStatusWorker"); appStatusDao = WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getAppStatusDao(); } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt index fca1875..e2ea10d 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt @@ -8,6 +8,8 @@ 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.DB.Constant @@ -15,6 +17,8 @@ import safeluck.drive.evaluation.DB.rtktb.RTKConfig import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig import safeluck.drive.evaluation.bean.SignalConfigRemote +import java.io.IOException +import java.io.InputStreamReader class ExamStatusOutWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) { val TAG:String = "ExamStatusOutWorker" @@ -23,18 +27,9 @@ private var singalConfigs :List<SingalConfig> = ArrayList() override fun doWork(): Result { val examType =WorkRoomDataBase.getWorkRoomDataBase(applicationContext).examStatusDao.startExamInt; - singalConfigs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao._getSignalConfigs() - sendRtkConfigInfo(WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao._getRtkConfig()) - for (i in singalConfigs.indices) { - val signalConfigRemote = SignalConfigRemote() - signalConfigRemote.func_id = i - signalConfigRemote.gpio_num = singalConfigs.get(i).getIndex() - signalConfigRemote.level = singalConfigs.get(i).getHighLevel() - signalConfiglist.add(signalConfigRemote) - } - var indexs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao.allIndexs - sendSignalConfigsToRemote(indexs) + + MyLog.i(TAG,"鏌ュ埌鐨勮�冭瘯type="+examType) val data = Data.Builder().putInt(Constant.EXAM_STATUS_TYPE,examType).build() if (examType != safeluck.drive.evaluation.Constant.NONE_BEEN_START_EXAM) { @@ -48,6 +43,55 @@ e.printStackTrace() } } + 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) + 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 = i + signalConfigRemote.gpio_num = singalConfigs.get(i).getIndex() + signalConfigRemote.level = singalConfigs.get(i).getHighLevel() + signalConfiglist.add(signalConfigRemote) + } + + + var indexs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao.allIndexs + + sendSignalConfigsToRemote(indexs) + + return Result.success(data) } @@ -89,7 +133,7 @@ jsonObject!!.remove("_id") rtkjson = null rtkjson = jsonObject.toString() - MyLog.i(TAG, "RTK閰嶇疆淇℃伅锛�$rtkjson") + MyLog.i(TAG, "NDK_start RTK閰嶇疆淇℃伅") AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_RTK_PLATFORM_INFO, rtkjson) } else { MyLog.d(TAG, "RTKConfig鏈彇鍒版暟鎹�") diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java index 63b07e4..7d0b280 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/signalConfigdb/SignalConfigInitWorker.java @@ -1,11 +1,13 @@ package safeluck.drive.evaluation.DB.signalConfigdb; import android.content.Context; +import android.util.Log; import androidx.annotation.NonNull; import androidx.work.Worker; import androidx.work.WorkerParameters; +import com.anyun.exam.lib.AYSdk; import com.anyun.exam.lib.MyLog; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -15,20 +17,25 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.List; import safeluck.drive.evaluation.DB.WorkRoomDataBase; +import safeluck.drive.evaluation.bean.SignalConfigRemote; public class SignalConfigInitWorker extends Worker { private static final String TAG = "SignalConfigInitWorker"; + private List<SignalConfigRemote> signalConfiglist = new ArrayList<>(); + private Gson gson; public SignalConfigInitWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) { super(context, workerParams); + gson = new Gson(); } @NonNull @Override public Result doWork() { - MyLog.i(TAG,"淇″彿閰嶇疆琛ㄥ垵濮嬪寲"); + MyLog.i("淇″彿閰嶇疆琛ㄥ垵濮嬪寲"); try { InputStream inputStream = getApplicationContext().getAssets().open("signal_config_file.json"); @@ -46,4 +53,29 @@ } return Result.success(); } + + private void sendSignalConfigsToRemote(List<Integer> indexs) { + if (signalConfiglist.size() > 0) { + if (listContainsSameValue(indexs)) { + Log.i(TAG, "sendSignalConfigsToRemote: 鏈夌浉鍚岀殑index锛屼笉鑳藉彂閫�" + gson.toJson(signalConfiglist)); + } else { + AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.SEND_CONFIG_SIGNAL, gson.toJson(signalConfiglist)); + } + } + } + + private boolean listContainsSameValue(List<Integer> indexs) { + for (int i=0;i<indexs.size();i++) { //鍙互榛樿鏄�0 0涓嶅垽鏂槸鍚︽湁鐩稿悓鐨刬ndex + if (indexs.get(i) == 0) { + continue; + } + for (int j =i + 1 ;j<indexs.size();j++) { + if (indexs.get(i) == indexs.get(j)) { + return true; + } + } + } + return false; + } + } diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java index 3526318..3d3028e 100644 --- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java +++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java @@ -105,29 +105,6 @@ }; private List<SignalConfigRemote> signalConfiglist = new ArrayList<>(); - private void sendMcuUprgrade() { - CThreadPoolExecutor.runInBackground(new Runnable() { - @Override - public void run() { - try { - byte[] datas = FileUtil.readLocalFile(MainActivity.this,Constant.MCU_FILE_NAME); - if (datas != null){ - Log.i(TAG, ByteUtil.byte2hex(datas)); - - String strs = new String(datas, Charset.forName("ISO-8859-1")); - MyLog.i(TAG, "mcu upgrade datas.legnth=="+strs.getBytes("ISO-8859-1").length); - AYSdk.getInstance().sendCmd(Constant.UPGRADE_MCU_CONTENT_FILE, strs); -// FileUtil.deleteFile("",Constant.MCU_FILE_NAME); - }else{ - MyLog.i(TAG,"mcu鍗囩骇鏂囦欢涓嶅瓨鍦�"); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - }); - - } public ExamPlatformModel examPlatformModel; @Override diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java index f3c0e31..6fc62f7 100644 --- a/app/src/main/java/safeluck/drive/evaluation/app.java +++ b/app/src/main/java/safeluck/drive/evaluation/app.java @@ -78,7 +78,6 @@ private Gson gson; RTKConfig rtkConfig; FailedProjRepository failedProjRepository;//澶辫触椤圭洰琛ㄦ暟鎹簱 - RTKWorkRepository rtkWorkRepository;//淇濆瓨RTK閰嶇疆琛� Random random = new Random(); private static Context appContext=null; @Override @@ -109,7 +108,6 @@ MyLog.i(TAG, "onCreate111"); FileUtil.createdirs(getApplicationContext()); failedProjRepository = new FailedProjRepository(this); - rtkWorkRepository = new RTKWorkRepository(this); MyLog.i(TAG,"鎷疯礉assert鐩綍涓嬬殑map" + "鍜寁echile json鍒板寘鐩綍涓�"); new Thread(new Runnable() { @@ -165,7 +163,6 @@ -// CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json); break; case Constant.RTK_PLATFORM_REGISTER_STATUS: CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json); @@ -297,7 +294,7 @@ }else{ if (TextUtils.isEmpty(lastSn)){ - lastSn =sn; + lastSn ="123"; return; } lastSn = sn; -- Gitblit v1.8.0