From f680d40e5519c02e4357fd94dfa184b9beff815f Mon Sep 17 00:00:00 2001
From: lizhanwei <Dana_Lee1016@126.com>
Date: 星期四, 07 五月 2020 16:45:18 +0800
Subject: [PATCH] 编码、调试根据协议格式生成一个二维码,采用des加密、然后Base64编码,调试通过

---
 app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt  |    1 
 app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java         |   25 ++++++++
 app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java                  |    2 
 app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java        |   46 +++++++++++---
 app/src/main/java/safeluck/drive/evaluation/util/Utils.java                    |   26 ++++++++
 app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java |   49 ++++++++++------
 6 files changed, 119 insertions(+), 30 deletions(-)

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 aa90196..b87b8ce 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
@@ -63,7 +63,6 @@
             getMap(sn, "yard")
             getMap(sn, "car")
 
-
             MyLog.i(PlatFormConstant.TAG,"閲嶇疆TCP杩炴帴")
             IMSClientBootstrap.getInstance().resetConnect();
         }
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 5940779..4a842ff 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -407,4 +407,29 @@
     public String getCoachID() {
         return coachID;
     }
+
+    /**
+     * 杩斿洖瀛﹀憳鏄惁绛惧埌锛宼rue-宸茬粡绛惧埌
+     */
+    public boolean IsStuSign() {
+        isStuSign =  (boolean) SPUtils.get(app.getAppContext(),SPUtils.STU_SIGN_STATUS,false);
+        return isStuSign;
+    }
+    public void setStuSign(boolean flag){
+        isStuSign = flag;
+        SPUtils.put(app.getAppContext(),SPUtils.STU_SIGN_STATUS,flag);
+    }
+    private boolean isStuSign;
+    /**
+     * 杩斿洖鏁欑粌鏄惁绛惧埌锛宼rue-宸茬粡绛惧埌
+     */
+    public boolean IsCoachSign() {
+        isCoachSign =  (boolean) SPUtils.get(app.getAppContext(),SPUtils.Coach_SIGN_STATUS,false);
+        return isCoachSign;
+    }
+    public void setCoachSign(boolean flag){
+        isCoachSign = flag;
+        SPUtils.put(app.getAppContext(),SPUtils.Coach_SIGN_STATUS,flag);
+    }
+    private boolean isCoachSign;
 }
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 9d5667e..e013251 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -12,6 +12,7 @@
 import android.text.TextUtils;
 import android.text.style.AbsoluteSizeSpan;
 import android.text.style.ForegroundColorSpan;
+import android.util.Base64;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -21,12 +22,10 @@
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
-import android.widget.Toast;
 
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
 import androidx.lifecycle.Observer;
 import androidx.lifecycle.ViewModelProviders;
 import androidx.work.OneTimeWorkRequest;
@@ -34,11 +33,11 @@
 
 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 java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
@@ -48,8 +47,6 @@
 import safeluck.drive.evaluation.Constant;
 import safeluck.drive.evaluation.DB.Student;
 import safeluck.drive.evaluation.DB.WokViewModel;
-import safeluck.drive.evaluation.DB.appstatusdb.AppStatus;
-import safeluck.drive.evaluation.DB.appstatusdb.AppStatusViewModel;
 import safeluck.drive.evaluation.DB.exam_status.ExamStatusInitWorker;
 import safeluck.drive.evaluation.DB.exam_status.ExamStatusViewModel;
 import safeluck.drive.evaluation.DB.failitems.FailedProjViewModel;
@@ -60,22 +57,16 @@
 import safeluck.drive.evaluation.DB.exam_status.ExamStatus;
 import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.bean.ScoreBean;
-import safeluck.drive.evaluation.bean.SimulateNightBean;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
-import safeluck.drive.evaluation.customview.ArrowView;
-import safeluck.drive.evaluation.customview.HouseView;
-import safeluck.drive.evaluation.customview.LoadProgressDialog;
 import safeluck.drive.evaluation.customview.QRCodeDialog;
 import safeluck.drive.evaluation.customview.SelectDialog;
-import safeluck.drive.evaluation.httpmodule.RetrofitCreator;
 import safeluck.drive.evaluation.im.MessageProcessor;
 import safeluck.drive.evaluation.platformMessage.JKMessage0201;
 import safeluck.drive.evaluation.platformMessage.JKMessage0202;
 import safeluck.drive.evaluation.platformMessage.JKMessage0204;
 import safeluck.drive.evaluation.platformMessage.PlatFormConstant;
 import safeluck.drive.evaluation.util.Utils;
-import safeluck.drive.evaluation.viewmodels.TimeViewModel;
 
 /**
  * 鑱旂綉璁粌UI
@@ -536,6 +527,7 @@
         btn_ids.add(R.id.btn_10);
 
         view.findViewById(R.id.iv_head).setOnClickListener(this);
+        view.findViewById(R.id.iv_coach_head).setOnClickListener(this);
         ((TextView)view.findViewById(R.id.tv_score_tip)).setText("褰撳墠鑰冭瘯寰楀垎");
         av_curve = view.findViewById(R.id.av3);
         av_park = view.findViewById(R.id.av2);
@@ -580,7 +572,6 @@
 
     }
 
-private LoadProgressDialog loadProgressDialog;
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
@@ -634,16 +625,38 @@
                 break;
 
             case R.id.iv_head:
-                MyLog.i(PlatFormConstant.HTTPTAG,"绛惧埌");
-                loadProgressDialog = LoadProgressDialog.newInstance("璇风◢鍚�...");
-                loadProgressDialog.setStyle(DialogFragment.STYLE_NORMAL,R.style.Dialog_FullScreen);
-                loadProgressDialog.showNow(getFragmentManager(),"loadingdiaolog");
+                MyLog.i(TAG,"瀛﹀憳绛惧埌");
+                if (ExamPlatformData.getInstance().IsStuSign()){
+                    ExamPlatformData.getInstance().setStuSign(false);
+                    qrcode(1,false);
+                }else{
+                    ExamPlatformData.getInstance().setStuSign(true);
+                    qrcode(1,true);
+                }
+                break;
+            case R.id.iv_coach_head:
+                MyLog.i(PlatFormConstant.HTTPTAG,"鏁欑粌绛惧埌");
+                if (ExamPlatformData.getInstance().IsCoachSign()){
+                    ExamPlatformData.getInstance().setCoachSign(false);
+                    qrcode(0,false);
+                }else{
+                    ExamPlatformData.getInstance().setCoachSign(true);
+                    qrcode(0,true);
+                }
 
-                //浠庢湇鍔″櫒鑾峰彇鐢ㄤ簬鐢熸垚绛惧埌浜岀淮鐮佺殑url
                 break;
         }
     }
-
+    private void qrcode(int type,boolean isSign) {
+        content = "87,"+String.valueOf(type)+ ","+ExamPlatformData.getInstance().getPhone()
+                +(isSign?",signin":",signout");
+        Log.i(TAG,String.format("浜岀淮鐮佸唴瀹癸細%s",content));
+        byte[] bytes = Utils.qrencrypt(content.getBytes(),"safeluck");
+        String str = Base64.encodeToString(bytes,Base64.DEFAULT);
+        Log.i(TAG,"base64鍔犲瘑鍚庣殑瀛楃涓�="+str);
+        QRCodeDialog qrCodeDialog = QRCodeDialog.newInstance(str);
+        qrCodeDialog.show(getFragmentManager(),"qrdialog" );
+    }
     private void sendJK0202(int type) {
 
         final JKMessage0202 jkMessage0202 = new JKMessage0202();
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 b48e1f5..b16bf92 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -21,6 +21,7 @@
 import android.text.TextUtils;
 import android.text.style.AbsoluteSizeSpan;
 import android.text.style.ForegroundColorSpan;
+import android.util.Base64;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
@@ -41,6 +42,7 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
@@ -62,19 +64,16 @@
 import safeluck.drive.evaluation.adapter.ScoreAdapter;
 import safeluck.drive.evaluation.bean.ExamPlatformData;
 import safeluck.drive.evaluation.bean.ScoreBean;
-import safeluck.drive.evaluation.bean.SimulateNightBean;
 import safeluck.drive.evaluation.cEventCenter.CEventCenter;
 import safeluck.drive.evaluation.cEventCenter.ICEventListener;
-import safeluck.drive.evaluation.customview.ArrowView;
-import safeluck.drive.evaluation.customview.HouseView;
 import safeluck.drive.evaluation.customview.LoadProgressDialog;
+import safeluck.drive.evaluation.customview.QRCodeDialog;
 import safeluck.drive.evaluation.customview.SelectDialog;
 import safeluck.drive.evaluation.im.MessageProcessor;
 import safeluck.drive.evaluation.platformMessage.JKMessage0201;
 import safeluck.drive.evaluation.platformMessage.JKMessage0202;
-import safeluck.drive.evaluation.util.DimenUtil;
+import safeluck.drive.evaluation.platformMessage.PlatFormConstant;
 import safeluck.drive.evaluation.util.Utils;
-import safeluck.drive.evaluation.viewmodels.TimeViewModel;
 
 /**鍗曟満璁粌UI
  * MyApplication2
@@ -107,7 +106,7 @@
     private TextView tv_speed,tv_total_score,tv_name
             ,tv_start_time,tv_coach_name;
     private double speed=0.0;
-    private ImageView iv_head;
+    private ImageView iv_head,iv_coach_head;
     WokViewModel wokViewModel;
 
     private int currTotalScore = 100;
@@ -117,7 +116,6 @@
     String icson;//杩斿洖鐨刬c鍗′俊鎭� json
     private String content;//鐢ㄤ互鐢熸垚浜岀淮鐮佺殑鍐呭
 
-    private LoadProgressDialog loadProgressDialog;
 
 private List<Integer> btn_ids = new ArrayList<Integer>();
 
@@ -517,6 +515,7 @@
 
 
         view.findViewById(R.id.iv_head).setOnClickListener(this);
+        view.findViewById(R.id.iv_coach_head).setOnClickListener(this);
         av_curve = view.findViewById(R.id.av3);
         av_park = view.findViewById(R.id.av2);
         av_podao = view.findViewById(R.id.av1);
@@ -610,14 +609,39 @@
                 }
                 break;
             case R.id.iv_head:
-                MyLog.i(TAG,"绛惧埌锛岃幏鍙栬韩浠借瘉鐗╃悊鍗″彿");
-                loadProgressDialog = LoadProgressDialog.newInstance("璇风◢鍚�...");
-                loadProgressDialog.setStyle(DialogFragment.STYLE_NORMAL,R.style.Dialog_FullScreen);
-                loadProgressDialog.showNow(getFragmentManager(),"loadingdiaolog");
+                MyLog.i(TAG,"瀛﹀憳绛惧埌");
+                if (ExamPlatformData.getInstance().IsStuSign()){
+                    ExamPlatformData.getInstance().setStuSign(false);
+                    qrcode(1,false);
+                }else{
+                    ExamPlatformData.getInstance().setStuSign(true);
+                    qrcode(1,true);
+                }
+
+                break;
+            case R.id.iv_coach_head:
+                MyLog.i(PlatFormConstant.HTTPTAG,"鏁欑粌绛惧埌");
+                if (ExamPlatformData.getInstance().IsCoachSign()){
+                    ExamPlatformData.getInstance().setCoachSign(false);
+                    qrcode(0,false);
+                }else{
+                    ExamPlatformData.getInstance().setCoachSign(true);
+                    qrcode(0,true);
+                }
                 break;
         }
     }
 
+    private void qrcode(int type,boolean isSign) {
+        content = "87,"+String.valueOf(type)+ ","+ExamPlatformData.getInstance().getPhone()
+                +(isSign?",signin":",signout");
+        Log.i(TAG,String.format("浜岀淮鐮佸唴瀹癸細%s",content));
+        byte[] bytes = Utils.qrencrypt(content.getBytes(Charset.forName("utf-8")),"safeluck");
+        String str = Base64.encodeToString(bytes,Base64.DEFAULT);
+        QRCodeDialog qrCodeDialog = QRCodeDialog.newInstance(str);
+        qrCodeDialog.show(getFragmentManager(),"qrdialog" );
+    }
+
     private void sendJK0202(int type) {
 
         final JKMessage0202 jkMessage0202 = new JKMessage0202();
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 7e8e818..102995c 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/SPUtils.java
@@ -23,6 +23,8 @@
     public static final String TRAIN_MODE = "training_mode";
     public static final String FAIL_PROJ_SNS = "failed_projs_sns";
     public static final String ROAD_MAP_PATH = "road_map_path";
+    public static final String STU_SIGN_STATUS = "stu_sign_";
+    public static final String Coach_SIGN_STATUS = "coach_sign_";
 
     /**
      * 淇濆瓨鏁版嵁鐨勬柟娉曪紝鎴戜滑闇�瑕佹嬁鍒颁繚瀛樻暟鎹殑鍏蜂綋绫诲瀷锛岀劧鍚庢牴鎹被鍨嬭皟鐢ㄤ笉鍚岀殑淇濆瓨鏂规硶
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 b93b924..b7e43f5 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
@@ -14,6 +14,7 @@
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.math.BigDecimal;
+import java.nio.charset.Charset;
 import java.security.SecureRandom;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -34,6 +35,7 @@
 import javax.crypto.SecretKey;
 import javax.crypto.SecretKeyFactory;
 import javax.crypto.spec.DESKeySpec;
+import javax.crypto.spec.IvParameterSpec;
 
 import safeluck.drive.evaluation.bean.Point;
 
@@ -275,6 +277,30 @@
             e.printStackTrace();
         }
         return null;
+    }    /**
+     * 浜岀淮鐮佸姞瀵�
+     * @param datasource byte[]
+     * @param password String
+     * @return byte[]
+     */
+    public static  byte[] qrencrypt(byte[] datasource, String password) {
+        try{
+            Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
+            DESKeySpec desKeySpec = new DESKeySpec(password.getBytes());
+            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
+            SecretKey securekey = keyFactory.generateSecret(desKeySpec);
+            IvParameterSpec desKey = new IvParameterSpec(password.getBytes());
+            //鍒涘缓涓�涓瘑鍖欏伐鍘傦紝鐒跺悗鐢ㄥ畠鎶奃ESKeySpec杞崲鎴�
+            //Cipher瀵硅薄瀹為檯瀹屾垚鍔犲瘑鎿嶄綔
+            //鐢ㄥ瘑鍖欏垵濮嬪寲Cipher瀵硅薄
+            cipher.init(Cipher.ENCRYPT_MODE, securekey, desKey);
+            //鐜板湪锛岃幏鍙栨暟鎹苟鍔犲瘑
+            //姝e紡鎵ц鍔犲瘑鎿嶄綔
+            return cipher.doFinal(datasource);
+        }catch(Throwable e){
+            e.printStackTrace();
+        }
+        return null;
     }
     /**
      * 瑙e瘑

--
Gitblit v1.8.0