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