From de1edc7ad9dec23564e13c600683a2140965661e Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期一, 16 三月 2020 13:44:48 +0800 Subject: [PATCH] 优化app.java代码,防止RTK配置发两次;MCU协处理器升级以Worker的形势进行,防止多个入口升级,升级之后会删除dfu.bin,加入dfu.bin不存在的话给出提示; --- app/src/main/java/safeluck/drive/evaluation/Constant.java | 2 app/src/main/java/safeluck/drive/evaluation/app.java | 12 ++ app/src/main/java/safeluck/drive/evaluation/MainActivity.java | 34 -------- app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt | 2 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | 14 --- app/src/main/java/safeluck/drive/evaluation/worker/MCUUpgradeWorker.kt | 36 +++++++++ im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java | 2 app/src/main/java/safeluck/drive/evaluation/viewmodels/TimeViewModel.kt | 39 +++++++++ app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java | 15 --- app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java | 32 ++++--- 10 files changed, 107 insertions(+), 81 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java index 4b9d253..f91b4ad 100644 --- a/app/src/main/java/safeluck/drive/evaluation/Constant.java +++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java @@ -92,4 +92,6 @@ public static int DaoLu = 4; @NotNull public static final String TIME_MINUTE = "show_time_minute"; + @NotNull + public static final String MCU_UPGRADE_FAIL_RESASON = "mcu_upgrade_fail_reason"; } 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 31824e3..fca1875 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 @@ -35,7 +35,7 @@ } var indexs = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).signalConfigDao.allIndexs sendSignalConfigsToRemote(indexs) - MyLog.i("鏌ュ埌鐨勮�冭瘯type="+examType) + 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) { try { diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java index f7124bb..3526318 100644 --- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java +++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java @@ -77,15 +77,12 @@ private Gson gson = new Gson(); String[] PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}; RTKConfigViewModel rtkConfigViewModel; - private boolean onlySendOnceRTKConfig = true; private ICEventListener icEventListener = new ICEventListener() { @Override public void onCEvent(String topic, int msgCode, int resultCode, Object obj) { - if (msgCode == Constant.FETCH_RTK_PLATFORM_INFO) { -// sendRtkConfigInfo(); - } + if (msgCode == Constant.RTK_PLATFORM_REGISTER_STATUS) { try { JSONObject jsonObject = new JSONObject((String) obj); @@ -103,11 +100,7 @@ e.printStackTrace(); } } - if (msgCode == Constant.NDK_START){ - MyLog.i(TAG,"NDK_start"); -// sendRtkConfigInfo(); - sendMcuUprgrade(); - } + } }; private List<SignalConfigRemote> signalConfiglist = new ArrayList<>(); @@ -136,27 +129,6 @@ } -// private void sendRtkConfigInfo() { -// if (mRTKConfig != null) { -// String rtkjson = gson.toJson(mRTKConfig); -// -// //鍘婚櫎id瀛楁 -// JSONObject jsonObject = null; -// try { -// jsonObject = new JSONObject(rtkjson); -// } catch (JSONException e) { -// e.printStackTrace(); -// } -// jsonObject.remove("_id"); -// rtkjson = null; -// rtkjson = jsonObject.toString(); -// MyLog.i(TAG, "RTK閰嶇疆淇℃伅锛�" + rtkjson); -// AYSdk.getInstance().sendCmd(Constant.PUSH_RTK_PLATFORM_INFO, rtkjson); -// } else { -// MyLog.d(TAG, "RTKConfig鏈彇鍒版暟鎹�"); -// onlySendOnceRTKConfig = true; -// } -// } public ExamPlatformModel examPlatformModel; @Override protected void onCreate(Bundle savedInstanceState) { @@ -267,7 +239,6 @@ loadRootFragment(R.id.fl_container, HomeFragment.newInstance()); } - CEventCenter.onBindEvent(true, icEventListener, Constant.BIND_RTKCONFIG_TOPIC);//鍙戦�乺tk閰嶇疆娑堟伅 CEventCenter.onBindEvent(true, icEventListener, Constant.BIND_CONNECT_RTK_TOPIC);//鏀跺埌rtk杩炴帴 鐧诲綍缁撴灉 } @@ -275,7 +246,6 @@ @Override protected void onDestroy() { super.onDestroy(); - CEventCenter.onBindEvent(false, icEventListener, Constant.BIND_RTKCONFIG_TOPIC); CEventCenter.onBindEvent(false, icEventListener, Constant.BIND_CONNECT_RTK_TOPIC); Log.i(TAG, "onDestroy: "); diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java index f6cea14..f3c0e31 100644 --- a/app/src/main/java/safeluck/drive/evaluation/app.java +++ b/app/src/main/java/safeluck/drive/evaluation/app.java @@ -64,6 +64,7 @@ import safeluck.drive.evaluation.util.FileUtil; import safeluck.drive.evaluation.util.SPUtils; import safeluck.drive.evaluation.util.SystemUtil; +import safeluck.drive.evaluation.worker.MCUUpgradeWorker; /** * MyApplication2 @@ -159,11 +160,12 @@ sendVechileInfo(); sendMapInfo(); OneTimeWorkRequest examStatausOutWorker = OneTimeWorkRequest.from(ExamStatusOutWorker.class); - WorkManager.getInstance(getApplicationContext()).enqueue(examStatausOutWorker); + OneTimeWorkRequest mcuUpgradeWorker = OneTimeWorkRequest.from(MCUUpgradeWorker.class); + WorkManager.getInstance(getApplicationContext()).beginWith(examStatausOutWorker).then(mcuUpgradeWorker).enqueue(); - CEventCenter.dispatchEvent(Constant.BIND_CONNECT_RTK_TOPIC,cmd,0,json); +// 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); @@ -182,7 +184,7 @@ break; case Constant.FETCH_RTK_PLATFORM_INFO: - CEventCenter.dispatchEvent(Constant.BIND_RTKCONFIG_TOPIC,cmd,0,""); +// CEventCenter.dispatchEvent(Constant.BIND_RTKCONFIG_TOPIC,cmd,0,""); break; case Constant.JUDGE_INFO: @@ -294,6 +296,10 @@ if (sn.equalsIgnoreCase(lastSn)){ }else{ + if (TextUtils.isEmpty(lastSn)){ + lastSn =sn; + return; + } lastSn = sn; Data data = new Data.Builder().putString(safeluck.drive.evaluation.DB.Constant.RTK_CONFIG_UPDATE_JSON,sn).build(); OneTimeWorkRequest rtkConfigUpdateWorker= new OneTimeWorkRequest.Builder(RTKConfigUpdateWorker.class).setInputData(data).build(); 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 b51e494..898d708 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java @@ -460,21 +460,6 @@ 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)); diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java index e08042c..9e6f492 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java @@ -20,6 +20,9 @@ import androidx.lifecycle.ViewModelProviders; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import androidx.work.Data; +import androidx.work.OneTimeWorkRequest; +import androidx.work.WorkInfo; import androidx.work.WorkManager; import com.anyun.exam.lib.AYSdk; @@ -56,6 +59,7 @@ import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.FileUtil; import safeluck.drive.evaluation.util.SPUtils; +import safeluck.drive.evaluation.worker.MCUUpgradeWorker; /** * 璁剧疆鎵�鏈夊弬鏁� @@ -188,21 +192,19 @@ case R.id.btn_mcu_upgrade: - - try { - byte[] datas = FileUtil.readLocalFile(getActivity(),"dfu.bin"); - if (datas != null){ - Log.i(TAG, ByteUtil.byte2hex(datas)); - - String strs = new String(datas, Charset.forName("ISO-8859-1")); - Log.i(TAG, "onClick: datas.legnth=="+strs.getBytes("ISO-8859-1").length); - AYSdk.getInstance().sendCmd(Constant.UPGRADE_MCU_CONTENT_FILE, strs); - }else{ - MyLog.i(TAG,"mcu鍗囩骇鏂囦欢涓嶅瓨鍦�"); - } - } catch (IOException e) { - e.printStackTrace(); - } + OneTimeWorkRequest mcuUpgradeWorkReq = OneTimeWorkRequest.from(MCUUpgradeWorker.class); + WorkManager.getInstance(_mActivity.getApplicationContext()).enqueue(mcuUpgradeWorkReq); + WorkManager.getInstance(_mActivity.getApplicationContext()).getWorkInfoByIdLiveData(mcuUpgradeWorkReq.getId()) + .observe(this, new Observer<WorkInfo>() { + @Override + public void onChanged(WorkInfo workInfo) { + if (workInfo.getState()== WorkInfo.State.FAILED){ + Data data = workInfo.getOutputData(); + String str = data.getString(Constant.MCU_UPGRADE_FAIL_RESASON); + Toast.makeText(_mActivity, str, Toast.LENGTH_SHORT).show(); + } + } + }); break; case R.id.btn_save_platform: Toast.makeText(_mActivity, "淇濆瓨鎴愬姛", Toast.LENGTH_SHORT).show(); 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 f237d16..917fc2c 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java @@ -467,20 +467,6 @@ 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)); diff --git a/app/src/main/java/safeluck/drive/evaluation/viewmodels/TimeViewModel.kt b/app/src/main/java/safeluck/drive/evaluation/viewmodels/TimeViewModel.kt index 15a0f42..a521a1a 100644 --- a/app/src/main/java/safeluck/drive/evaluation/viewmodels/TimeViewModel.kt +++ b/app/src/main/java/safeluck/drive/evaluation/viewmodels/TimeViewModel.kt @@ -1,2 +1,41 @@ package safeluck.drive.evaluation.viewmodels +import android.util.Log +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import safeluck.drive.evaluation.util.Utils + +class TimeViewModel : ViewModel() { + val TAG:String = "TimeViewModel" + private var time:MutableLiveData<String> = MutableLiveData<String>() + private var flag=true + fun getLiveDataTime():LiveData<String> { + loadTime(); + return time + } + + private fun loadTime() { + + Thread(Runnable { + while (flag){ + try { + Thread.sleep(10 * 1000.toLong()) + } catch (e: InterruptedException) { + e.printStackTrace() + } + Log.i(TAG,"10s鏃堕棿鍒�") + time.postValue(Utils.getHHmm()) + } + + + }).start() + } + + override fun onCleared() { + Log.i(TAG,"onCleared") + flag = false; + } + + +} \ No newline at end of file diff --git a/app/src/main/java/safeluck/drive/evaluation/worker/MCUUpgradeWorker.kt b/app/src/main/java/safeluck/drive/evaluation/worker/MCUUpgradeWorker.kt new file mode 100644 index 0000000..6f293b2 --- /dev/null +++ b/app/src/main/java/safeluck/drive/evaluation/worker/MCUUpgradeWorker.kt @@ -0,0 +1,36 @@ +package safeluck.drive.evaluation.worker + +import android.content.Context +import androidx.work.Data +import androidx.work.Worker +import androidx.work.WorkerParameters +import com.anyun.exam.lib.AYSdk +import com.anyun.exam.lib.MyLog +import safeluck.drive.evaluation.Constant +import safeluck.drive.evaluation.util.FileUtil +import java.io.IOException +import java.nio.charset.Charset + +class MCUUpgradeWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams){ + override fun doWork(): Result { + 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() + return Result.failure(data); + } + } catch (e: IOException) { + e.printStackTrace() + } + return Result.success() + } + +} \ No newline at end of file diff --git a/im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java b/im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java index a363991..6a75fe0 100644 --- a/im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java +++ b/im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java @@ -62,7 +62,7 @@ } //鍔ㄦ�侀暱搴︼紝鍘绘帀鍏朵粬鎵�鏈夊瓧娈电殑闀垮害锛屽墿浣欑殑涓烘瀛楁闀垮害 if (fieldDefine.getFieldLen() > 0) { - System.out.println(fieldDefine.field.getName() + "闀垮害=" + fieldDefine.getFieldLen() * 2); +// System.out.println(fieldDefine.field.getName() + "闀垮害=" + fieldDefine.getFieldLen() * 2); used += (fieldDefine.getFieldLen() * 2); } -- Gitblit v1.8.0