From 5fdd4458a3c9f99a3c951683d503f73a47ff976d Mon Sep 17 00:00:00 2001 From: lizhanwei <Dana_Lee1016@126.com> Date: 星期五, 13 三月 2020 15:43:07 +0800 Subject: [PATCH] 解决RTK配置,传感器配置收到NDK_Start的时候发两次的问题;在ExamStatusOutWork里面发送rtf配置 传感器配置、考试状态;RTK配置增加数据库访问;电话使用sn,sn更新发送给服务在RTKConfigUpdateWorker;基本设置里删除电话显示;修改鉴权消息,使用服务器注册给的密码,用des加密时间,发鉴权消息给服务;Utils增加des加密和解密算法 --- app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java | 75 +++++ app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java | 2 im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java | 2 app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatusOutWorker.kt | 25 + app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java | 181 +++++++------ app/src/main/java/safeluck/drive/evaluation/util/Utils.java | 57 ++++ app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java | 2 app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java | 15 app/src/main/java/safeluck/drive/evaluation/app.java | 2 app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt | 30 ++ app/src/main/java/safeluck/drive/evaluation/MainActivity.java | 73 +++-- app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java | 3 app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java | 21 + app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/PhoneCoder.java | 3 app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java | 29 + app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java | 2 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java | 97 +++---- app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java | 57 ++++ app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java | 13 app/src/main/res/layout/layout_base_datas.xml | 41 +++ 20 files changed, 513 insertions(+), 217 deletions(-) diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java index 8f9c085..2afb858 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/WorkRoomDataBase.java @@ -10,8 +10,10 @@ import androidx.room.migration.Migration; import androidx.sqlite.db.SupportSQLiteDatabase; import androidx.work.OneTimeWorkRequest; +import androidx.work.WorkContinuation; import androidx.work.WorkManager; +import java.util.Arrays; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -95,15 +97,24 @@ OneTimeWorkRequest examStatusInitWorker = OneTimeWorkRequest.from(ExamStatusInitWorker.class); OneTimeWorkRequest signalConigInitWorker = OneTimeWorkRequest.from(SignalConfigInitWorker.class); Log.i(TAG, "onCreate: 鍒涘缓鏁版嵁搴撳悗寤虹珛鏁版嵁琛ㄦ彃鍏ユ暟鎹�"); - WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest); - WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1); - WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest2); - WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest3); - WorkManager.getInstance(mContext).enqueue(mCriteriaForIIIWorker); - WorkManager.getInstance(mContext).enqueue(RTKConfigWorkRequest); - WorkManager.getInstance(mContext).enqueue(appStatusInitWork); - WorkManager.getInstance(mContext).enqueue(examStatusInitWorker); - WorkManager.getInstance(mContext).enqueue(signalConigInitWorker); +// WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest); +// WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest1); +// WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest2); +// WorkManager.getInstance(mContext).enqueue(oneTimeWorkRequest3); +// WorkManager.getInstance(mContext).enqueue(mCriteriaForIIIWorker); +// WorkManager.getInstance(mContext).enqueue(RTKConfigWorkRequest); +// WorkManager.getInstance(mContext).enqueue(appStatusInitWork); +// WorkManager.getInstance(mContext).enqueue(examStatusInitWorker); +// WorkManager.getInstance(mContext).enqueue(signalConigInitWorker); + +//鍗曡矾寰勬墽琛岋紝鍙互瀹炵幇鏇村姞澶嶆潅鐨勫璺緞鎵ц鏂瑰紡 + WorkContinuation chain1= WorkManager.getInstance(mContext).beginWith(Arrays.asList(oneTimeWorkRequest,oneTimeWorkRequest1)) + .then(mCriteriaForIIIWorker).then(oneTimeWorkRequest3); + WorkContinuation chain2 = WorkManager.getInstance(mContext).beginWith(Arrays.asList(RTKConfigWorkRequest,appStatusInitWork,signalConigInitWorker)) + .then(oneTimeWorkRequest2).then(examStatusInitWorker); + + WorkContinuation chain3 = WorkContinuation.combine(Arrays.asList(chain1,chain2)); + chain3.enqueue(); } @Override diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java index 31bb742..b995454 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/exam_status/ExamStatus.java @@ -26,9 +26,7 @@ //1 杩涘叆锛堟鍦ㄨ繘琛岃�冭瘯锛� 2-寰呰�� private int enter; - public ExamStatus(int map_id) { - this.map_id = map_id; - } + public void setResult(int result) { this.result = result; @@ -39,11 +37,7 @@ //琛ㄧず宸茬粡鐐瑰嚮浜嗗紑濮嬭�冭瘯锛屽苟涓旀敹鍒颁簡鑰冭瘯搴旂瓟 0-鏈�冭瘯 2-鍦哄湴 3-妯℃嫙鐏厜锛岃矾鑰冿紝 4-璺�� private int startExam; - @Ignore - public ExamStatus(int map_id, int enter) { - this.map_id = map_id; - this.enter = enter; - } + public int getMap_item() { return map_item; @@ -53,8 +47,7 @@ this.map_item = map_item; } - public ExamStatus() { - } + public int getMap_id() { return map_id; 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 9e20043..31824e3 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 @@ -2,7 +2,6 @@ import android.content.Context import android.util.Log -import android.widget.Toast import androidx.work.Data import androidx.work.Worker import androidx.work.WorkerParameters @@ -13,6 +12,7 @@ import org.json.JSONObject import safeluck.drive.evaluation.DB.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.SignalConfigRemote @@ -24,6 +24,8 @@ 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 @@ -73,4 +75,25 @@ return false } + + 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(TAG, "RTK閰嶇疆淇℃伅锛�$rtkjson") + AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_RTK_PLATFORM_INFO, rtkjson) + } else { + MyLog.d(TAG, "RTKConfig鏈彇鍒版暟鎹�") + } + } + } \ No newline at end of file diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java index 31d00e6..9929959 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java +++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigDao.java @@ -21,5 +21,6 @@ @Query("Update rtkconfig_table SET sn=:sn ,imei=:imei ,phone=:phone where _id =0") void update(String sn,String imei,String phone); - + @Query("SELECT * from rtkconfig_table") + RTKConfig _getRtkConfig(); } diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt index ded84a7..1c921d3 100644 --- a/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt +++ b/app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt @@ -5,6 +5,10 @@ import android.util.Log 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 org.json.JSONException import org.json.JSONObject import safeluck.drive.evaluation.DB.Constant import safeluck.drive.evaluation.DB.WorkRoomDataBase @@ -12,6 +16,7 @@ class RTKConfigUpdateWorker(context:Context, workerParams: WorkerParameters) :Worker(context, workerParams){ val TAG:String = "RTKConfigUpdateWorker" + private val gson = Gson() override fun doWork(): Result { @@ -32,14 +37,37 @@ 0311200200000011锛屽墠4浣嶆槸璁惧缂栫爜锛屾帴涓嬫潵4浣嶆槸骞存湀锛屽悗闈�8浣嶆槸娴佹按鍙凤紱 鐢佃瘽鍙风爜鍓�2浣嶅浐瀹�13锛岀涓変綅鍙朣N鐨勭4浣嶏紝绗�4-7浣嶅彇SN鐨勫勾鏈堬紝绗�8-11浣嶅彇SN娴佹按鍙风殑鍚�4浣嶏紱鍗�13120020011 */ - phone = "13"+sn.subSequence(3,8)+sn.substring(sn.length-4,sn.length) + phone = sn Log.i(TAG,"phone="+phone) } var rtkConfigDao = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao.also { it.update(sn, imei, phone) + + } + + sendRtkConfigInfo(WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao._getRtkConfig()) return Result.success() } + 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(TAG, "RTK閰嶇疆淇℃伅锛�$rtkjson") + AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_RTK_PLATFORM_INFO, rtkjson) + } else { + MyLog.d(TAG, "RTKConfig鏈彇鍒版暟鎹�") + } + } } \ No newline at end of file diff --git a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java index 3eca6b0..b0dc214 100644 --- a/app/src/main/java/safeluck/drive/evaluation/MainActivity.java +++ b/app/src/main/java/safeluck/drive/evaluation/MainActivity.java @@ -56,10 +56,12 @@ import safeluck.drive.evaluation.im.MessageProcessor; import safeluck.drive.evaluation.platformMessage.JKMessage0100; import safeluck.drive.evaluation.platformMessage.JKMessage0101; +import safeluck.drive.evaluation.platformMessage.PlatFormConstant; import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.FileUtil; import safeluck.drive.evaluation.util.PermissionManager; import safeluck.drive.evaluation.util.SPUtils; +import safeluck.drive.evaluation.util.Utils; import safeluck.drive.evaluation.viewmodels.ExamPlatformModel; import safeluck.drive.evaluation.viewmodels.MainViewModel; import safeluck.drive.evaluation.viewmodels.RTKConnAndLogin; @@ -82,7 +84,7 @@ @Override public void onCEvent(String topic, int msgCode, int resultCode, Object obj) { if (msgCode == Constant.FETCH_RTK_PLATFORM_INFO) { - sendRtkConfigInfo(); +// sendRtkConfigInfo(); } if (msgCode == Constant.RTK_PLATFORM_REGISTER_STATUS) { try { @@ -102,8 +104,8 @@ } } if (msgCode == Constant.NDK_START){ - MyLog.i(TAG,"NDK_start,鍙戦�丷TK閰嶇疆"); - sendRtkConfigInfo(); + MyLog.i(TAG,"NDK_start"); +// sendRtkConfigInfo(); sendMcuUprgrade(); } } @@ -134,27 +136,27 @@ } - 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; - } - } +// 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) { @@ -200,13 +202,13 @@ MyLog.i(TAG, "RTKConfig Changed: " + (rtkConfig != null ? rtkConfig.toString() : "null")); mRTKConfig = rtkConfig; if (rtkConfig != null) - ExamPlatformData.getInstance().setPhone(rtkConfig.getPhone()); + ExamPlatformData.getInstance().setPhone(rtkConfig.getSn()); synchronized (MainActivity.this){ - if (onlySendOnceRTKConfig){ - MyLog.i(TAG,"杩涘叆 synchronized (MainActivity.this)"); - onlySendOnceRTKConfig = false; - sendRtkConfigInfo(); - } +// if (onlySendOnceRTKConfig){ +// MyLog.i(TAG,"杩涘叆 synchronized (MainActivity.this)"); +// onlySendOnceRTKConfig = false; +// sendRtkConfigInfo(); +// } } } @@ -365,8 +367,15 @@ }else{ JKMessage0101 jkMessage0101 = new JKMessage0101(); jkMessage0101.phone = ExamPlatformData.getInstance().getPhone(); - jkMessage0101.des =hexPwd; - jkMessage0101.timestamp = (int) System.currentTimeMillis(); + String des = hexPwd; + int time = (int) System.currentTimeMillis(); + jkMessage0101.timestamp = time; + + + byte[] miwen = Utils.encrypt(com.anyun.im_lib.util.ByteUtil.intGetBytes(time),des); + MyLog.i(PlatFormConstant.TAG,"閴存潈瀵嗘枃="+BytesUtils.bytesToHexString(miwen)+" time="+time); + jkMessage0101.des = BytesUtils.bytesToHexString(miwen); + MessageProcessor.getInstance().sendMessage(jkMessage0101); } } diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java index db36839..5929334 100644 --- a/app/src/main/java/safeluck/drive/evaluation/app.java +++ b/app/src/main/java/safeluck/drive/evaluation/app.java @@ -23,8 +23,6 @@ import com.anyun.exam.lib.MyLog; import com.anyun.exam.lib.crash.CrashHandler; -import com.anyun.im_lib.ExecutorServiceFactory; -import com.anyun.im_lib.listener.IMSConnectStatusCallback; import com.facebook.stetho.Stetho; import com.google.gson.Gson; import com.google.gson.JsonArray; 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 0b425f3..cfd9bb1 100644 --- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java +++ b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java @@ -1,6 +1,7 @@ package safeluck.drive.evaluation.bean; import android.content.Context; +import android.text.TextUtils; import android.util.Log; import androidx.lifecycle.LiveData; @@ -25,6 +26,8 @@ import safeluck.drive.evaluation.viewmodels.MainViewModel; public class ExamPlatformData { + + private static final String TAG = "ExamPlatformData"; private static final ExamPlatformData ourInstance = new ExamPlatformData(); private int exam_id =12345;//鑰冭瘯鍞竴ID @@ -37,7 +40,10 @@ public static final int DEV_REGISTERED = 4; public static final int DEV_NOT_LOGIN = 5; public static final int DEV_LOGIN = 6; + + private boolean isTrainingMode = false;//鏄惁璁粌妯″紡 private static HashMap<Integer,String> examPlatformStrs = new HashMap<>(); + private List<Integer> sns =new ArrayList<>();//淇濆瓨鎵�鏈夊け璐ラ」鐩殑sn private static HashMap<Integer,String> enter_exit_item_tts = new HashMap<>(); private static List<SimulateNightBean.QuestionBean> simulate_light_tips = new ArrayList<>(); static { @@ -96,6 +102,9 @@ private int port; private String mapPath;//缁濆璺緞鍖呭惈鏂囦欢鍚嶇殑path private String carPath;//缁濆璺緞鍖呭惈鏂囦欢鍚嶇殑path + private StringBuffer stringBuffer; + private int rtkPort = 12125; + private String rtkIP = "47.93.80.84"; public static ExamPlatformData getInstance() { return ourInstance; @@ -103,6 +112,7 @@ private ExamPlatformData() { + stringBuffer = new StringBuffer(); } public String getPlatformIP(){ @@ -134,6 +144,19 @@ public boolean compareIPandPort(String ip,int port){ MyLog.i( "compareIPandPort: "+ip+" "+port); if(!getPlatformIP().equalsIgnoreCase(ip) || getPlatformPort()!=port){ + MyLog.i("ip鍜岀鍙f湁鍙樺寲"); + return true; + } + return false; + } /** + * 姣旇緝RTK ip鍦板潃鍜岀鍙e彿锛� + * @param ip + * @param port + * @return ip鍜岀鍙e叾涓湁鍙樺寲锛岃繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse + */ + public boolean compareRTKIPandPort(String ip,int port){ + MyLog.i( "compareIPandPort: "+ip+" "+port); + if(!getRtkIP().equalsIgnoreCase(ip) || getRtkPort()!=port){ MyLog.i("ip鍜岀鍙f湁鍙樺寲"); return true; } @@ -237,6 +260,15 @@ } } + public boolean isTrainingMode() { + isTrainingMode = (boolean) SPUtils.get(app.getAppContext(),SPUtils.TRAIN_MODE,false); + return isTrainingMode; + } + + public void setTrainingMode(boolean trainingMode) { + SPUtils.put(app.getAppContext(),SPUtils.TRAIN_MODE,trainingMode); + isTrainingMode = trainingMode; + } public void setPhone(String phone) { this.mPhone = phone; @@ -249,4 +281,47 @@ public List<SimulateNightBean.QuestionBean> getSimulate_light_tips() { return simulate_light_tips; } + + public List<Integer> getSns() { +// if (sns.size()<=0){ +// String snsstr = (String) SPUtils.get(app.getAppContext(),SPUtils.FAIL_PROJ_SNS,""); +// if (!TextUtils.isEmpty(snsstr)){ +// String[] strings=snsstr.split("#"); +// for (int i = 0; i < strings.length; i++) { +// Log.i(TAG, String.format("strings[%d]=%s",i,strings[i])); +// if (!TextUtils.isEmpty(strings[i])) +// sns.add(Integer.parseInt(strings[i])); +// } +// } +// } + return sns; + + } + + public void addSn(int sn) { +// stringBuffer.append("#"+String.valueOf(sn)); +// SPUtils.put(app.getAppContext(),SPUtils.FAIL_PROJ_SNS,stringBuffer.toString()); + this.sns.add(sn); + } + + public void clearSns() { +// SPUtils.clear(app.getAppContext()); + sns.clear(); + } + + public void setRTKPort(int port) { + this.rtkPort = port; + } + + public void setRTKIP(String ip) { + this.rtkIP = ip; + } + + public int getRtkPort() { + return rtkPort; + } + + public String getRtkIP() { + return rtkIP; + } } diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java index 8356a03..4413c8a 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java @@ -104,9 +104,9 @@ if (mRtkConfig != null){ datas.add("鐪両D锛�"+mRtkConfig.getProvince()); datas.add("甯侷D锛�"+mRtkConfig.getCity()); - datas.add("鐢佃瘽锛�"+mRtkConfig.getPhone()); datas.add("RTK骞冲彴鍦板潃锛�"+mRtkConfig.getIp()+":"+mRtkConfig.getPort()); + datas.add("鑰冭瘯骞冲彴鍦板潃锛�"+ExamPlatformData.getInstance().getPlatformIP()+":"+ExamPlatformData.getInstance().getPlatformPort()); } if (appStatus != null){ diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java index e09ae7c..3e845fd 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/HomeFragment.java @@ -8,6 +8,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.NonNull; @@ -18,6 +19,7 @@ import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.BuildConfig; import safeluck.drive.evaluation.R; +import safeluck.drive.evaluation.bean.ExamPlatformData; /** @@ -73,14 +75,19 @@ } break; case R.id.network_train: - NetWorkTrainFragment netWorkTrainFragment = findFragment(NetWorkTrainFragment.class); - if (netWorkTrainFragment == null) { - netWorkTrainFragment = (NetWorkTrainFragment) NetWorkTrainFragment.newInstance(); - start(netWorkTrainFragment); - } else { - start(netWorkTrainFragment); + if (ExamPlatformData.getInstance().isTrainingMode()){ + Toast.makeText(_mActivity, "褰撳墠姝e浜庤缁冩ā寮忥紝鏃犳硶杩涘叆鑱旂綉鑰冭瘯锛岃鍏堢粨鏉熻缁�", Toast.LENGTH_SHORT).show(); + }else{ + NetWorkTrainFragment netWorkTrainFragment = findFragment(NetWorkTrainFragment.class); + if (netWorkTrainFragment == null) { + netWorkTrainFragment = (NetWorkTrainFragment) NetWorkTrainFragment.newInstance(); + start(netWorkTrainFragment); + } else { + start(netWorkTrainFragment); + } + //鑱旂綉鑰冭瘯 } - //鑱旂綉鑰冭瘯 + break; case R.id.exit_sys: //閫�鍑虹郴缁� diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java index 3b3d097..e930588 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java @@ -746,7 +746,6 @@ car[line][0] = points.get(i); } else { double value = 0 - points.get(i); - Log.i(TAG, "onCEvent: 鏂板��=" + value + " 浣嶇疆锛�" + i); car[line][1] = value; line++; } @@ -783,7 +782,6 @@ byte[] fileContent = FileUtil.readFile(mapPath); if (fileContent != null){ newmap= new String(fileContent); - Log.i(TAG, "鏂囦欢鍐呭锛�"+newmap); }else{ MyLog.i(String.format("鏂囦欢:%s涓嶅瓨鍦�",mapPath)); } 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 21612d1..e1aba26 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java @@ -127,7 +127,7 @@ av_zhijiao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_ANGLE)); } if (msg.what == SPEED_DATA){ - tv_speed.setText(getResources().getString(R.string.speed,speed)); + tv_speed.setText(getActivity().getApplicationContext().getResources().getString(R.string.speed,speed)); } if (msg.what == Constant.IC_ID){ try { @@ -186,7 +186,13 @@ return getResources().getColor(R.color.colorAccent); }else{ - ExamPlatformData.getInstance().getTTS().speak("鍊掕溅鍏ュ簱鍚堟牸"); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囧�掕溅鍏ュ簱鍚堟牸"); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鍊掕溅鍏ュ簱鍚堟牸"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } + return getResources().getColor(R.color.train_btn_return); } case 2: @@ -194,7 +200,13 @@ MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); return getResources().getColor(R.color.colorAccent); }else{ - ExamPlatformData.getInstance().getTTS().speak("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝ュ悎鏍�"); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囧潯閬撳畾鐐瑰仠杞﹀拰璧锋鍚堟牸鍚堟牸"); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝ュ悎鏍�"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } + return getResources().getColor(R.color.train_btn_return); } case 3: @@ -202,7 +214,13 @@ MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); return getResources().getColor(R.color.colorAccent); }else{ - ExamPlatformData.getInstance().getTTS().speak("渚ф柟鍋滆溅鍚堟牸"); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囦晶鏂瑰仠杞﹀悎鏍�"); + }else{ + + ExamPlatformData.getInstance().getTTS().speak("渚ф柟鍋滆溅鍚堟牸"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } return getResources().getColor(R.color.train_btn_return); } case 4: @@ -210,8 +228,13 @@ MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); return getResources().getColor(R.color.colorAccent); }else{ - ExamPlatformData.getInstance().getTTS().speak("鏇茬嚎琛岄┒鍚堟牸"); - examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囨洸绾胯椹跺悎鏍�"); + }else{ + + ExamPlatformData.getInstance().getTTS().speak("鏇茬嚎琛岄┒鍚堟牸"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } return getResources().getColor(R.color.train_btn_return); } case 5: @@ -219,8 +242,13 @@ MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); return getResources().getColor(R.color.colorAccent); }else{ - MyLog.i("璇ラ」鑰冭瘯鎴愬姛锛宼ype="+type); - ExamPlatformData.getInstance().getTTS().speak("鐩磋杞集鍚堟牸"); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囩洿瑙掕浆寮悎鏍�"); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鐩磋杞集鍚堟牸"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } + return getResources().getColor(R.color.train_btn_return); } @@ -270,7 +298,7 @@ MyLog.i("褰撳墠寰楀垎锛�"+currTotalScore); if (currTotalScore < Constant.PASSING_SCORE){ MyLog.i("浣庝簬80锛屼笉鍚堟牸"+currTotalScore); - ExamPlatformData.getInstance().getTTS().speak("鑰冭瘯涓嶅悎鏍�"); +// ExamPlatformData.getInstance().getTTS().speak("鑰冭瘯涓嶅悎鏍�"); // stopExam(); } MyLog.i("鐩戞祴鍒版湁澶辫触椤圭洰鍔犲叆锛岄�氱煡UI鏇存柊棰滆壊"); @@ -401,53 +429,6 @@ } - private int whatPaintColor(ExamStatus examStat) { - int map_id = examStat.getMap_id(); - int status = examStat.getEnter(); - MyLog.i(TAG, "whatPaintColor: map_id="+map_id+" status="+status); - switch (status) { - case 0://鑰冭瘯瀹屾垚 - switch (map_id) { - case 1://鍊掑簱 - if (item_conents.contains("鍊掕溅鍏ュ簱")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - case 2: - if (item_conents.contains("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝�")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - case 3: - if (item_conents.contains("渚ф柟鍋滆溅")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - case 4: - if (item_conents.contains("鏇茬嚎琛岄┒")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - case 5: - if (item_conents.contains("鐩磋杞集")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - - } - case 1://杩涘叆鑰冨満椤圭洰 - MyLog.i("pink 杩涘叆鏌愪釜鑰冨満椤圭洰"); - return getResources().getColor(R.color.pink); - case 2://寰呰�� - return getResources().getColor(R.color.examing); - } - return getResources().getColor(R.color.examing); - } private void initView(View view) { @@ -546,6 +527,8 @@ @Override public void changKao() { exam_type = 2; + + iv_head.getDrawable().setLevel(1); examStatusViewModel.updateStartExam(exam_type); sendExamJson(1,exam_type); ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯"); @@ -571,6 +554,7 @@ MessageProcessor.getInstance().sendMessage(jkMessage0202); + iv_head.getDrawable().setLevel(1); tempQs.add(list.get(0)); int [] a =Utils.getRandomInts(4,12); for (int i = 0; i < a.length; i++) { @@ -589,7 +573,6 @@ } }); - iv_head.getDrawable().setLevel(1); //娓呯┖sns sns.clear(); 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 8fb6e1e..e08042c 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/SetArgumentsFragment.java @@ -20,12 +20,16 @@ import androidx.lifecycle.ViewModelProviders; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import androidx.work.WorkManager; import com.anyun.exam.lib.AYSdk; import com.anyun.exam.lib.MyLog; import com.anyun.exam.lib.util.ByteUtil; import com.google.gson.Gson; import com.safeluck.aykj.utils.BytesUtils; + +import org.json.JSONException; +import org.json.JSONObject; import java.io.IOException; import java.io.UnsupportedEncodingException; @@ -51,6 +55,7 @@ import safeluck.drive.evaluation.cEventCenter.ICEventListener; import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.FileUtil; +import safeluck.drive.evaluation.util.SPUtils; /** * 璁剧疆鎵�鏈夊弬鏁� @@ -68,12 +73,13 @@ private int request_code = REQUEST_CODE_MAP; private Button btn_config_signal; private Button btn_mcu_upgrade,btn_map_select; - private EditText et_ip,et_port; + private EditText et_ip,et_port,et_simulte_ip,et_simulate_port; private Gson gson = new Gson(); private EditText et_ip_rtk,et_port_rtk,et_city_id,et_city_province,et_phone; private RTKConfigViewModel rtkConfigViewModel; private RTKConfig mRtkConfig; private Toolbar toolbar; + private boolean needSendRtk = false; public static SetArgumentsFragment newInstance() { return new SetArgumentsFragment(); @@ -98,6 +104,9 @@ et_city_province.setText(String.valueOf(rtkConfig.getProvince())); et_port_rtk.setText(String.valueOf(rtkConfig.getPort())); et_phone.setText(rtkConfig.getPhone()); + ExamPlatformData.getInstance().setRTKPort(rtkConfig.getPort()); + ExamPlatformData.getInstance().setRTKIP(rtkConfig.getIp()); + } @@ -107,6 +116,29 @@ return view; + } + + private void sendRtkConfigInfo(RTKConfig mRTKConfig) { + 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( "need resend RTK閰嶇疆淇℃伅锛�" + rtkjson+"鏍囧織浣嶏細"+needSendRtk); + AYSdk.getInstance().sendCmd(Constant.PUSH_RTK_PLATFORM_INFO, rtkjson); + } else { + MyLog.i("RTKConfig鏈彇鍒版暟鎹�"); + } + needSendRtk = false; + } private void initView(View view) { // toolbar =view.findViewById(R.id.toolbar); @@ -133,10 +165,12 @@ et_ip_rtk = view.findViewById(R.id.rtk_addr_ip); + et_simulte_ip = view.findViewById(R.id.simulate_ip); et_city_id = view.findViewById(R.id.et_city_id); et_city_province = view.findViewById(R.id.et_provice_id); et_phone = view.findViewById(R.id.et_phone); et_port_rtk = view.findViewById(R.id.rtk_addr_port); + et_simulate_port = view.findViewById(R.id.simulate_port); } @Override @@ -150,7 +184,6 @@ signalFragment= SignalConfigFragment.newInstance(); } start(signalFragment); -// ((BaseSettingFragment)getParentFragment()).startBrotherFragment(SignalConfigFragment.newInstance()); break; case R.id.btn_mcu_upgrade: @@ -174,19 +207,35 @@ case R.id.btn_save_platform: Toast.makeText(_mActivity, "淇濆瓨鎴愬姛", Toast.LENGTH_SHORT).show(); if(ExamPlatformData.getInstance().compareIPandPort(et_ip.getText().toString().trim(),Integer.parseInt(et_port.getText().toString().trim()))){ + SPUtils.put(getActivity(), SPUtils.DES_HEX_PWD,""); ((MainActivity)getActivity()).examPlatformModel.getDataChange().postValue(1); ExamPlatformData.getInstance().insertPlatformIp(et_ip.getText().toString().trim()); ExamPlatformData.getInstance().insertPlatformPort(Integer.parseInt(et_port.getText().toString().trim())); } if (mRtkConfig != null){ - mRtkConfig.setPort(Integer.parseInt(et_port_rtk.getText().toString().trim())); + String rtkip = et_ip_rtk.getText().toString().trim(); + int rtkport = Integer.parseInt(et_port_rtk.getText().toString().trim()); + + mRtkConfig.setPort(rtkport); mRtkConfig.setCity(Integer.parseInt(et_city_id.getText().toString().trim())); mRtkConfig.setProvince(Integer.parseInt(et_city_province.getText().toString().trim())); - mRtkConfig.setIp(et_ip_rtk.getText().toString().trim()); + mRtkConfig.setIp(rtkip); mRtkConfig.setPhone(et_phone.getText().toString().trim()); + + if (ExamPlatformData.getInstance().compareRTKIPandPort(rtkip,rtkport)){ + mRtkConfig.setRegistered(0); + MyLog.i("rtk ip鍜屽湴鍧�鏈夊彉鍖�"); + needSendRtk = true; + sendRtkConfigInfo(mRtkConfig); + + } rtkConfigViewModel.insertRTKConfig(mRtkConfig); + } + + + _mActivity.onBackPressed(); break; case R.id.btn_car_select://杞﹁締妯″瀷鍜屽湴鍥惧叕鐢ㄤ竴濂椾唬鐮� 鍖哄埆鍦ㄤ簬REQUEST_CODE 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 e0031b7..341aada 100644 --- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java +++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java @@ -12,6 +12,8 @@ import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import androidx.work.OneTimeWorkRequest; +import androidx.work.PeriodicWorkRequest; +import androidx.work.WorkInfo; import androidx.work.WorkManager; import android.os.Handler; @@ -41,6 +43,7 @@ import java.util.Date; import java.util.List; import java.util.Random; +import java.util.concurrent.TimeUnit; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.Constant; @@ -69,6 +72,9 @@ import safeluck.drive.evaluation.platformMessage.JKMessage0203; import safeluck.drive.evaluation.platformMessage.JKMessage0204; import safeluck.drive.evaluation.util.Utils; +import safeluck.drive.evaluation.worker.TimeWorker; + +import static androidx.work.PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS; /**鍗曟満璁粌UI * MyApplication2 @@ -100,7 +106,7 @@ private int item_id;//鎵e垎鍒嗘暟鎬诲拰 private ExamStatusViewModel examStatusViewModel; private static final int ADD_DATA = 1; - private TextView tv_speed,tv_total_score,tv_sat_num,tv_name,tv_id,tv_work_platform; + private TextView tv_speed,tv_total_score,tv_sat_num,tv_name,tv_id,tv_work_platform,tv_network_time; private double speed=0.0; private ImageView iv_rtk_status,iv_head; @@ -111,8 +117,6 @@ String icson;//杩斿洖鐨刬c鍗′俊鎭� json private Random random = new Random(); private List<SimulateNightBean.QuestionBean> tempQs= new ArrayList<>(); - - private Handler mHandler = new Handler(new Handler.Callback() { @@ -128,7 +132,7 @@ av_zhijiao.setColor(aaa(safeluck.drive.evaluation.DB.Constant.EXAM_MAP_TYPE_ANGLE)); } if (msg.what == SPEED_DATA){ - tv_speed.setText(getResources().getString(R.string.speed,speed)); + tv_speed.setText(_mActivity.getApplicationContext().getResources().getString(R.string.speed,speed)); } if (msg.what == Constant.IC_ID){ try { @@ -187,7 +191,13 @@ return getResources().getColor(R.color.colorAccent); }else{ - ExamPlatformData.getInstance().getTTS().speak("鍊掕溅鍏ュ簱鍚堟牸"); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囧�掕溅鍏ュ簱鍚堟牸"); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鍊掕溅鍏ュ簱鍚堟牸"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } + return getResources().getColor(R.color.train_btn_return); } case 2: @@ -195,7 +205,13 @@ MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); return getResources().getColor(R.color.colorAccent); }else{ - ExamPlatformData.getInstance().getTTS().speak("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝ュ悎鏍�"); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囧潯閬撳畾鐐瑰仠杞﹀拰璧锋鍚堟牸鍚堟牸"); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝ュ悎鏍�"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } + return getResources().getColor(R.color.train_btn_return); } case 3: @@ -203,7 +219,13 @@ MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); return getResources().getColor(R.color.colorAccent); }else{ - ExamPlatformData.getInstance().getTTS().speak("渚ф柟鍋滆溅鍚堟牸"); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囦晶鏂瑰仠杞﹀悎鏍�"); + }else{ + + ExamPlatformData.getInstance().getTTS().speak("渚ф柟鍋滆溅鍚堟牸"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } return getResources().getColor(R.color.train_btn_return); } case 4: @@ -211,7 +233,13 @@ MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); return getResources().getColor(R.color.colorAccent); }else{ - ExamPlatformData.getInstance().getTTS().speak("鏇茬嚎琛岄┒鍚堟牸"); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囨洸绾胯椹跺悎鏍�"); + }else{ + + ExamPlatformData.getInstance().getTTS().speak("鏇茬嚎琛岄┒鍚堟牸"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } return getResources().getColor(R.color.train_btn_return); } case 5: @@ -219,8 +247,13 @@ MyLog.i("璇ラ」鑰冭瘯澶辫触锛宼ype="+type); return getResources().getColor(R.color.colorAccent); }else{ - MyLog.i("璇ラ」鑰冭瘯鎴愬姛锛宼ype="+type); - ExamPlatformData.getInstance().getTTS().speak("鐩磋杞集鍚堟牸"); + if (examStatus.getResult() ==1){ + MyLog.i("宸茬粡鎾斁杩囩洿瑙掕浆寮悎鏍�"); + }else{ + ExamPlatformData.getInstance().getTTS().speak("鐩磋杞集鍚堟牸"); + examStatusViewModel.updateItemExamResult(1,examStatus.getMap_id()); + } + return getResources().getColor(R.color.train_btn_return); } @@ -270,8 +303,8 @@ MyLog.i("褰撳墠寰楀垎锛�"+currTotalScore); if (currTotalScore < Constant.PASSING_SCORE){ MyLog.i("浣庝簬80锛屼笉鍚堟牸"+currTotalScore); - ExamPlatformData.getInstance().getTTS().speak("鑰冭瘯涓嶅悎鏍�"); - stopExam(); +// ExamPlatformData.getInstance().getTTS().speak("鑰冭瘯涓嶅悎鏍�"); +// stopExam(); } MyLog.i("鐩戞祴鍒版湁澶辫触椤圭洰鍔犲叆锛岄�氱煡UI鏇存柊棰滆壊"); mHandler.obtainMessage(ADD_DATA).sendToTarget(); @@ -346,7 +379,7 @@ return view; } - private List<Integer> sns =new ArrayList<>(); + private void sendJKMessage0203(List<FailedProj_select> failedProj_selects) { JKMessage0203 jkMessage0203 = new JKMessage0203(); jkMessage0203.phone = ExamPlatformData.getInstance().getPhone(); @@ -361,7 +394,7 @@ failedProj_selects.get(i).getScore_deducting()==100?"涓嶅悎鏍�":"鎵�"+ failedProj_selects.get(i).getScore_deducting()+"鍒�")); MyLog.i("娌℃湁鐩稿悓鐨剆n锛屽彂閫�"+failedProj_selects.get(i).getSn()); - sns.add(failedProj_selects.get(i).getSn()); + ExamPlatformData.getInstance().addSn(failedProj_selects.get(i).getSn()); String utc = failedProj_selects.get(i).getUtc(); if (!TextUtils.isEmpty(utc)&&utc.length()>12){ utc =utc.substring(0,12); @@ -385,11 +418,11 @@ } private boolean hasSnEqulas(int failedProjSn){ - if (sns.size() > 0){ - for (int j = 0; j < sns.size(); j++) { - MyLog.i("宸插瓨鍦ㄧ殑sn"+sns.get(j)); - if (sns.get(j) == failedProjSn){ - MyLog.i("sn鐩稿悓锛屼笉鍙�"+sns.get(j)); + if (ExamPlatformData.getInstance().getSns().size() > 0){ + for (int j = 0; j < ExamPlatformData.getInstance().getSns().size(); j++) { + MyLog.i("宸插瓨鍦ㄧ殑sn"+ExamPlatformData.getInstance().getSns().get(j)); + if (ExamPlatformData.getInstance().getSns().get(j) == failedProjSn){ + MyLog.i("sn鐩稿悓锛屼笉鍙�"+ExamPlatformData.getInstance().getSns().get(j)); return true; }else{ continue; @@ -401,63 +434,9 @@ } - private int whatPaintColor(ExamStatus examStat) { - int map_id = examStat.getMap_id(); - int status = examStat.getEnter(); - MyLog.i(TAG, "whatPaintColor: map_id="+map_id+" status="+status); - switch (status) { - case 0://鑰冭瘯瀹屾垚 - switch (map_id) { - case 1://鍊掑簱 - if (item_conents.contains("鍊掕溅鍏ュ簱")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - case 2: - if (item_conents.contains("鍧¢亾瀹氱偣鍋滆溅鍜岃捣姝�")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - case 3: - if (item_conents.contains("渚ф柟鍋滆溅")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - case 4: - if (item_conents.contains("鏇茬嚎琛岄┒")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - case 5: - if (item_conents.contains("鐩磋杞集")) { - return getResources().getColor(R.color.colorAccent); - }else{ - return getResources().getColor(R.color.train_btn_return); - } - } - case 1://杩涘叆鑰冨満椤圭洰 - MyLog.i("pink 杩涘叆鏌愪釜鑰冨満椤圭洰"); - return getResources().getColor(R.color.pink); - case 2://寰呰�� - return getResources().getColor(R.color.examing); - } - return getResources().getColor(R.color.examing); - } private void initView(View view) { - - Intent intent = new Intent(ALARM_ACTION_CODE); - PendingIntent pendingIntent = PendingIntent.getBroadcast(_mActivity.getApplicationContext(), - REQUEST_CODE, intent, - PendingIntent.FLAG_CANCEL_CURRENT); - AlarmManager alarmManager = (AlarmManager) _mActivity.getApplicationContext().getSystemService(Context.ALARM_SERVICE); - alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(),pendingIntent); - view.findViewById(R.id.iv_head).setOnClickListener(this); av_curve = view.findViewById(R.id.av3); @@ -474,6 +453,25 @@ tv_sat_num = view.findViewById(R.id.tv_sat_num); tv_speed = view.findViewById(R.id.tv_speed); 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)); view.findViewById(R.id.btn_return).setOnClickListener(this); @@ -500,8 +498,10 @@ mScoreAdapter = new ScoreAdapter(_mActivity); mListView.setAdapter(mScoreAdapter); btn_start_exam = view.findViewById(R.id.btn_start); + btn_start_exam.setText("寮�濮嬭缁�"); btn_start_exam.setOnClickListener(this); tv_stop = view.findViewById(R.id.tv_stop); + tv_stop.setText("缁撴潫璁粌"); tv_stop.setOnClickListener(this); mListView.addHeaderView(LayoutInflater.from(_mActivity).inflate(R.layout.layout_score_item, null)); @@ -514,10 +514,7 @@ public void onClick(View v) { switch (v.getId()) { case R.id.btn_start: - OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class); - WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork); - item_id = 0; - currTotalScore = 100; + //TODO 鍙戦�丣KMessage0202 缁欏钩鍙帮紝寮�濮嬭�冭瘯 final JKMessage0202 jkMessage0202 = new JKMessage0202(); jkMessage0202.phone = ExamPlatformData.getInstance().getPhone(); @@ -525,7 +522,6 @@ jkMessage0202.ID = ExamPlatformData.getInstance().getID(); jkMessage0202.exam_id = ExamPlatformData.getInstance().getExam_id(); - failedProjViewModel.deleteAll(); if (myDialogFragment == null){ myDialogFragment = new MyDialogFragment(); @@ -535,10 +531,13 @@ @Override public void changKao() { exam_type = 2; + iv_head.getDrawable().setLevel(1); examStatusViewModel.updateStartExam(exam_type); sendExamJson(1,exam_type); - ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭�冭瘯"); + ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭缁�"); jkMessage0202.curr_exam = 0; + + ExamPlatformData.getInstance().setTrainingMode(true);//璁剧疆涓鸿缁冩ā寮� MessageProcessor.getInstance().sendMessage(jkMessage0202); } @@ -551,8 +550,10 @@ if (simulateNightBean == null){ simulateNightBean = new SimulateNightBean(); } + iv_head.getDrawable().setLevel(1); simulateNightBean.setExam(0); - + ExamPlatformData.getInstance().getTTS().speak("寮�濮嬭缁�"); + ExamPlatformData.getInstance().setTrainingMode(true);//璁剧疆涓鸿缁冩ā寮� final List<SimulateNightBean.QuestionBean> list = ExamPlatformData.getInstance().getSimulate_light_tips(); simulateNightBean.setQuestion(list.subList(list.size()-2,list.size()-1)); AYSdk.getInstance().sendCmd(0x8012,gson.toJson(simulateNightBean)); @@ -561,7 +562,7 @@ MessageProcessor.getInstance().sendMessage(jkMessage0202); tempQs.add(list.get(0)); - int [] a = Utils.getRandomInts(4,12); + int [] a =Utils.getRandomInts(4,12); for (int i = 0; i < a.length; i++) { tempQs.add(list.get(a[i])); } @@ -578,9 +579,8 @@ } }); - iv_head.getDrawable().setLevel(1); - //娓呯┖sns - sns.clear(); + + @@ -627,11 +627,22 @@ private void stopExam() { MyLog.i(TAG,"缁撴潫鑰冭瘯"); + //娓呯┖sns + ExamPlatformData.getInstance().clearSns(); + //璁剧疆璁粌妯″紡涓篺alse + ExamPlatformData.getInstance().setTrainingMode(false); + + //鎭㈠鍒濆鏁版嵁 + OneTimeWorkRequest examStatusInitWork = OneTimeWorkRequest.from(ExamStatusInitWorker.class); + WorkManager.getInstance(_mActivity).enqueue(examStatusInitWork); + item_id = 0; + currTotalScore = 100; + failedProjViewModel.deleteAll(); tv_total_score.setText(String.valueOf(currTotalScore)); iv_head.getDrawable().setLevel(0); - ExamPlatformData.getInstance().getTTS().speak("缁撴潫鑰冭瘯"); + ExamPlatformData.getInstance().getTTS().speak("缁撴潫璁粌"); examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); sendExamJson(0,0);//缁撴潫鑰冭瘯 exstart=0 //TODO 鍙戦�丣KMessage0204缁欏钩鍙� 缁撴潫鑰冭瘯 diff --git a/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java b/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java index 68e5b1f..7b6f11f 100644 --- a/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java +++ b/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java @@ -32,6 +32,7 @@ import safeluck.drive.evaluation.platformMessage.utils.MessageManager; import safeluck.drive.evaluation.util.CThreadPoolExecutor; import safeluck.drive.evaluation.util.SPUtils; +import safeluck.drive.evaluation.util.Utils; /** * MyApplication2 @@ -69,11 +70,17 @@ JK2019MessageBase jk2019MessageBase = MessageManager.get(BytesUtils.bytesToHexString(datas)); if (jk2019MessageBase instanceof JKMessage8100){ if (((JKMessage8100) jk2019MessageBase).result == JKMessage8100.SUCCESS){ - - SPUtils.put(app.getAppContext(),SPUtils.DES_HEX_PWD,((JKMessage8100) jk2019MessageBase).des); + MyLog.i(PlatFormConstant.TAG,"娉ㄥ唽鎴愬姛"); + String des = ((JKMessage8100) jk2019MessageBase).des; + SPUtils.put(app.getAppContext(),SPUtils.DES_HEX_PWD,des); JKMessage0101 jkMessage0101 = new JKMessage0101(); - jkMessage0101.des =((JKMessage8100) jk2019MessageBase).des; - jkMessage0101.timestamp = (int) System.currentTimeMillis(); +// jkMessage0101.des =((JKMessage8100) jk2019MessageBase).des; + int time =(int) System.currentTimeMillis(); + jkMessage0101.timestamp = time; + byte[] miwen =Utils.encrypt(ByteUtil.intGetBytes(time),des); + MyLog.i(PlatFormConstant.TAG,"閴存潈瀵嗘枃="+BytesUtils.bytesToHexString(miwen)+" time="+time); + jkMessage0101.des = BytesUtils.bytesToHexString(miwen); + sendMessage(jkMessage0101); ExamPlatformData.getInstance().setExamplatformStatus(ExamPlatformData.DEV_REGISTERED); }else{ ExamPlatformData.getInstance().setExamplatformStatus(ExamPlatformData.DEV_REGISTERED); diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/PhoneCoder.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/PhoneCoder.java index 81f86ac..7779c64 100644 --- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/PhoneCoder.java +++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/decoder/PhoneCoder.java @@ -21,6 +21,9 @@ // str ="00000000000"; str ="0000000000000000"; } + if (str.length()<16){ + str = "0000"+str; + } byte[] bcdBytes = ByteUtil.str2Bcd(str); // return "00000"+str; return BytesUtils.bytesToHexString(bcdBytes); diff --git a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java index fa867ea..b70bc26 100644 --- a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java +++ b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java @@ -20,6 +20,8 @@ public static final String PLATFORM_PORT = "platform_port"; public static final String MAP_PATH = "map_path"; public static final String CAR_PATH = "car_path"; + public static final String TRAIN_MODE = "training_mode"; + public static final String FAIL_PROJ_SNS = "failed_projs_sns"; /** * 淇濆瓨鏁版嵁鐨勬柟娉曪紝鎴戜滑闇�瑕佹嬁鍒颁繚瀛樻暟鎹殑鍏蜂綋绫诲瀷锛岀劧鍚庢牴鎹被鍨嬭皟鐢ㄤ笉鍚岀殑淇濆瓨鏂规硶 diff --git a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java index 2daba11..5a06340 100644 --- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java +++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java @@ -8,8 +8,14 @@ import com.anyun.exam.lib.util.ByteUtil; import com.safeluck.aykj.utils.BytesUtils; +import java.security.SecureRandom; import java.util.Calendar; import java.util.Random; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.DESKeySpec; /** * MyApplication2 @@ -214,4 +220,55 @@ } return stringBuffer.toString(); } + + + /** + * 鍔犲瘑 + * @param datasource byte[] + * @param password String + * @return byte[] + */ + public static byte[] encrypt(byte[] datasource, String password) { + try{ + SecureRandom random = new SecureRandom(); + DESKeySpec desKey = new DESKeySpec(password.getBytes()); + //鍒涘缓涓�涓瘑鍖欏伐鍘傦紝鐒跺悗鐢ㄥ畠鎶奃ESKeySpec杞崲鎴� + SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); + SecretKey securekey = keyFactory.generateSecret(desKey); + //Cipher瀵硅薄瀹為檯瀹屾垚鍔犲瘑鎿嶄綔 + Cipher cipher = Cipher.getInstance("DES"); + //鐢ㄥ瘑鍖欏垵濮嬪寲Cipher瀵硅薄 + cipher.init(Cipher.ENCRYPT_MODE, securekey, random); + //鐜板湪锛岃幏鍙栨暟鎹苟鍔犲瘑 + //姝e紡鎵ц鍔犲瘑鎿嶄綔 + return cipher.doFinal(datasource); + }catch(Throwable e){ + e.printStackTrace(); + } + return null; + } + /** + * 瑙e瘑 + * @param src byte[] + * @param password String + * @return byte[] + * @throws Exception + */ + public static byte[] decrypt(byte[] src, String password) throws Exception { + // DES绠楁硶瑕佹眰鏈変竴涓彲淇′换鐨勯殢鏈烘暟婧� + SecureRandom random = new SecureRandom(); + // 鍒涘缓涓�涓狣ESKeySpec瀵硅薄 + DESKeySpec desKey = new DESKeySpec(password.getBytes()); + // 鍒涘缓涓�涓瘑鍖欏伐鍘� + SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); + // 灏咲ESKeySpec瀵硅薄杞崲鎴怱ecretKey瀵硅薄 + SecretKey securekey = keyFactory.generateSecret(desKey); + // Cipher瀵硅薄瀹為檯瀹屾垚瑙e瘑鎿嶄綔 + Cipher cipher = Cipher.getInstance("DES"); + // 鐢ㄥ瘑鍖欏垵濮嬪寲Cipher瀵硅薄 + cipher.init(Cipher.DECRYPT_MODE, securekey, random); + // 鐪熸寮�濮嬭В瀵嗘搷浣� + return cipher.doFinal(src); + } + } diff --git a/app/src/main/res/layout/layout_base_datas.xml b/app/src/main/res/layout/layout_base_datas.xml index 6e5f80a..41fda36 100644 --- a/app/src/main/res/layout/layout_base_datas.xml +++ b/app/src/main/res/layout/layout_base_datas.xml @@ -60,6 +60,47 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" + android:visibility="gone" + android:orientation="horizontal"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="@android:color/black" + android:text="妯℃嫙鍣�"/> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="15dp" + android:text="IP锛�"/> + <EditText + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/simulate_ip" + android:text="192.168.23.12" + android:background="@android:drawable/editbox_background_normal"/> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:text="Port锛�"/> + <EditText + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:id="@+id/simulate_port" + android:text="9001" + android:background="@android:drawable/editbox_background_normal"/> + </LinearLayout> + <View + android:layout_width="match_parent" + android:layout_height="1px" + android:visibility="gone" + android:layout_marginTop="10dp" + android:layout_marginBottom="10dp" + android:background="@color/colorAccent" + /> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" diff --git a/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java b/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java index 00d363b..c66bb4b 100644 --- a/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java +++ b/im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java @@ -73,7 +73,7 @@ byte b = (byte) a; bbt[p] = b; } -// Log.i(TAG, "str2Bcd: "+byte2HexStr(bbt)); + Log.i(TAG, "str2Bcd: "+byte2HexStr(bbt)); return bbt; } -- Gitblit v1.8.0