平台消息基类取电话号码,删除子类取电话号码的操作;训练模式只发送注册鉴权位置消息,其他不发送;Netty TCP增加重置TCP连接接口;收到单片机sn更新的时候重置tcp
14个文件已修改
134 ■■■■■ 已修改文件
app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/MainActivity.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/app.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/cEventCenter/CEventCenter.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/im/IMSClientBootstrap.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/platformMessage/JK2019MessageBase.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/platformMessage/PlatFormConstant.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/DB/rtktb/RTKConfigUpdateWorker.kt
@@ -12,6 +12,9 @@
import org.json.JSONObject
import safeluck.drive.evaluation.DB.Constant
import safeluck.drive.evaluation.DB.WorkRoomDataBase
import safeluck.drive.evaluation.bean.ExamPlatformData
import safeluck.drive.evaluation.im.IMSClientBootstrap
import safeluck.drive.evaluation.platformMessage.PlatFormConstant
class RTKConfigUpdateWorker(context:Context, workerParams: WorkerParameters) :Worker(context, workerParams){
@@ -21,7 +24,7 @@
    override fun doWork(): Result {
        var data = inputData.getString(Constant.RTK_CONFIG_UPDATE_JSON)
        Log.i(TAG,"更新RTK_config imei phone sn="+data)
        MyLog.i(PlatFormConstant.RTK,"更新RTK_config imei phone sn="+data)
        var imei:String=""
        var phone:String=""
        var sn:String=""
@@ -29,6 +32,7 @@
            var jsonObject: JSONObject? = null
            jsonObject = JSONObject(data)
            sn = jsonObject.getString(Constant.RTK_CONFIG_SN)
            ExamPlatformData.getInstance().setPhone(sn);
            Log.i(TAG,"sn="+sn)
            imei = sn.substring(1)
            Log.i(TAG,"imei="+imei)
@@ -39,6 +43,8 @@
             */
            phone = sn
            Log.i(TAG,"phone="+phone)
            MyLog.i(PlatFormConstant.TAG,"重置TCP连接")
            IMSClientBootstrap.getInstance().resetConnect();
        }
        var rtkConfigDao = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao.also {
            it.update(sn, imei, phone)
app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -139,9 +139,10 @@
            public void onChanged(RTKConfig rtkConfig) {
                MyLog.i(TAG, "RTKConfig Changed: " + (rtkConfig != null ? rtkConfig.toString() : "null"));
                mRTKConfig = rtkConfig;
                if (rtkConfig != null)
                ExamPlatformData.getInstance().setPhone(rtkConfig.getSn());
                    mRTKConfig = rtkConfig;
                synchronized (MainActivity.this){
//                    if (onlySendOnceRTKConfig){
//                        MyLog.i(TAG,"进入 synchronized (MainActivity.this)");
@@ -291,7 +292,6 @@
            JKMessage0100 jkRegisterMessage = new JKMessage0100();
            if (mRTKConfig!=null){
                jkRegisterMessage.phone = ExamPlatformData.getInstance().getPhone();
                jkRegisterMessage.proviceid = mRTKConfig.getProvince();
                jkRegisterMessage.cityid = mRTKConfig.getCity();
                jkRegisterMessage.imei = mRTKConfig.getImei();
@@ -307,7 +307,6 @@
        }else{
            MyLog.i(PlatFormConstant.TAG,"密码存在,已注册过,直接发鉴权消息");
            JKMessage0101 jkMessage0101 = new JKMessage0101();
            jkMessage0101.phone = ExamPlatformData.getInstance().getPhone();
            String des = hexPwd;
            long time =  System.currentTimeMillis()/1000;
            int unsignedInt = Utils.parseUnsignedInt(String.valueOf(time),10);
app/src/main/java/safeluck/drive/evaluation/app.java
@@ -327,7 +327,6 @@
                        CEventCenter.dispatchEvent(Constant.BIND_RTK_SPEED_TOPIC,cmd,0,speed);
                        utc = utc.replace(".","");
                        JKMessage0206 jkMessage0206 = new JKMessage0206();
                        jkMessage0206.phone = ExamPlatformData.getInstance().getPhone();
                        jkMessage0206.alert = 0;
                        jkMessage0206.status = 0;
                        jkMessage0206.jd = longitude;
app/src/main/java/safeluck/drive/evaluation/bean/ExamPlatformData.java
@@ -21,6 +21,7 @@
import safeluck.drive.evaluation.Constant;
import safeluck.drive.evaluation.DB.appstatusdb.AppStatusWorker;
import safeluck.drive.evaluation.app;
import safeluck.drive.evaluation.platformMessage.PlatFormConstant;
import safeluck.drive.evaluation.util.SPUtils;
import safeluck.drive.evaluation.viewmodels.ExamPlatformModel;
import safeluck.drive.evaluation.viewmodels.MainViewModel;
app/src/main/java/safeluck/drive/evaluation/cEventCenter/CEventCenter.java
@@ -172,8 +172,8 @@
            ICEventListener listener = null;
            LinkedList<ICEventListener> listeners = null;
            synchronized (LISTENER_LOCK){
                Log.d(TAG, "dispatchEvent | topic="+topic+"\tmsgCode="+event.getMsgCode()+"\tresultCode="+event.getResultCode()
                +"\tobj="+event.getObj());
//                Log.d(TAG, "dispatchEvent | topic="+topic+"\tmsgCode="+event.getMsgCode()+"\tresultCode="+event.getResultCode()
//                +"\tobj="+event.getObj());
                Object obj = LISTENER_MAP.get(topic);
                if (obj == null){
                    return;
app/src/main/java/safeluck/drive/evaluation/fragment/NetWorkTrainFragment.java
@@ -130,7 +130,6 @@
                    String icStr = jsSpeed.getString("serialno");
                    if (result == 0) {
                        JKMessage0201 jkMessage0201 = new JKMessage0201();
                        jkMessage0201.phone = ExamPlatformData.getInstance().getPhone();
                        if (exam_type==Constant.Chang_di){
                            jkMessage0201.currentExam = 0;
                        }else{
@@ -498,7 +497,6 @@
                currTotalScore = 100;
                //TODO 发送JKMessage0202 给平台,开始考试
                final JKMessage0202 jkMessage0202 = new JKMessage0202();
                jkMessage0202.phone = ExamPlatformData.getInstance().getPhone();
                jkMessage0202.timeBCD = new Date();
                jkMessage0202.ID = ExamPlatformData.getInstance().getID();
@@ -595,7 +593,14 @@
    private void stopExam() {
        MyLog.i(TAG,"结束考试");
        //TODO 发送JKMessage0204给平台 结束考试
        JKMessage0204 jkMessage0204 = new JKMessage0204();
        jkMessage0204.timeBCD = new Date();
        jkMessage0204.score = currTotalScore;
        jkMessage0204.stop = JKMessage0204.SUCC_STOP;
        jkMessage0204.ID = ExamPlatformData.getInstance().getID();
        jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id();
        MessageProcessor.getInstance().sendMessage(jkMessage0204);
        //设置模式为NONE 0
        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE);
        //恢复初始数据
@@ -612,15 +617,7 @@
        ExamPlatformData.getInstance().getTTS().speak("结束考试");
        examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM);
        sendExamJson(0,0);//结束考试 exstart=0
        //TODO 发送JKMessage0204给平台 结束考试
        JKMessage0204 jkMessage0204 = new JKMessage0204();
        jkMessage0204.phone = ExamPlatformData.getInstance().getPhone();
        jkMessage0204.timeBCD = new Date();
        jkMessage0204.score = 10;
        jkMessage0204.stop = JKMessage0204.SUCC_STOP;
        jkMessage0204.ID = ExamPlatformData.getInstance().getID();
        jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id();
        MessageProcessor.getInstance().sendMessage(jkMessage0204);
    }
    private ICEventListener icEventListener = new ICEventListener() {
app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -226,7 +226,6 @@
                break;
            case R.id.btn_start_exam:
                JKMessage0202 jkMessage0202 = new JKMessage0202();
                jkMessage0202.phone = "0314200100000004";
                jkMessage0202.timeBCD = new Date();
                jkMessage0202.curr_exam = 1;
                jkMessage0202.ID = "123456789";
@@ -235,7 +234,6 @@
                break;
            case R.id.btn_fail:
                JKMessage0203 jkMessage0203 = new JKMessage0203();
                jkMessage0203.phone = "0314200100000004";
                jkMessage0203.timeBCD = "200226135444";
                jkMessage0203.fail_item_id = 4;
                jkMessage0203.fail_score = 10;
app/src/main/java/safeluck/drive/evaluation/fragment/TrainFragment.java
@@ -522,7 +522,6 @@
                //TODO 发送JKMessage0202 给平台,开始考试
                final JKMessage0202 jkMessage0202 = new JKMessage0202();
                jkMessage0202.phone = ExamPlatformData.getInstance().getPhone();
                jkMessage0202.timeBCD = new Date();
                jkMessage0202.ID = ExamPlatformData.getInstance().getID();
@@ -621,6 +620,15 @@
    private void stopExam() {
        MyLog.i(TAG,"结束训练");
        //TODO 发送JKMessage0204给平台 结束考试
        JKMessage0204 jkMessage0204 = new JKMessage0204();
        jkMessage0204.timeBCD = new Date();
        jkMessage0204.score = currTotalScore;
        jkMessage0204.stop = JKMessage0204.SUCC_STOP;
        jkMessage0204.ID = ExamPlatformData.getInstance().getID();
        jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id();
        MessageProcessor.getInstance().sendMessage(jkMessage0204);
        //设置模式为NONE 0
        ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE);
@@ -637,15 +645,7 @@
        ExamPlatformData.getInstance().getTTS().speak("结束训练");
        examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM);
        sendExamJson(0,0);//结束考试 exstart=0
        //TODO 发送JKMessage0204给平台 结束考试
        JKMessage0204 jkMessage0204 = new JKMessage0204();
        jkMessage0204.phone = ExamPlatformData.getInstance().getPhone();
        jkMessage0204.timeBCD = new Date();
        jkMessage0204.score = 10;
        jkMessage0204.stop = JKMessage0204.SUCC_STOP;
        jkMessage0204.ID = ExamPlatformData.getInstance().getID();
        jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id();
        MessageProcessor.getInstance().sendMessage(jkMessage0204);
    }
    private ICEventListener icEventListener = new ICEventListener() {
app/src/main/java/safeluck/drive/evaluation/im/IMSClientBootstrap.java
@@ -124,4 +124,17 @@
        }
    }
    /**
     * 重置TCP连接
     * 原来已经init过,传输过host,本方法知识重置连接
     */
    public void resetConnect() {
        if (isActive){
            if (imsClient != null){
                imsClient.resetConnect(false);
            }
        }
    }
}
app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java
@@ -94,7 +94,6 @@
    @Override
    public byte[] getHearbeatMsg() {
        JKMessage0002 jkMessage0002 = new JKMessage0002();
        jkMessage0002.phone = ExamPlatformData.getInstance().getPhone();
        return messageEscaper.escape(jkMessage0002.toBytes());
    }
app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
@@ -75,7 +75,6 @@
                String des = ((JKMessage8100) jk2019MessageBase).des;
                SPUtils.put(app.getAppContext(),SPUtils.DES_HEX_PWD,des);
                JKMessage0101 jkMessage0101 = new JKMessage0101();
//                jkMessage0101.des =((JKMessage8100) jk2019MessageBase).des;
                long time =System.currentTimeMillis()/1000;
                int unsignedInt = Utils.parseUnsignedInt(String.valueOf(time),10);
                MyLog.i(String.format("总秒数(long)=%d,装换成unsigned int= %d",time,unsignedInt));
@@ -120,26 +119,34 @@
                if ( ExamPlatformData.getInstance().getExamplatformStatus() == ExamPlatformData.DEV_LOGIN){
                    if (IMSClientBootstrap.getInstance().isActive()){
                        IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes()));
                    }else{
                        Log.e(TAG, "run: 发送消息失败,未初始化连接NettyTcp");
                    byte[] msgidbytes= ArrayUtils.subArray(msg.toBytes(),2,2);
                    String msgid = BytesUtils.bytesToHexString(msgidbytes);
                    if (canSend(msgid)){
                        if (IMSClientBootstrap.getInstance().isActive()){
                            IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes()));
                        }else{
                            Log.e(TAG, "run: 发送消息失败,未初始化连接NettyTcp");
                        }
                    }
                }else{
//                    JK2019MessageBase jk2019MessageBase = MessageManager.get(msg.toString());
                    byte[] msgidbytes= ArrayUtils.subArray(msg.toBytes(),2,2);
                    String msgid = BytesUtils.bytesToHexString(msgidbytes);
                    Log.i(TAG, "run: msgid="+msgid);
                    if ((msgid.equalsIgnoreCase("0100")) || (msgid.equalsIgnoreCase("0101"))){
                        MyLog.i(PlatFormConstant.TAG,"注册/鉴权消息直接发送,不发送是否登录成功");
                        if (IMSClientBootstrap.getInstance().isActive()){
                            IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes()));
                    if (canSend(msgid)){
                        if ((msgid.equalsIgnoreCase("0100")) || (msgid.equalsIgnoreCase("0101"))){
                            MyLog.i(PlatFormConstant.TAG,"注册/鉴权消息直接发送");
                            if (IMSClientBootstrap.getInstance().isActive()){
                                IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes()));
                            }else{
                                MyLog.i(PlatFormConstant.TAG, "发送消息失败,未初始化连接NettyTcp");
                            }
                        }else{
                            MyLog.i(PlatFormConstant.TAG, "发送消息失败,未初始化连接NettyTcp");
                            MyLog.i(PlatFormConstant.TAG,"登录未成功,不能发送消息="+msgid);
                        }
                    }else{
                        MyLog.i(PlatFormConstant.TAG,"登录未成功,不能发送消息="+msgid);
                    }
                }
@@ -153,4 +160,21 @@
            IMSClientBootstrap.getInstance().addHeartbeat(seconds);
        }
    }
    private boolean canSend(String msgId){
        if (ExamPlatformData.getInstance().getTrainingMode()==ExamPlatformData.TRAINING_MODE){
            //训练模式下 只有几条可以发送
            switch (msgId){
                case "0206":
                case "0100":
                case "0101":
                    return true;
            }
        }else{
            //考试模式下全部都可以发送
            return true;
        }
        return false;
    }
}
app/src/main/java/safeluck/drive/evaluation/platformMessage/JK2019MessageBase.java
@@ -14,6 +14,7 @@
import com.safeluck.aykj.utils.BitState;
import com.safeluck.aykj.utils.BytesUtils;
import safeluck.drive.evaluation.bean.ExamPlatformData;
import safeluck.drive.evaluation.platformMessage.decoder.JWD;
import safeluck.drive.evaluation.platformMessage.decoder.JWDCoder;
import safeluck.drive.evaluation.platformMessage.decoder.Phone;
@@ -99,7 +100,7 @@
    public BitState props = new BitState((short) 0);
    @Order(5)
    @Phone
    public String phone="0314200100000004";
    public String phone= ExamPlatformData.getInstance().getPhone();
    @Order(6)
    @Int16
    public int messageNo;
app/src/main/java/safeluck/drive/evaluation/platformMessage/PlatFormConstant.java
@@ -1,5 +1,7 @@
package safeluck.drive.evaluation.platformMessage;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
public class PlatFormConstant {
@@ -8,4 +10,6 @@
    public static final int  SUCCESS = 0;
    public static final short STU_INFO_SUCC = 1;
    @Nullable
    public static final String RTK = "RTK_Config";
}
app/src/main/java/safeluck/drive/evaluation/worker/TTSWorker.kt
@@ -26,7 +26,6 @@
    var gson:Gson =Gson()
    override fun doWork(): Result {
        val jkMessage0203 = JKMessage0203()
        jkMessage0203.phone = ExamPlatformData.getInstance().phone
        jkMessage0203.ID = ExamPlatformData.getInstance().id
        jkMessage0203.exam_id = ExamPlatformData.getInstance().exam_id
        var ttsInput = inputData.getString(Constant.TTS);