diff --git a/gradle.properties b/gradle.properties index 99a947b..f9fa4b1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -36,24 +36,24 @@ PASSWORD=xintai2018 RELEASE=true # AI CLOUD 云平台 # 工具类 -MOGO_UTILS_VERSION=1.4.6.4 +MOGO_UTILS_VERSION=1.4.6.6 # 网络请求 -MOGO_NETWORK_VERSION=1.4.6.4 +MOGO_NETWORK_VERSION=1.4.6.6 # 鉴权 -MOGO_PASSPORT_VERSION=1.4.6.4 +MOGO_PASSPORT_VERSION=1.4.6.6 # 常链接 -MOGO_SOCKET_VERSION=1.4.6.4 +MOGO_SOCKET_VERSION=1.4.6.6 # 数据采集 -MOGO_REALTIME_VERSION=1.4.6.4 +MOGO_REALTIME_VERSION=1.4.6.6 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.4.6.4 +MOGO_TANLU_VERSION=1.4.6.6 # 直播推流 -MOGO_LIVE_VERSION=1.4.6.4 +MOGO_LIVE_VERSION=1.4.6.6 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.4.6.4 +MOGO_TRAFFICLIVE_VERSION=1.4.6.6 # 定位服务 -MOGO_LOCATION_VERSION=1.4.6.4 +MOGO_LOCATION_VERSION=1.4.6.6 # 远程通讯模块 -MOGO_TELEMATIC_VERSION=1.4.6.4 +MOGO_TELEMATIC_VERSION=1.4.6.6 # v2x -MOGO_V2X_VERSION=1.4.6.4 +MOGO_V2X_VERSION=1.4.6.6 diff --git a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java index a2bfbcd..d3e5c61 100644 --- a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java +++ b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/NSDNettyManager.java @@ -5,6 +5,7 @@ import static com.mogo.telematic.client.status.ConnectState.STATUS_CONNECT_SUCCE import android.content.Context; import android.net.nsd.NsdServiceInfo; +import android.os.AsyncTask; import android.os.Looper; import android.util.Log; @@ -57,6 +58,8 @@ public class NSDNettyManager implements TelematicHandler.ITelematicListener { private NettyClientListener mClientListener; private volatile boolean isCanceled = true; + private volatile AbstractDiscoveryTask discoveryTask; + private NSDNettyManager() { TelematicHandler.init(); TelematicHandler.setListener(this); @@ -274,7 +277,8 @@ public class NSDNettyManager implements TelematicHandler.ITelematicListener { private void scanDriverServer(String uuid, NettyClientListener listener) { // 启动发现司机屏幕任务 - AbstractDiscoveryTask discoveryTask = new DiscoveryDriverTask(); + cancelTask(); + discoveryTask = new DiscoveryDriverTask(); network_ip = NetInfo.getUnsignedLongFromIp(currentIp); mClientListener = listener; @@ -411,24 +415,28 @@ public class NSDNettyManager implements TelematicHandler.ITelematicListener { */ public void connectSpecifiedServer(String ip, int port, String uuid, NettyClientListener listener) { mClientListener = listener; - if (mNsdClient != null) { - // 停止局域网内扫描 - mNsdClient.stopServiceDiscovery(); + if (mIsTaxi) { + if (mNsdClient != null) { + // 停止局域网内扫描 + mNsdClient.stopServiceDiscovery(); + } + } else { + cancelTask(); } if (mNettyTcpClient != null) { // 断开已连接上的 mNettyTcpClient.disconnect(); mNettyTcpClient = null; } + TelematicHandler.removeDelay(); + TelematicHandler.removeReconnect(); connectNettyServer(ip, port, uuid); } - public static String bytesToHexFun(byte[] bytes, int length) { - StringBuilder buf = new StringBuilder(length * 2); - for (int i = 0; i < length; i++) {// 使用String的format方法进行转换 - buf.append(String.format("%02x", new Integer(bytes[i] & 0xFF))); + private void cancelTask() { + if (discoveryTask != null && discoveryTask.getStatus() == AsyncTask.Status.RUNNING) { + discoveryTask.cancel(true); } - return buf.toString(); } /** @@ -455,6 +463,8 @@ public class NSDNettyManager implements TelematicHandler.ITelematicListener { public void reconnectServer() { Log.e(TAG, "收到reconnectServer事件"); TelematicHandler.removeReconnect(); - mNettyTcpClient.reconnectServer(); + if (mNettyTcpClient != null) { + mNettyTcpClient.reconnectServer(); + } } } diff --git a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/NettyTcpClient.java b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/NettyTcpClient.java index 8a8efe0..ef6dd87 100644 --- a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/NettyTcpClient.java +++ b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/NettyTcpClient.java @@ -158,7 +158,6 @@ public class NettyTcpClient { ch.pipeline().addLast(new IdleStateHandler(heartBeatInterval, heartBeatInterval, 0, TimeUnit.SECONDS)); ch.pipeline().addLast(new HeartbeatHandler(mProxyListener)); } - ch.pipeline().addLast(new ReconnectHandler(mProxyListener)); // decoder ch.pipeline().addLast(new MogoLengthFrameDecoder(MAX_FRAME_LENGTH, LENGTH_FIELD_OFFSET, @@ -166,6 +165,7 @@ public class NettyTcpClient { // encoder ch.pipeline().addLast(new MogoMessageEncoder()); ch.pipeline().addLast(new NettyClientHandler(mProxyListener, mSign)); + ch.pipeline().addLast(new ReconnectHandler(mProxyListener)); } }); } catch (Exception e) { diff --git a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/handler/NettyClientHandler.java b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/handler/NettyClientHandler.java index 5c26842..3df34af 100644 --- a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/handler/NettyClientHandler.java +++ b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/client/handler/NettyClientHandler.java @@ -25,39 +25,6 @@ public class NettyClientHandler extends SimpleChannelInboundHandler { -// if (!future.isSuccess()) { -// listener.onClientStatusConnectChanged(STATUS_CONNECT_CLOSED, -// "channelInactive", -// ctx.channel()); -// future.channel().close(); -// } -// }); -// } else { -// Log.d(TAG, "不发送心跳"); -// } -// } - /** *

客户端上线

* diff --git a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/discovery/DiscoveryDriverTask.java b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/discovery/DiscoveryDriverTask.java index 0ed86be..1cecbca 100644 --- a/libraries/mogo-telematic/src/main/java/com/mogo/telematic/discovery/DiscoveryDriverTask.java +++ b/libraries/mogo-telematic/src/main/java/com/mogo/telematic/discovery/DiscoveryDriverTask.java @@ -118,7 +118,6 @@ public class DiscoveryDriverTask extends AbstractDiscoveryTask { private void launch(long i) { if (!mPool.isShutdown()) { - Log.d(TAG, "launch: 子线程:" + NetInfo.getIpFromLongUnsigned(i)); mPool.execute(new CheckRunnable(NetInfo.getIpFromLongUnsigned(i))); } }