From 0dcf7a67fec9cb98e3246951f3b10f51a31a84c9 Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期三, 19 二月 2020 11:39:28 +0800
Subject: [PATCH] app添加获取Context方法;修改学员信息数据库表;增加修改学员信息表的Work方法;收到服务器发回来的学员信息更新数据库表;注册成功之后的密码进行sp保存;tcp连接成功后,根据sp是否有密码来判断是进行注册还是鉴权

---
 app/src/main/java/safeluck/drive/evaluation/Constant.java                      |    1 
 app/src/main/java/safeluck/drive/evaluation/DB/StudentInfoUpdateWork.java      |   47 +++++++++++++++
 app/src/main/java/safeluck/drive/evaluation/app.java                           |    9 ++
 app/src/main/assets/students_file.json                                         |    4 +
 app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java                  |    1 
 app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java                 |    2 
 app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java |    2 
 app/src/main/res/layout/layout_tcpclient.xml                                   |    6 ++
 app/src/main/java/safeluck/drive/evaluation/DB/Student.java                    |   11 +++
 app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java          |   51 ++++++++++++----
 app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java           |   30 +++++++++
 11 files changed, 145 insertions(+), 19 deletions(-)

diff --git a/app/src/main/assets/students_file.json b/app/src/main/assets/students_file.json
index d04d564..a0c4f94 100644
--- a/app/src/main/assets/students_file.json
+++ b/app/src/main/assets/students_file.json
@@ -4,6 +4,8 @@
     "stu_id":1001,
     "ID": "410923198910162545",
     "name": "鏉庡洓",
-    "sex":2
+    "sex":2,
+    "head_url":""
+
   }
 ]
\ No newline at end of file
diff --git a/app/src/main/java/safeluck/drive/evaluation/Constant.java b/app/src/main/java/safeluck/drive/evaluation/Constant.java
index cfd1242..149ae93 100644
--- a/app/src/main/java/safeluck/drive/evaluation/Constant.java
+++ b/app/src/main/java/safeluck/drive/evaluation/Constant.java
@@ -75,5 +75,6 @@
     public static final String MCU_FILE_NAME = "dfu.bin";
     public static final int MCU_SN = 8;
     public static final int SEND_CONFIG_SIGNAL = 0x8008;
+    public static final String STU_INFO_PLATFORM = "STU_INFO_PLATFORM";
     public static String exam_enter_exitdata="exam_enter_exitdata";
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/Student.java b/app/src/main/java/safeluck/drive/evaluation/DB/Student.java
index f44e818..9d17de7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/Student.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/Student.java
@@ -29,6 +29,17 @@
     //鎬у埆 0-鐢� 1-濂�
     @ColumnInfo(name = "sex")
     private int sex;
+    //鎬у埆 0-鐢� 1-濂�
+    @ColumnInfo(name = "head_url")
+    private String head_url;
+
+    public String getHead_url() {
+        return head_url;
+    }
+
+    public void setHead_url(String head_url) {
+        this.head_url = head_url;
+    }
 
     public long getBegin_time() {
         return begin_time;
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java b/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java
index 6d32c75..0750bf4 100644
--- a/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/StudentDao.java
@@ -17,7 +17,7 @@
  */
 @Dao
 public interface StudentDao {
-    @Insert(onConflict = OnConflictStrategy.IGNORE)
+    @Insert(onConflict = OnConflictStrategy.REPLACE)
     void insert(Student student);
 
 
diff --git a/app/src/main/java/safeluck/drive/evaluation/DB/StudentInfoUpdateWork.java b/app/src/main/java/safeluck/drive/evaluation/DB/StudentInfoUpdateWork.java
new file mode 100644
index 0000000..44d415d
--- /dev/null
+++ b/app/src/main/java/safeluck/drive/evaluation/DB/StudentInfoUpdateWork.java
@@ -0,0 +1,47 @@
+package safeluck.drive.evaluation.DB;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import safeluck.drive.evaluation.Constant;
+
+public class StudentInfoUpdateWork extends Worker {
+
+    private static final String TAG = "StudentInfoUpdateWork";
+    public StudentInfoUpdateWork(@NonNull Context context, @NonNull WorkerParameters workerParams) {
+        super(context, workerParams);
+    }
+
+    @NonNull
+    @Override
+    public Result doWork() {
+        String str = getInputData().getString(Constant.STU_INFO_PLATFORM);
+        if (!TextUtils.isEmpty(str)){
+            Log.i(TAG, "doWork: "+str);
+            JSONObject jsonObject = null;
+
+            try {
+                jsonObject = new JSONObject(str);
+                String headUrl = jsonObject.getString("head_url");
+                String  id = jsonObject.getString("ID");
+                String  name = jsonObject.getString("name");
+                Student student =new Student(1001,name,id,2);
+                student.setHead_url(headUrl);
+                WorkRoomDataBase.getWorkRoomDataBase(getApplicationContext()).getstudentDao().insert(student);
+                return Result.success();
+            } catch (JSONException e) {
+                e.printStackTrace();
+                return Result.failure();
+            }
+        }
+        return Result.success();
+    }
+}
diff --git a/app/src/main/java/safeluck/drive/evaluation/app.java b/app/src/main/java/safeluck/drive/evaluation/app.java
index b1c19f2..f347e2c 100644
--- a/app/src/main/java/safeluck/drive/evaluation/app.java
+++ b/app/src/main/java/safeluck/drive/evaluation/app.java
@@ -1,6 +1,7 @@
 package safeluck.drive.evaluation;
 
 import android.app.Application;
+import android.content.Context;
 import android.os.Environment;
 import android.text.TextUtils;
 import android.util.Log;
@@ -61,7 +62,7 @@
     FailedProjRepository failedProjRepository;//澶辫触椤圭洰琛ㄦ暟鎹簱
     RTKWorkRepository rtkWorkRepository;//淇濆瓨RTK閰嶇疆琛�
     Random random = new Random();
-
+    private static Context appContext=null;
     @Override
     public void onCreate() {
         super.onCreate();
@@ -84,7 +85,7 @@
             MyLog.createIfNotExist();
             Stetho.initializeWithDefaults(this);
 
-
+            appContext = this;
 
             //鏁版嵁搴撴搷浣�
             MyLog.i(TAG, "onCreate111");
@@ -105,6 +106,10 @@
 
     }
 
+    public static Context getAppContext(){
+        return appContext;
+    }
+
     @Override
     public void onTerminate() {
         super.onTerminate();
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
index 278ca81..b5009a7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -5,6 +5,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -22,6 +23,9 @@
 
 import java.io.UnsupportedEncodingException;
 import java.util.Date;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
 
 import me.yokeyword.fragmentation.SupportFragment;
 import safeluck.drive.evaluation.DB.criterias.CriteriaForI;
@@ -29,6 +33,7 @@
 import safeluck.drive.evaluation.R;
 import safeluck.drive.evaluation.im.MessageProcessor;
 import safeluck.drive.evaluation.platformMessage.JKMessage0001;
+import safeluck.drive.evaluation.platformMessage.JKMessage0002;
 import safeluck.drive.evaluation.platformMessage.JKMessage0100;
 import safeluck.drive.evaluation.platformMessage.JKMessage0101;
 import safeluck.drive.evaluation.platformMessage.JKMessage0201;
@@ -36,6 +41,7 @@
 import safeluck.drive.evaluation.platformMessage.JKMessage0203;
 import safeluck.drive.evaluation.platformMessage.JKMessage0204;
 import safeluck.drive.evaluation.im.IMSClientBootstrap;
+import safeluck.drive.evaluation.util.SPUtils;
 
 /**
  * MyApplication2
@@ -51,6 +57,7 @@
     private TextInputEditText port;
     private TextView tv_content;
     private Button btn_connect;
+    private Button btn_auth;
     private Button btn_send;
     private AppCompatEditText sendEditText;
     private CriteriaIViewModel workViewModel;
@@ -81,12 +88,14 @@
         btn_connect = view.findViewById(R.id.btn_connect);
         btn_send = view.findViewById(R.id.btn_send);
         view.findViewById(R.id.btn_register).setOnClickListener(this);
-        view.findViewById(R.id.btn_auth).setOnClickListener(this);
+        btn_auth = view.findViewById(R.id.btn_auth);
+        btn_auth.setOnClickListener(this);
         view.findViewById(R.id.btn_gain).setOnClickListener(this);
         view.findViewById(R.id.btn_start_exam).setOnClickListener(this);
         view.findViewById(R.id.btn_stop_exam).setOnClickListener(this);
         view.findViewById(R.id.btn_fail).setOnClickListener(this);
         view.findViewById(R.id.btn_gps).setOnClickListener(this);
+        view.findViewById(R.id.btn_keepalive).setOnClickListener(this);
 
         btn_send.setOnClickListener(this);
         btn_connect.setOnClickListener(this);
@@ -123,8 +132,8 @@
                 String userId = "100002";
                 String token = "token_" + userId;
 //                String hosts = "[{\"host\":\"47.93.80.84\", \"port\":12125}]";
-//                String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]";
-                String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]";
+                String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]";
+//                String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]";
 
                 IMSClientBootstrap.getInstance().init(userId,token,hosts,1);
                 break;
@@ -159,18 +168,24 @@
                 Log.i(TAG, "onClick: string="+string);
                 break;
             case R.id.btn_register:
+                String hexPwd = (String) SPUtils.get(getActivity(),SPUtils.DES_HEX_PWD,"");
+                if (TextUtils.isEmpty(hexPwd)){
 
-                JKMessage0100 jkRegisterMessage = new JKMessage0100();
-                jkRegisterMessage.proviceid = 23;
-                jkRegisterMessage.cityid = 1;
-                jkRegisterMessage.imei = "460123874561";
-                jkRegisterMessage.model = "123";
-                jkRegisterMessage.sn = "0314200100000004";
+                    JKMessage0100 jkRegisterMessage = new JKMessage0100();
+                    jkRegisterMessage.proviceid = 23;
+                    jkRegisterMessage.cityid = 1;
+                    jkRegisterMessage.imei = "460123874561";
+                    jkRegisterMessage.model = "123";
+                    jkRegisterMessage.sn = "0314200100000004";
 
-                Log.i(TAG, "onClick: msg len "+jkRegisterMessage.getMessageLen()+" "+       jkRegisterMessage.props.value);
-                byte[] str = jkRegisterMessage.toBytes();
-                MessageProcessor.getInstance().sendMessage(jkRegisterMessage);
-                Log.i(TAG, "onClick: "+ BytesUtils.bytesToHexString(str)+" ============");
+                    Log.i(TAG, "onClick: msg len "+jkRegisterMessage.getMessageLen()+" "+       jkRegisterMessage.props.value);
+                    byte[] str = jkRegisterMessage.toBytes();
+                    MessageProcessor.getInstance().sendMessage(jkRegisterMessage);
+                    Log.i(TAG, "onClick: "+ BytesUtils.bytesToHexString(str)+" ============");
+                }else{
+                    Log.i(TAG, "onClick: 瀵嗙爜="+hexPwd);
+                    btn_auth.performClick();
+                }
                 break;
             case R.id.btn_auth:
                 JKMessage0101 jkMessage0101 = new JKMessage0101();
@@ -216,6 +231,16 @@
                 jkMessage0204.exam_id = 123456;
                 MessageProcessor.getInstance().sendMessage(jkMessage0204);
                 break;
+            case R.id.btn_keepalive:
+                ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
+                scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
+                    @Override
+                    public void run() {
+                        MessageProcessor.getInstance().sendMessage(new JKMessage0002());
+                    }
+                },1000,1000, TimeUnit.MICROSECONDS);
+
+                break;
         }
     }
 
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 d2dc784..84272be 100644
--- a/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
+++ b/app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
@@ -1,18 +1,29 @@
 package safeluck.drive.evaluation.im;
 
+import android.app.Application;
 import android.util.Log;
+
+import androidx.work.Data;
+import androidx.work.OneTimeWorkRequest;
+import androidx.work.WorkManager;
 
 import com.anyun.exam.lib.MyLog;
 import com.anyun.im_lib.util.ByteUtil;
+import com.google.gson.Gson;
 import com.safeluck.aykj.utils.BytesUtils;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import safeluck.drive.evaluation.Constant;
+import safeluck.drive.evaluation.DB.StudentInfoUpdateWork;
+import safeluck.drive.evaluation.app;
 import safeluck.drive.evaluation.platformMessage.JK2019MessageBase;
 import safeluck.drive.evaluation.platformMessage.JKMessage0001;
 import safeluck.drive.evaluation.platformMessage.JKMessage0100;
+import safeluck.drive.evaluation.platformMessage.JKMessage8001;
 import safeluck.drive.evaluation.platformMessage.JKMessage8100;
+import safeluck.drive.evaluation.platformMessage.JKMessage8201;
 import safeluck.drive.evaluation.platformMessage.PlatFormConstant;
 import safeluck.drive.evaluation.platformMessage.utils.MessageEscaper;
 import safeluck.drive.evaluation.platformMessage.utils.MessageManager;
@@ -29,9 +40,11 @@
 
     private static final String TAG = MessageProcessor.class.getSimpleName();
     private Map<Integer, JK2019MessageBase> mMsgTimeoutMap = new ConcurrentHashMap<>();
+    private Gson gson;
 
     private MessageProcessor(){
         messageEscaper = new MessageEscaper();
+        gson = new Gson();
     }
 
     private static class MessageProcessorInstance{
@@ -52,8 +65,22 @@
         MyLog.i(PlatFormConstant.TAG,"杞箟杩囧悗鐨勬湇鍔℃秷鎭細"+ BytesUtils.bytesToHexString(datas));
         JK2019MessageBase jk2019MessageBase = MessageManager.get(BytesUtils.bytesToHexString(datas));
         if (jk2019MessageBase instanceof JKMessage8100){
+            if (((JKMessage8100) jk2019MessageBase).result == JKMessage8100.SUCCESS){
 
-            Log.i(TAG, "receiveMsg: "+jk2019MessageBase.messageId);
+                SPUtils.put(app.getAppContext(),SPUtils.DES_HEX_PWD,((JKMessage8100) jk2019MessageBase).des);
+            }
+        }else if (jk2019MessageBase instanceof JKMessage8001){
+            JKMessage8001 jkMessage8001 = (JKMessage8001) jk2019MessageBase;
+            String hexMessageId = jkMessage8001.respMessageId;
+            if (hexMessageId.equalsIgnoreCase("0101")){
+                MyLog.i(PlatFormConstant.TAG,"閴存潈鎴愬姛");
+            }
+        }else if (jk2019MessageBase instanceof JKMessage8201){
+            JKMessage8201 jkMessage8201 = (JKMessage8201) jk2019MessageBase;
+            Data data = new Data.Builder().putString(Constant.STU_INFO_PLATFORM,gson.toJson(jkMessage8201)).build();
+            OneTimeWorkRequest stuInfoUpdateWork = new OneTimeWorkRequest.Builder(StudentInfoUpdateWork.class)
+                    .setInputData(data).build();
+            WorkManager.getInstance(app.getAppContext()).enqueue(stuInfoUpdateWork);
         }
     }
 
@@ -65,6 +92,7 @@
         CThreadPoolExecutor.runInBackground(new Runnable() {
             @Override
             public void run() {
+
                 if (IMSClientBootstrap.getInstance().isActive()){
                     IMSClientBootstrap.getInstance().sendMessage(msg.toBytes());
                 }else{
diff --git a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java
index 82363a3..3b4c3d8 100644
--- a/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java
+++ b/app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage8201.java
@@ -19,5 +19,5 @@
     @Order(4)
     @Length(0)
     @Ascii
-    public String url;
+    public String head_url;
 }
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 128f312..05fd2a1 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
@@ -15,6 +15,7 @@
      * 淇濆瓨鍦ㄦ墜鏈洪噷闈㈢殑鏂囦欢鍚�
      */
     public static final String FILE_NAME = "share_data";
+    public static final String DES_HEX_PWD = "des_pwd";
 
     /**
      * 淇濆瓨鏁版嵁鐨勬柟娉曪紝鎴戜滑闇�瑕佹嬁鍒颁繚瀛樻暟鎹殑鍏蜂綋绫诲瀷锛岀劧鍚庢牴鎹被鍨嬭皟鐢ㄤ笉鍚岀殑淇濆瓨鏂规硶
diff --git a/app/src/main/res/layout/layout_tcpclient.xml b/app/src/main/res/layout/layout_tcpclient.xml
index d5c882a..f46c2d6 100644
--- a/app/src/main/res/layout/layout_tcpclient.xml
+++ b/app/src/main/res/layout/layout_tcpclient.xml
@@ -103,6 +103,12 @@
                 android:layout_marginEnd="10dp"
                 android:id="@+id/btn_stop_exam"
                 android:text="缁撴潫鑰冭瘯"/>
+              <Button
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginEnd="10dp"
+                    android:id="@+id/btn_keepalive"
+                    android:text="蹇冭烦"/>
 
         </TableRow>
     </TableLayout>

--
Gitblit v1.8.0