app/src/main/java/safeluck/drive/evaluation/app.java
@@ -22,16 +22,19 @@ import com.anyun.exam.lib.MyLog; import com.anyun.exam.lib.crash.CrashHandler; import com.anyun.im_lib.ExecutorServiceFactory; import com.anyun.im_lib.listener.IMSConnectStatusCallback; import com.facebook.stetho.Stetho; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.safeluck.aykj.utils.BytesUtils; import org.json.JSONException; import org.json.JSONObject; import java.util.Date; import java.util.Random; import safeluck.drive.evaluation.DB.WorkRoomDataBase; @@ -45,7 +48,14 @@ import safeluck.drive.evaluation.DB.rtktb.RTKWorkRepository; import safeluck.drive.evaluation.cEventCenter.CEvent; import safeluck.drive.evaluation.cEventCenter.CEventCenter; import safeluck.drive.evaluation.im.IMSClientBootstrap; import safeluck.drive.evaluation.im.IMSConnectStatusListener; import safeluck.drive.evaluation.im.MessageProcessor; import safeluck.drive.evaluation.platformMessage.JKMessage0100; import safeluck.drive.evaluation.platformMessage.JKMessage0101; import safeluck.drive.evaluation.platformMessage.JKMessage0203; import safeluck.drive.evaluation.util.FileUtil; import safeluck.drive.evaluation.util.SPUtils; import safeluck.drive.evaluation.util.SystemUtil; /** @@ -54,7 +64,7 @@ * 邮箱:632393724@qq.com * All Rights Saved! Chongqing AnYun Tech co. LTD */ public class app extends Application implements IAYExamListener { public class app extends Application implements IAYExamListener , IMSConnectStatusCallback { private static final String TAG = "app"; private Gson gson; @@ -102,9 +112,12 @@ } }).start(); //TODO 进行tcp连接 // 进行tcp连接 String userId = "100002"; String token = "token_" + userId; String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]"; IMSClientBootstrap.getInstance().init(userId,token,hosts,1,this); //TODO 判断SPUtils 是否保存有des密码;如果没有则进行注册JKMessage0100,如果有密码则进行鉴权JKMessage0101 } } @@ -128,7 +141,7 @@ @Override public void callBackMsg(final int cmd, String json) { MyLog.d(TAG, String.format("收到命令[%d],Json内容为%s", cmd, json)); // MyLog.d(TAG, String.format("收到命令[%d],Json内容为%s", cmd, json)); switch (cmd) { case Constant.NDK_START: sendVechileInfo(); @@ -158,6 +171,15 @@ case Constant.JUDGE_INFO: if(!TextUtils.isEmpty(json)){ JKMessage0203 jkMessage0203 = new JKMessage0203(); jkMessage0203.phone = "0314200100000004"; jkMessage0203.timeBCD = new Date(); jkMessage0203.fail_item_id = 4; jkMessage0203.fail_score = 10; jkMessage0203.fail_reason = "发动机启动后,不及时松开启动开关"; jkMessage0203.ID = "123456789"; jkMessage0203.exam_id = 123456; MessageProcessor.getInstance().sendMessage(jkMessage0203); JsonArray jsonArray = JsonParser.parseString(json).getAsJsonArray(); for (int i = 0; i < jsonArray.size(); i++) { JsonObject jsonObject = jsonArray.get(i).getAsJsonObject(); @@ -272,4 +294,40 @@ }).start(); } @Override public void onConnecting() { } @Override public void onConnected() { MyLog.i(TAG,"TCP连接成功"); //TODO 判断SPUtils 是否保存有des密码;如果没有则进行注册JKMessage0100,如果有密码则进行鉴权JKMessage0101 String hexPwd = (String) SPUtils.get(this,SPUtils.DES_HEX_PWD,""); if (TextUtils.isEmpty(hexPwd)){ JKMessage0100 jkRegisterMessage = new JKMessage0100(); jkRegisterMessage.proviceid = 23; jkRegisterMessage.cityid = 1; jkRegisterMessage.imei = "460123874561"; jkRegisterMessage.model = "123"; jkRegisterMessage.sn = "0314200100000004"; Log.i(TAG, "onClick: msg len "+jkRegisterMessage.getMessageLen()+" "+ jkRegisterMessage.props.value); byte[] str = jkRegisterMessage.toBytes(); MessageProcessor.getInstance().sendMessage(jkRegisterMessage); Log.i(TAG, "onClick: "+ BytesUtils.bytesToHexString(str)+" ============"); }else{ JKMessage0101 jkMessage0101 = new JKMessage0101(); jkMessage0101.des =hexPwd; jkMessage0101.timestamp = (int) System.currentTimeMillis(); MessageProcessor.getInstance().sendMessage(jkMessage0101); } } @Override public void onConnectFailed() { MyLog.i(TAG,"TCP连接失败"); } } app/src/main/java/safeluck/drive/evaluation/fragment/TcpFragment.java
@@ -17,6 +17,7 @@ import androidx.lifecycle.Observer; import com.anyun.exam.lib.util.Speaker; import com.anyun.im_lib.listener.IMSConnectStatusCallback; import com.anyun.im_lib.util.ByteUtil; import com.google.android.material.textfield.TextInputEditText; import com.safeluck.aykj.utils.BytesUtils; @@ -137,7 +138,22 @@ String hosts = "[{\"host\":\"47.93.157.103\", \"port\":2020}]"; // String hosts = "[{\"host\":\"192.168.31.77\", \"port\":12125}]"; IMSClientBootstrap.getInstance().init(userId,token,hosts,1); IMSClientBootstrap.getInstance().init(userId, token, hosts, 1, new IMSConnectStatusCallback() { @Override public void onConnecting() { } @Override public void onConnected() { } @Override public void onConnectFailed() { } }); break; case R.id.btn_send: // if (connectThread != null){ @@ -243,12 +259,21 @@ "{\"utc\":\"20070101062157.00\",\"sat_num\":0,\"qf\":0,\"latitude\":0.0,\"longitude\":0.0,\"altitude\":-6378154.162,\"speed\":0.0}"; jkMessage0206.length = jkMessage0206.json.length(); AttachInfo attachInfo = new AttachInfo(); attachInfo.attach_message_id = 0x40; attachInfo.attach_message_length = 18; attachInfo.attach_data="12345678901"; attachInfo.attach_message_id = Integer.parseInt(port.getText().toString().trim()); attachInfo.attach_message_length = 4; Log.i(TAG, "attachInfo.attach_message_id ="+attachInfo.attach_message_id ); if (attachInfo.attach_message_id == 0x41){ Log.i(TAG, "onClick: 41"); attachInfo.attach_data="00000000"; }else{ //18个字节 ascii attachInfo.attach_data="303030303030303030303030303030303030"; } jkMessage0206.attachInfo = attachInfo; Log.i(TAG, "位置上报="+jkMessage0206.toString()); MessageProcessor.getInstance().sendMessage(jkMessage0206); break; case R.id.btn_stop_exam: JKMessage0204 jkMessage0204 = new JKMessage0204(); app/src/main/java/safeluck/drive/evaluation/im/IMSClientBootstrap.java
@@ -3,6 +3,7 @@ import android.util.Log; import com.anyun.im_lib.interf.IMSClientInteface; import com.anyun.im_lib.listener.IMSConnectStatusCallback; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; @@ -47,7 +48,7 @@ * @param hosts * @param appStatus */ public synchronized void init(String userId,String token,String hosts,int appStatus){ public synchronized void init(String userId, String token, String hosts, int appStatus, IMSConnectStatusCallback imsConnectStatusListener){ if (!isActive){ Vector<String> serverUrlList = convertHosts(hosts); if (serverUrlList == null || serverUrlList.size() ==0){ @@ -62,7 +63,7 @@ //初始化IMSClientInteface imsClient = IMSClientFactory.getIMSClient(); updateAppStatus(appStatus); imsClient.init(serverUrlList,new IMSEventListener(userId,token),new IMSConnectStatusListener()); imsClient.init(serverUrlList,new IMSEventListener(userId,token),imsConnectStatusListener); } } app/src/main/java/safeluck/drive/evaluation/platformMessage/AttachInfo.java
@@ -14,7 +14,7 @@ @Int8 public int attach_message_length; @Order(3) @Length(lengthField="attach_message_length") @Length(lengthField = "attach_message_length") @Hex public String attach_data; } app/src/main/java/safeluck/drive/evaluation/platformMessage/JKMessage0206.java
@@ -46,8 +46,11 @@ @Order(12) @Message @Length(20) @Length(0) public AttachInfo attachInfo; /** * 报警 * DWORD app/src/main/res/layout/layout_rtk_setting.xml
@@ -149,6 +149,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/tv_rtk_model" android:visibility="gone" android:text="@string/rtk_config_model" android:layout_weight="1"/> <TextView im_lib/src/main/java/com/anyun/im_lib/netty/NettyTcpClient.java
@@ -330,7 +330,7 @@ // TODO: 2019/12/12 根据MSG_ID 来加入 超时, 暂不写 if (channel == null){ Log.i(TAG, "sendMsg fail,channel为空"+msg); MyLog.i("PlatformMessage", "sendMsg fail,channel为空"+msg); } try { MyLog.i("PlatformMessage", "sendMsg: "+ BytesUtils.bytesToHexString(msg)); @@ -338,7 +338,7 @@ byteBuf.writeBytes(msg); channel.writeAndFlush(byteBuf); } catch (Exception e) { Log.i(TAG, "发送消息失败,reason="+e.getMessage()+"\t"+msg); Log.i("PlatformMessage", "发送消息失败,reason="+e.getMessage()+"\t"+msg); } } im_lib/src/main/java/com/safeluck/aykj/message/BinMessageBase.java
@@ -168,6 +168,7 @@ try { Object value = fieldDefine.field.get(this); String hex = fieldDefine.coder.encode(value); Log.i("PlatformMessage", "FieldName: "+fieldDefine.field.getName()+" hex:"+hex); if (hex == null) { fieldDefine.relativeLengthField.set(this, 0); } else { @@ -211,6 +212,7 @@ } } // System.out.println(hex); Log.i("PlatformMessage value", "FieldName: "+fieldDefine.field.getName()+" hex:"+hex); sb.append(hex); } catch (IllegalAccessException e) { this.buildException(e.getMessage());