app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/platformMessage/StartExam2Server.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/platformMessage/StopExamMessage.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/platformMessage/UploadPosMessage.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/platformMessage/UploadStuItem.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -5,49 +5,25 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import android.speech.tts.TextToSpeech; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.widget.AppCompatEditText; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProviders; import androidx.work.OneTimeWorkRequest; import androidx.work.WorkManager; import com.anyun.exam.lib.util.ByteUtil; import com.anyun.exam.lib.util.Speaker; import com.google.android.material.textfield.TextInputEditText; import java.util.List; import java.util.Locale; import java.util.Random; import me.yokeyword.fragmentation.SupportFragment; import safeluck.drive.evaluation.DB.Student; import safeluck.drive.evaluation.DB.WokViewModel; import safeluck.drive.evaluation.DB.WorkRoomDataBase; import safeluck.drive.evaluation.DB.appstatusdb.AppStatusInitWork; import safeluck.drive.evaluation.DB.criterias.CriteriaForI; import safeluck.drive.evaluation.DB.criterias.viewmodel.CriteriaIViewModel; import safeluck.drive.evaluation.DB.exam_status.ExamStatus; import safeluck.drive.evaluation.DB.exam_status.ExamStatusInitWorker; import safeluck.drive.evaluation.DB.exam_status.ExamStatusViewModel; import safeluck.drive.evaluation.DB.failitems.FailedProj; import safeluck.drive.evaluation.DB.failitems.FailedProj_select; import safeluck.drive.evaluation.DB.gps.GpsInfoWorker; import safeluck.drive.evaluation.R; import safeluck.drive.evaluation.bean.RegisterMessage; import safeluck.drive.evaluation.platformMessage.RegisterMessage; import safeluck.drive.evaluation.im.IMSClientBootstrap; import safeluck.drive.evaluation.im.MessageProcessor; import safeluck.drive.evaluation.tcp.ConnectThread; import safeluck.drive.evaluation.util.Utils; /** * MyApplication2 app/src/main/java/safeluck/drive/evaluation/platformMessage/StartExam2Server.java
New file @@ -0,0 +1,85 @@ package safeluck.drive.evaluation.platformMessage; import android.text.TextUtils; import com.anyun.im_lib.util.ByteUtil; /** * 上报开始考试 */ public class StartExam2Server extends DriveExamProtocol { private static final short BODY_LENGTH = 29; private String ID;//身份证 private String BCDStr;//时间BCD[6] YYMMDDhhmmss private int exam_id;// DWORD 4字节 唯一考试ID标志 private short examaCourse = 0; private int currPos = 0; /** * 构造函数 * * @param msg_id 消息ID */ public StartExam2Server(short msg_id) { super(msg_id); } @Override protected byte[] createMessageBody() { byte [] messageBody = new byte[BODY_LENGTH]; byte[] idBytes = !TextUtils.isEmpty(ID)?ID.getBytes():"".getBytes(); byte[] timeStampBCD = ByteUtil.str2Bcd(BCDStr); byte[] examIdBytes = ByteUtil.intGetBytes(exam_id); byte[] examBytes = ByteUtil.shortGetByte(examaCourse); System.arraycopy(idBytes,0,messageBody,currPos,idBytes.length); currPos += 18; System.arraycopy(timeStampBCD,0,messageBody,currPos,timeStampBCD.length); currPos += timeStampBCD.length; System.arraycopy(examIdBytes,0,messageBody,currPos,examIdBytes.length); currPos += 4; System.arraycopy(examBytes,0,messageBody,currPos,examBytes.length); return messageBody; } @Override protected short msgBodyLength() { return BODY_LENGTH; } public String getID() { return ID; } public void setID(String ID) { this.ID = ID; } public String getBCDStr() { return BCDStr; } public void setBCDStr(String BCDStr) { this.BCDStr = BCDStr; } public int getExam_id() { return exam_id; } public void setExam_id(int exam_id) { this.exam_id = exam_id; } public short getExamaCourse() { return examaCourse; } public void setExamaCourse(short examaCourse) { this.examaCourse = examaCourse; } } app/src/main/java/safeluck/drive/evaluation/platformMessage/StopExamMessage.java
New file @@ -0,0 +1,28 @@ package safeluck.drive.evaluation.platformMessage; /** * 上报结束考试 */ public class StopExamMessage extends DriveExamProtocol { private static final short BODY_LENGTH = 29; /** * 构造函数 * * @param msg_id 消息ID */ public StopExamMessage(short msg_id) { super(msg_id); } @Override protected byte[] createMessageBody() { byte [] messageBody = new byte[BODY_LENGTH]; return messageBody; } @Override protected short msgBodyLength() { return BODY_LENGTH; } } app/src/main/java/safeluck/drive/evaluation/platformMessage/UploadPosMessage.java
New file @@ -0,0 +1,28 @@ package safeluck.drive.evaluation.platformMessage; /** * 位置上报 */ public class UploadPosMessage extends DriveExamProtocol { private static final short BODY_LENGTH = 29; /** * 构造函数 * * @param msg_id 消息ID */ public UploadPosMessage(short msg_id) { super(msg_id); } @Override protected byte[] createMessageBody() { byte [] messageBody = new byte[BODY_LENGTH]; return messageBody; } @Override protected short msgBodyLength() { return BODY_LENGTH; } } app/src/main/java/safeluck/drive/evaluation/platformMessage/UploadStuItem.java
New file @@ -0,0 +1,127 @@ package safeluck.drive.evaluation.platformMessage; import android.text.TextUtils; import com.anyun.im_lib.util.ByteUtil; import java.text.SimpleDateFormat; /** * 上报学员单项扣分项目 */ public class UploadStuItem extends DriveExamProtocol { private static final short BODY_LENGTH = 30; private short reasonLength = 0; private int currPos = 0; private String ID;//身份证 private String BCDStr;//时间BCD[6] YYMMDDhhmmss private int exam_id;// DWORD 4字节 唯一考试ID标志 private short fail_item_id;//扣分项目编号 1字节 private short score;//扣分分数 一字节 private String reason;//扣分原因 public String getID() { return ID; } public void setID(String ID) { this.ID = ID; } public int getExam_id() { return exam_id; } public void setExam_id(int exam_id) { this.exam_id = exam_id; } public short getFail_item_id() { return fail_item_id; } public void setFail_item_id(short fail_item_id) { this.fail_item_id = fail_item_id; } public short getScore() { return score; } public void setScore(short score) { this.score = score; } public String getReason() { return reason; } public void setReason(String reason) { this.reason = reason; } public String getBCDStr() { return BCDStr; } /** * 设置时间 * 形如"200217020618"字符串 * @param BCDStr */ public void setBCDStr(String BCDStr) { this.BCDStr = BCDStr; } /** * 构造函数 * * @param msg_id 消息ID */ public UploadStuItem(short msg_id) { super(msg_id); } @Override protected byte[] createMessageBody() { byte [] messageBody = new byte[BODY_LENGTH+reasonLength]; byte[] idBytes = !TextUtils.isEmpty(ID)?ID.getBytes():"".getBytes(); byte[] timeStampBCD = ByteUtil.str2Bcd(BCDStr); byte[] examIdBytes = ByteUtil.intGetBytes(exam_id); byte[] fail_item_idBytes = ByteUtil.shortGetByte(fail_item_id); byte[] score_bytes = ByteUtil.shortGetByte(score); byte[] reasonBytes = !TextUtils.isEmpty(reason)?reason.getBytes():"".getBytes(); reasonLength = (short) reasonBytes.length; System.arraycopy(idBytes,0,messageBody,currPos,idBytes.length); currPos += 18; System.arraycopy(timeStampBCD,0,messageBody,currPos,timeStampBCD.length); currPos += timeStampBCD.length; System.arraycopy(examIdBytes,0,messageBody,currPos,examIdBytes.length); currPos += 4; System.arraycopy(fail_item_idBytes,0,messageBody,currPos,fail_item_idBytes.length); currPos += 1; System.arraycopy(score_bytes,0,messageBody,currPos,score_bytes.length); currPos += 1; System.arraycopy(reasonBytes,0,messageBody,currPos,reasonLength); return messageBody; } @Override protected short msgBodyLength() { return (short) (BODY_LENGTH+reasonLength); } }