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