From 806ed6836b84fbea87d19a0cb4414e120dd9c049 Mon Sep 17 00:00:00 2001
From: fctom1215 <fctom1215@outlook.com>
Date: 星期五, 14 二月 2020 14:30:44 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/endian11/DriveJudge

---
 im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java                    |   10 +++
 app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java     |   21 ++++--
 app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java       |   12 +++
 app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java |    9 ++
 app/src/main/java/safeluck/drive/evaluation/util/Utils.java                 |   74 ++++++++++++++++++++++++
 app/src/main/java/safeluck/drive/evaluation/bean/KeepaliveMessage.java      |    9 ++
 app/src/main/java/safeluck/drive/evaluation/bean/GainStuMessage.java        |   16 +++--
 app/src/main/java/safeluck/drive/evaluation/bean/StartExamMessage.java      |   11 +++
 app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java       |   17 +++--
 9 files changed, 152 insertions(+), 27 deletions(-)

diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java b/app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java
index 06af76c..ffd0b35 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/DriveExamProtocol.java
@@ -2,7 +2,10 @@
 
 import android.util.Log;
 
+import com.anyun.exam.lib.MyLog;
 import com.anyun.im_lib.util.ByteUtil;
+
+import safeluck.drive.evaluation.util.Utils;
 
 /**
  * MyApplication2
@@ -76,7 +79,7 @@
      * @return
      */
     public byte[] toBytes(){
-        byte[] desBytes = new byte[1+16+2+1+1];
+        byte[] desBytes = new byte[1+16+msgBodyLength()+1+1];
         int pos = 0;
 
 
@@ -95,7 +98,8 @@
         System.arraycopy(msgIdBytes,0,desBytes,pos,msgIdBytes.length);
         pos+=msgIdBytes.length;
 
-        //娑堟伅浣撳睘鎬�
+        //娑堟伅浣撳睘鎬� 榛樿涓烘秷鎭綋闀垮害
+        msg_property = msgBodyLength();
         byte[] msg_pro_bytes = ByteUtil.shortGetBytes(msg_property);
         System.arraycopy(msg_pro_bytes,0,desBytes,pos,msg_pro_bytes.length);
         pos+=msg_pro_bytes.length;
@@ -117,16 +121,19 @@
         pos+=messageBodyBytes.length;
 
         //鏍¢獙鐮�
-        // TODO: 2019/12/18 鏍¢獙鐮侀渶瑕佽绠�   杩樻湁杞箟闇�瑕佸鐞�
+        checkCode =   Utils.calCheckCode(ByteUtil.subArray(desBytes,1,pos-1));
         desBytes[pos] = checkCode;
         pos++;
         //鏈熬缁撴潫鏍囪瘑浣�
         desBytes[pos] = MESSAGE_TAIL;
 
-        Log.i(TAG, "鍖呴暱搴�="+(pos+1));
-        Log.i(TAG, "鍖呭唴瀹�: "+ByteUtil.byte2HexStr(desBytes));
-
-        return desBytes;
+        MyLog.i(TAG, "鍘熷鍖呴暱搴�="+(pos+1));
+        MyLog.i(TAG, "鍘熷鍖呭唴瀹�: "+ByteUtil.byte2HexStr(desBytes));
+        byte[] tranferbytes = Utils.transferMeaning(desBytes);
+        MyLog.i(TAG,"杞箟鍚庣殑鍖呭唴瀹癸細"+ByteUtil.byte2HexStr(tranferbytes));
+        return tranferbytes;
     }
 
+    protected abstract short msgBodyLength();
+
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/GainStuMessage.java b/app/src/main/java/safeluck/drive/evaluation/bean/GainStuMessage.java
index 74960fd..b31d4fa 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/GainStuMessage.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/GainStuMessage.java
@@ -8,19 +8,21 @@
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
 public class GainStuMessage extends DriveExamProtocol {
-    // TODO: 2019/12/19
-    /**
-     * 鏋勯�犲嚱鏁�
-     *
-     * @param msg_id 娑堟伅ID
-     */
+
+    private static final int BODY_LENGTH = 0;
+
     public GainStuMessage(short msg_id) {
         super(msg_id);
     }
 
     @Override
+    protected short msgBodyLength() {
+        return BODY_LENGTH;
+    }
+
+    @Override
     protected byte[] createMessageBody() {
 
-        return new byte[0];
+        return new byte[BODY_LENGTH];
     }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/KeepaliveMessage.java b/app/src/main/java/safeluck/drive/evaluation/bean/KeepaliveMessage.java
index f04f4e1..e1fc59f 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/KeepaliveMessage.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/KeepaliveMessage.java
@@ -9,6 +9,8 @@
  */
 public class KeepaliveMessage extends DriveExamProtocol {
 
+
+    private static final int BODY_LENGTH = 0;
 // TODO: 2019/12/19  
 
     public KeepaliveMessage(short msg_id) {
@@ -16,7 +18,12 @@
     }
 
     @Override
+    protected short msgBodyLength() {
+        return BODY_LENGTH;
+    }
+
+    @Override
     protected byte[] createMessageBody() {
-        return new byte[0];
+        return new byte[BODY_LENGTH];
     }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java b/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java
index 5565ee1..52ac0ce 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/RegisterMessage.java
@@ -8,6 +8,8 @@
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
 public class RegisterMessage extends DriveExamProtocol {
+
+    private static final int BODY_LENGTH = 2;
     /**
      * 鏋勯�犲嚱鏁�
      *
@@ -18,10 +20,16 @@
     }
 
     @Override
+    protected short msgBodyLength() {
+        return BODY_LENGTH;
+    }
+
+
+    @Override
     protected byte[] createMessageBody() {
-        byte[] messageBody = new byte[2];
+        byte[] messageBody = new byte[BODY_LENGTH];
         messageBody[0] = 0x65;
-        messageBody[1] = 0x66;
+        messageBody[1] = 0x67;
         return messageBody;
     }
 }
diff --git a/app/src/main/java/safeluck/drive/evaluation/bean/StartExamMessage.java b/app/src/main/java/safeluck/drive/evaluation/bean/StartExamMessage.java
index 37794ff..47a012a 100644
--- a/app/src/main/java/safeluck/drive/evaluation/bean/StartExamMessage.java
+++ b/app/src/main/java/safeluck/drive/evaluation/bean/StartExamMessage.java
@@ -8,6 +8,10 @@
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
 public class StartExamMessage extends DriveExamProtocol {
+
+
+
+    private static final int BODY_LENGTH = 0;
 // TODO: 2019/12/19  
     /**
      * 鏋勯�犲嚱鏁�
@@ -19,7 +23,12 @@
     }
 
     @Override
+    protected short msgBodyLength() {
+        return BODY_LENGTH;
+    }
+
+    @Override
     protected byte[] createMessageBody() {
-        return new byte[0];
+        return new byte[BODY_LENGTH];
     }
 }
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 07df6dc..ae09668 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/MapFragment.java
@@ -209,9 +209,9 @@
         if (canvas2 == null || bmp == null) {
             return;
         }
-        _mActivity.runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
+//        _mActivity.runOnUiThread(new Runnable() {
+//            @Override
+//            public void run() {
                 double base_x = 100, base_y = 100;
                 double max_x = 0, min_x = 0, max_y = 0, min_y = 0;
 
@@ -331,10 +331,13 @@
 
                 // 鎻愪氦鐢诲竷
                 Canvas canvas = holder.lockCanvas();
-                canvas.drawBitmap(bmp, 0, 0, paint);
-                holder.unlockCanvasAndPost(canvas);
-            }
-        });
+                if (canvas != null){
+
+                    canvas.drawBitmap(bmp, 0, 0, paint);
+                    holder.unlockCanvasAndPost(canvas);
+                }
+//            }
+//        });
     }
 
     public void CCL(final int c, final int who) {
diff --git a/app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java b/app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java
index 2af4a2f..9d8bccf 100644
--- a/app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java
+++ b/app/src/main/java/safeluck/drive/evaluation/fragment/TakePhotoFragment.java
@@ -35,6 +35,7 @@
 import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
 
+import android.text.TextUtils;
 import android.util.Log;
 import android.util.SparseIntArray;
 import android.view.LayoutInflater;
@@ -619,7 +620,13 @@
             if (!mCameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
                 throw new RuntimeException("Time out waiting to lock camera opening.");
             }
-            manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler);
+            if(!TextUtils.isEmpty(mCameraId)){
+
+                manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler);
+            }else{
+                MyLog.i(TAG,"CameraID--null");
+
+            }
         } catch (CameraAccessException e) {
             e.printStackTrace();
         } catch (InterruptedException e) {
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 cad654f..a0548a7 100644
--- a/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
+++ b/app/src/main/java/safeluck/drive/evaluation/util/Utils.java
@@ -1,7 +1,11 @@
 package safeluck.drive.evaluation.util;
 
 import android.content.res.Resources;
+import android.util.Log;
 import android.util.TypedValue;
+
+import com.anyun.exam.lib.MyLog;
+import com.anyun.exam.lib.util.ByteUtil;
 
 /**
  * MyApplication2
@@ -10,6 +14,7 @@
  * All Rights Saved! Chongqing AnYun Tech co. LTD
  */
 public class Utils {
+    private static final String TAG = "Utils";
     public static float px2dp(float value){
         return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,value, Resources.getSystem().getDisplayMetrics());
     }
@@ -22,4 +27,73 @@
     public static float dp2Px(int dpValue){
         return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX,dpValue,Resources.getSystem().getDisplayMetrics());
     }
+
+    /**
+     * 骞冲彴鍗忚鐢熸垚鐨勬牎楠岀爜
+     * @param bytes
+     * @return
+     */
+
+    public static byte calCheckCode(byte[] bytes){
+        byte checkCode =0;
+        //銆�鍙備笌杩愮畻鐨勪袱涓�硷紝濡傛灉涓や釜鐩稿簲bit浣嶇浉鍚岋紝鍒欑粨鏋滀负0锛屽惁鍒欎负1銆�
+        for (int i = 0; i < bytes.length; i++) {
+            checkCode ^= bytes[i];
+        }
+
+        return checkCode;
+    }
+
+    /**
+     * 杞箟
+     * 閲囩敤Ox7e琛ㄧず锛岃嫢鏍¢獙鐮併�佹秷鎭ご浠ュ強娑堟伅浣撲腑鍑虹幇0x7e锛屽垯瑕佽繘琛岃浆涔夊鐞嗭紝杞箟瑙勫垯瀹氫箟濡備笅:
+     * 0x7e<鈥斺��>0x7d鍚庣揣璺熶竴涓�0x02锛�
+     * 0x7d<鈥斺��>0x7d鍚庣揣璺熶竴涓�0x01銆�
+     * @param datas
+     * @return
+     */
+    public static byte[] transferMeaning(byte[] datas){
+        byte [] temp = new byte[datas.length*2];
+        int y = 0;
+        temp[y++] = 0x7e;
+        for (int i = 1; i < datas.length-1; i++) {
+            if (datas[i] == 0x7E) {
+                temp[y++] = 0x7D;
+                temp[y++] = 0x02;
+            } else if (datas[i] == 0x7D) {
+                temp[y++] = 0x7D;
+                temp[y++] = 0x01;
+            } else {
+                temp[y++] = datas[i];
+            }
+        }
+        temp[y++] = 0x7e;
+        Log.i(TAG,"杞箟杩囧悗锛�"+ ByteUtil.byte2hex(temp));
+        return temp;
+    }
+
+    /**
+     *鎺ユ敹娑堟伅鏃�:杞箟杩樺師
+     * @param datas
+     * @return
+     */
+    public static byte[] parseMsg(byte[] datas){
+        byte[] temp = new byte[datas.length];
+        int y =0 ;
+        for (int i = 0; i < datas.length; i++) {
+            if (datas[i]==0x7d && datas[i+1]==0x02 ){
+                temp[y++] = 0x7e;
+                i++;
+                continue;
+            }else if (datas[i]==0x7d && datas[i+1]==0x01 ){
+
+                temp[y++] = 0x7d;
+                i++;
+                continue;
+            }else{
+                temp[y++] = datas[i];
+            }
+        }
+        return temp;
+    }
 }
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 7c93921..6b0fb24 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
@@ -1,6 +1,7 @@
 package com.anyun.im_lib.util;
 
 import android.text.TextUtils;
+import android.util.Log;
 
 import java.nio.ByteBuffer;
 import java.nio.CharBuffer;
@@ -15,7 +16,7 @@
  */
 public class ByteUtil {
 
-
+private static final String TAG = "ByteUtil";
     /**
      * @鍔熻兘: BCD鐮佽浆涓�10杩涘埗涓�(闃挎媺浼暟鎹�)
      * @鍙傛暟: BCD鐮�
@@ -69,6 +70,7 @@
             byte b = (byte) a;
             bbt[p] = b;
         }
+        Log.i(TAG, "str2Bcd: "+byte2HexStr(bbt));
         return bbt;
     }
 
@@ -206,4 +208,10 @@
         System.out.println(byte2HexStr(shortGetBytes((short) b)));
     }
 
+    public static byte[] subArray(byte[] srcBytes, int begin, int length) {
+        byte[] bytes = new byte[length];
+        System.arraycopy(srcBytes,begin,bytes,0,length);
+        Log.i(TAG, "subArray: "+byte2HexStr(bytes));
+        return bytes;
+    }
 }

--
Gitblit v1.8.0