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