app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/MainActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/app.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/safeluck/drive/evaluation/util/Utils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
im_lib/src/main/java/com/anyun/im_lib/HeartbeatHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
im_lib/src/main/java/com/anyun/im_lib/interf/IMSClientInteface.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
im_lib/src/main/java/com/anyun/im_lib/listener/OnEventListener.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/safeluck/drive/evaluation/DB/appstatusdb/AppStatusWorker.java
@@ -18,6 +18,7 @@ import safeluck.drive.evaluation.Constant; import safeluck.drive.evaluation.DB.WorkRoomDataBase; import safeluck.drive.evaluation.platformMessage.PlatFormConstant; public class AppStatusWorker extends Worker { @@ -35,7 +36,7 @@ public Result doWork() { String[] str = getInputData().getStringArray(Constant.APP_STATUS); JSONObject jsonObject = null; Log.i(TAG,"doWork:"+str[0]+": "+str[1]); MyLog.i(PlatFormConstant.TAG,"AppStatusWorker:"+str[0]+": "+str[1]); try { jsonObject = new JSONObject(str[1]); switch (str[0]) { app/src/main/java/safeluck/drive/evaluation/MainActivity.java
@@ -368,12 +368,14 @@ JKMessage0101 jkMessage0101 = new JKMessage0101(); jkMessage0101.phone = ExamPlatformData.getInstance().getPhone(); String des = hexPwd; int time = (int) System.currentTimeMillis(); jkMessage0101.timestamp = time; long time = System.currentTimeMillis()/1000; int unsignedInt = Utils.parseUnsignedInt(String.valueOf(time),10); MyLog.i(String.format("总秒数(long)=%d,装换成unsigned int= %d",time,unsignedInt)); jkMessage0101.timestamp = unsignedInt; byte[] miwen = Utils.encrypt(com.anyun.im_lib.util.ByteUtil.intGetBytes(time),des); MyLog.i(PlatFormConstant.TAG,"鉴权密文="+BytesUtils.bytesToHexString(miwen)+" time="+time); byte[] miwen = Utils.encrypt(com.anyun.im_lib.util.ByteUtil.intGetBytes(unsignedInt),des); MyLog.i(PlatFormConstant.TAG,"鉴权密文="+BytesUtils.bytesToHexString(miwen)+" time="+unsignedInt); jkMessage0101.des = BytesUtils.bytesToHexString(miwen); MessageProcessor.getInstance().sendMessage(jkMessage0101); app/src/main/java/safeluck/drive/evaluation/app.java
@@ -306,49 +306,53 @@ CEventCenter.dispatchEvent(Constant.BIND_SPEED_TOPIC,cmd,0,json); break; case Constant.RTK_INFO: try { JSONObject jsSpeed = new JSONObject(json); double latitude = jsSpeed.getDouble("latitude"); double longitude = jsSpeed.getDouble("longitude"); double altitude = jsSpeed.getDouble("altitude"); double speed = jsSpeed.getDouble("speed"); int qf = jsSpeed.getInt("qf"); double track_ture = jsSpeed.getDouble("track_ture"); String utc = jsSpeed.getString("utc"); 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; jkMessage0206.wd = latitude; jkMessage0206.gaoCheng = (int)altitude; jkMessage0206.speed = speed; jkMessage0206.fangXiang = (int)track_ture; jkMessage0206.rf = qf; if (utc.length()>16){ utc = utc.substring(0,16); } jkMessage0206.timeBCD = utc; jkMessage0206.json =json; jkMessage0206.length = jkMessage0206.json.length(); AttachInfo attachInfo = new AttachInfo(); attachInfo.attach_message_id = Integer.parseInt(String.valueOf(0x40)); attachInfo.attach_message_length = 4; if (attachInfo.attach_message_id == 0x41){ attachInfo.attach_data="00000000"; }else{ if (ExamPlatformData.getInstance().getExamplatformStatus()==ExamPlatformData.DEV_LOGIN){ try { JSONObject jsSpeed = new JSONObject(json); double latitude = jsSpeed.getDouble("latitude"); double longitude = jsSpeed.getDouble("longitude"); double altitude = jsSpeed.getDouble("altitude"); double speed = jsSpeed.getDouble("speed"); int qf = jsSpeed.getInt("qf"); double track_ture = jsSpeed.getDouble("track_ture"); String utc = jsSpeed.getString("utc"); 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; jkMessage0206.wd = latitude; jkMessage0206.gaoCheng = (int)altitude; jkMessage0206.speed = speed; jkMessage0206.fangXiang = (int)track_ture; jkMessage0206.rf = qf; if (utc.length()>16){ utc = utc.substring(0,16); } jkMessage0206.timeBCD = utc; jkMessage0206.json =json; jkMessage0206.length = jkMessage0206.json.length(); // MyLog.i("地理坐标长度="+jkMessage0206.length); AttachInfo attachInfo = new AttachInfo(); attachInfo.attach_message_id = Integer.parseInt(String.valueOf(0x40)); attachInfo.attach_message_length = 4; if (attachInfo.attach_message_id == 0x41){ attachInfo.attach_data="00000000"; }else{ //18个字节 ascii attachInfo.attach_data="303030303030303030303030303030303030"; //18个字节 ascii attachInfo.attach_data="303030303030303030303030303030303030"; } jkMessage0206.attachInfo = attachInfo; MessageProcessor.getInstance().sendMessage(jkMessage0206); } catch (JSONException e) { e.printStackTrace(); } jkMessage0206.attachInfo = attachInfo; MessageProcessor.getInstance().sendMessage(jkMessage0206); } catch (JSONException e) { e.printStackTrace(); } break; app/src/main/java/safeluck/drive/evaluation/im/IMSEventListener.java
@@ -98,4 +98,9 @@ return messageEscaper.escape(jkMessage0002.toBytes()); } @Override public boolean isLogin() { return ExamPlatformData.getInstance().getExamplatformStatus()==ExamPlatformData.DEV_LOGIN?true:false; } } app/src/main/java/safeluck/drive/evaluation/im/MessageProcessor.java
@@ -75,10 +75,12 @@ SPUtils.put(app.getAppContext(),SPUtils.DES_HEX_PWD,des); JKMessage0101 jkMessage0101 = new JKMessage0101(); // jkMessage0101.des =((JKMessage8100) jk2019MessageBase).des; int time =(int) System.currentTimeMillis(); jkMessage0101.timestamp = time; byte[] miwen =Utils.encrypt(ByteUtil.intGetBytes(time),des); MyLog.i(PlatFormConstant.TAG,"鉴权密文="+BytesUtils.bytesToHexString(miwen)+" time="+time); long time =System.currentTimeMillis()/1000; int unsignedInt = Utils.parseUnsignedInt(String.valueOf(time),10); MyLog.i(String.format("总秒数(long)=%d,装换成unsigned int= %d",time,unsignedInt)); jkMessage0101.timestamp = unsignedInt; byte[] miwen =Utils.encrypt(ByteUtil.intGetBytes(unsignedInt),des); MyLog.i(PlatFormConstant.TAG,"鉴权密文="+BytesUtils.bytesToHexString(miwen)+" time="+unsignedInt); jkMessage0101.des = BytesUtils.bytesToHexString(miwen); sendMessage(jkMessage0101); ExamPlatformData.getInstance().setExamplatformStatus(ExamPlatformData.DEV_REGISTERED); @@ -92,6 +94,7 @@ MyLog.i(PlatFormConstant.TAG,"鉴权成功"); ExamPlatformData.getInstance().setExamplatformStatus(ExamPlatformData.DEV_LOGIN); }else{ MyLog.i(PlatFormConstant.TAG,"收到了鉴权消息,但鉴权不成功"); ExamPlatformData.getInstance().setExamplatformStatus(ExamPlatformData.DEV_NOT_LOGIN); } }else if (jk2019MessageBase instanceof JKMessage8201){ @@ -112,11 +115,29 @@ @Override public void run() { if (IMSClientBootstrap.getInstance().isActive()){ IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes())); if ( ExamPlatformData.getInstance().getExamplatformStatus() == ExamPlatformData.DEV_LOGIN){ if (IMSClientBootstrap.getInstance().isActive()){ IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes())); }else{ Log.e(TAG, "run: 发送消息失败,未初始化连接NettyTcp"); } }else{ Log.e(TAG, "run: 发送消息失败,未初始化连接NettyTcp"); JK2019MessageBase jk2019MessageBase = MessageManager.get(msg.toString()); if ((jk2019MessageBase instanceof JKMessage0100) || (jk2019MessageBase instanceof JKMessage0101)){ if (IMSClientBootstrap.getInstance().isActive()){ IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes())); }else{ Log.e(TAG, "run: 发送消息失败,未初始化连接NettyTcp"); } }else{ MyLog.i(PlatFormConstant.TAG,"登录未成功,不能发送消息="+BytesUtils.bytesToHexString(ByteUtil.intGetBytes(jk2019MessageBase.messageId))); } } } }); } app/src/main/java/safeluck/drive/evaluation/util/Utils.java
@@ -1,6 +1,7 @@ package safeluck.drive.evaluation.util; import android.content.res.Resources; import android.os.SystemClock; import android.util.Log; import android.util.TypedValue; @@ -115,16 +116,16 @@ return str.matches(regx); } public static void main(String []args){ String str = "EB00020000031420010000000400A5"; // String str = "7EEB00020000031420010000000400A5007E"; String str1 = "EB000200000314200100000004030D00"; // String str1 = "7EEB000200000314200100000004030D00D57E"; String str2 = "EB000200000314200100000004035000"; byte [] dtas=BytesUtils.hexStringToBytes(str); byte checkcode = calCheckCode(dtas); System.out.println(BytesUtils.toHexString(checkcode)); } // public static void main(String []args){ // String str = "EB00020000031420010000000400A5"; //// String str = "7EEB00020000031420010000000400A5007E"; // String str1 = "EB000200000314200100000004030D00"; //// String str1 = "7EEB000200000314200100000004030D00D57E"; // String str2 = "EB000200000314200100000004035000"; // byte [] dtas=BytesUtils.hexStringToBytes(str); // byte checkcode = calCheckCode(dtas); // System.out.println(BytesUtils.toHexString(checkcode)); // } @@ -271,4 +272,46 @@ return cipher.doFinal(src); } public static int parseUnsignedInt(String s, int radix) throws NumberFormatException { if (s == null) { throw new NumberFormatException("null"); } int len = s.length(); if (len > 0) { char firstChar = s.charAt(0); if (firstChar == '-') { throw new NumberFormatException(String.format("Illegal leading minus sign " + "on unsigned string %s.", s)); } else { if (len <= 5 || // Integer.MAX_VALUE in Character.MAX_RADIX is 6 digits (radix == 10 && len <= 9) ) { // Integer.MAX_VALUE in base 10 is 10 digits return Integer.parseInt(s, radix); } else { long ell = Long.parseLong(s, radix); if ((ell & 0xffff_ffff_0000_0000L) == 0) { return (int) ell; } else { throw new NumberFormatException(String.format("String value %s exceeds " + "range of unsigned int.", s)); } } } } else { throw new NumberFormatException("For input string: \"" + s + "\""); } } public static void main(String[] args){ long longCurrTIme = System.currentTimeMillis()/1000; long CurrTIme = System.currentTimeMillis(); System.out.println("longCurrTIme="+longCurrTIme); System.out.println("intCurrTIme="+CurrTIme); int unsignedTime= parseUnsignedInt(String.valueOf(longCurrTIme),10); System.out.println("unsigned int time = "+unsignedTime); } } im_lib/src/main/java/com/anyun/im_lib/HeartbeatHandler.java
@@ -36,8 +36,13 @@ if (heartbeatMsg == null) { return; } MyLog.i("发送心跳消息,message=" + BytesUtils.bytesToHexString(heartbeatMsg) + "当前心跳间隔为:" +imsClient.getHeartbeatInterval() + "ms\n"); imsClient.sendMsg(heartbeatMsg, false); if (imsClient.isLogin()){ MyLog.i("发送心跳消息,message=" + BytesUtils.bytesToHexString(heartbeatMsg) + "当前心跳间隔为:" +imsClient.getHeartbeatInterval() + "ms\n"); imsClient.sendMsg(heartbeatMsg, false); }else { MyLog.i("设备登录未成功不能发送心跳消息"); } } } } im_lib/src/main/java/com/anyun/im_lib/interf/IMSClientInteface.java
@@ -116,4 +116,7 @@ byte[] getHeartbeatMsg(); void addHeartbeatHandler(int seconds); //设备是否登录,只有登录-true 才需要发心跳消息 boolean isLogin(); } im_lib/src/main/java/com/anyun/im_lib/listener/OnEventListener.java
@@ -61,4 +61,6 @@ byte[] getRegisterMessage(); byte[] getHearbeatMsg(); boolean isLogin(); } im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java
@@ -428,6 +428,14 @@ _addHeartbeatHandler(); } @Override public boolean isLogin() { if (mOnEventListener != null){ return mOnEventListener.isLogin(); } return false; } public int getHeartbeatInterval() { return this.heartBeatInterval; }