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