diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt
index c7e3d6b130..a0ac3c0b7f 100644
--- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt
+++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoAutopilotControlProvider.kt
@@ -122,7 +122,7 @@ class MoGoAutopilotControlProvider :
// .setSubscribeInterfaceOptions(subscribeInterfaceOptions)//
.build()
- AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
+ AdasManager.getInstance().create(context, options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
@@ -209,7 +209,7 @@ class MoGoAutopilotControlProvider :
UiThreadHandler.post {
if (isSupportMulti) {
// 直连工控机
- directConnect()
+ directConnect(context)
} else {
val options = AdasOptions
.Builder()
@@ -217,7 +217,7 @@ class MoGoAutopilotControlProvider :
.setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear)
.build()
AdasManager.getInstance()
- .create(options, MoGoAdasMsgConnectStatusListenerImpl())
+ .create(context, options, MoGoAdasMsgConnectStatusListenerImpl())
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
// 接收司机屏发过来的感知、定位等数据
@@ -240,7 +240,7 @@ class MoGoAutopilotControlProvider :
}
}
- private fun directConnect() {
+ private fun directConnect(context: Context) {
val options = AdasOptions
.Builder()
.setIpcConnectionMode(AdasOptions.IPC_CONNECTION_MODE.FIXATION)
@@ -248,7 +248,7 @@ class MoGoAutopilotControlProvider :
.setClient(false)// 乘客端直连工控机改为false
.setUnableLaunchAutopilotGear(FunctionBuildConfig.unableLaunchAutopilotGear)
.build()
- AdasManager.getInstance().create(options, MoGoAdasMsgConnectStatusListenerImpl())
+ AdasManager.getInstance().create(context, options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序,AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
diff --git a/libraries/mogo-adas/src/main/AndroidManifest.xml b/libraries/mogo-adas/src/main/AndroidManifest.xml
index d0a6ae62d1..8a4b6c866e 100644
--- a/libraries/mogo-adas/src/main/AndroidManifest.xml
+++ b/libraries/mogo-adas/src/main/AndroidManifest.xml
@@ -3,4 +3,5 @@
+
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java
index 71afc9c3c1..70bbc2c775 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasChannel.java
@@ -11,6 +11,7 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_SOURCE_ADAS;
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_INIT_STATUS;
import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_SOCKET_AUTOPILOT;
+import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
@@ -138,6 +139,7 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
*/
private SubscribeInterface subscribeInterface;
private Timer carConfigReqTimer;//车辆基础信息请求 多次请求防止无法收到基础信息情况出现
+ private Context context;
public void setOnMultiDeviceListener(OnMultiDeviceListener onMultiDeviceListener) {
this.onMultiDeviceListener = onMultiDeviceListener;
@@ -169,7 +171,8 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
* @param options
* @param onAdasConnectStatusListener
*/
- AdasChannel(AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener) {
+ AdasChannel(Context context, AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener) {
+ this.context = context;
this.adasConnectStatusListener = onAdasConnectStatusListener;
//配置为null默认是乘客屏幕
if (options == null) {
@@ -279,7 +282,8 @@ public class AdasChannel implements IAdasNetCommApi, FpgaSocket.IWebSocketConnec
nodeAliasCode = CHAIN_CODE_ADAS_INIT,
paramIndexes = {-1})
private void initSocket() {
- mSocket = new FpgaSocket();
+ mSocket = new FpgaSocket(context);
+ context = null;
mSocket.setWebSocketListener(this);
if (isUseQueue) {
WebSocketQueueManager.getInstance().registerWebSocketListener(this);
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java
index 3bf97a5cce..b51e102f23 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/AdasManager.java
@@ -103,13 +103,13 @@ public class AdasManager implements IAdasNetCommApi {
* @param options 连接参数
* @param onAdasConnectStatusListener 连接状态监听
*/
- public synchronized void create(AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener) {
+ public synchronized void create(Context context, AdasOptions options, OnAdasConnectStatusListener onAdasConnectStatusListener) {
if (mChannel != null) {
mChannel.disconnect();
carConfig = null;
mChannel = null;
}
- mChannel = new AdasChannel(options, onAdasConnectStatusListener);
+ mChannel = new AdasChannel(context, options, onAdasConnectStatusListener);
}
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ReconnectManager.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ReconnectManager.java
index 1431b08472..421bafa95b 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ReconnectManager.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/common/ReconnectManager.java
@@ -1,5 +1,15 @@
package com.zhidao.support.adas.high.common;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkRequest;
+import android.os.Build;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RequiresApi;
+
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -13,15 +23,17 @@ public class ReconnectManager {
private final AtomicBoolean isReconnection = new AtomicBoolean(false);//是否正在重连
private final OnReconnectListener listener;
private volatile Timer timer;
+ private final Context context;
+ private final AtomicBoolean isRegisterNetworkCallback = new AtomicBoolean(false);
public interface OnReconnectListener {
- void onReconnection();
+ void onReconnection(String tag);
}
- public ReconnectManager(OnReconnectListener listener) {
+ public ReconnectManager(Context context, OnReconnectListener listener) {
+ this.context = context;
this.listener = listener;
-
}
/**
@@ -36,6 +48,12 @@ public class ReconnectManager {
if (!isReconnection.get()) {
CupidLogUtils.i(TAG, "开始重连");
isReconnection.set(true);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkRequest networkRequest = new NetworkRequest.Builder().build();
+ connMgr.registerNetworkCallback(networkRequest, networkCallback);
+ isRegisterNetworkCallback.set(true);
+ }
if (timer == null) {
timer = new Timer();
timer.schedule(new TimerTask() {
@@ -43,7 +61,7 @@ public class ReconnectManager {
public void run() {
if (isReconnection.get()) {
if (listener != null)
- listener.onReconnection();
+ listener.onReconnection("定时器");
}
}
}, 0, RECONNECT_INTERVAL);//延时
@@ -54,11 +72,26 @@ public class ReconnectManager {
public synchronized void stop() {
CupidLogUtils.i(TAG, "停止重连");
isReconnection.set(false);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && isRegisterNetworkCallback.get()) {
+ ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ connMgr.unregisterNetworkCallback(networkCallback);
+ isRegisterNetworkCallback.set(false);
+ }
if (timer != null) {
timer.cancel();
timer = null;
}
}
+ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
+ private final ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
+ @Override
+ public void onAvailable(@NonNull Network network) {
+ super.onAvailable(network);
+ Log.i(TAG, "网络连接成功");
+ if (listener != null)
+ listener.onReconnection("网络监听");
+ }
+ };
}
diff --git a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java
index 9ba4c32a95..d2c205aae1 100644
--- a/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java
+++ b/libraries/mogo-adas/src/main/java/com/zhidao/support/adas/high/socket/FpgaSocket.java
@@ -6,6 +6,7 @@ import static com.zhidao.support.adas.high.chain.AdasChain.CHAIN_TYPE_INIT_STATU
import static com.zhidao.support.adas.high.common.Constants.RESOURCE_PATH;
import static com.zhidao.support.adas.high.common.Constants.WS_IP_HOST_HEAD;
+import android.content.Context;
import android.os.SystemClock;
import android.text.TextUtils;
import android.util.Log;
@@ -79,11 +80,11 @@ public class FpgaSocket implements IWebSocket {
*/
private volatile String receiveTimeoutReason = null;
- public FpgaSocket() {
- init();
+ public FpgaSocket(Context context) {
+ init(context);
}
- private void init() {
+ private void init(Context context) {
listener = new EchoWebSocketListener();
OkHttpClient.Builder okBuilder = new OkHttpClient.Builder();
okBuilder.writeTimeout(4, TimeUnit.SECONDS)
@@ -96,10 +97,10 @@ public class FpgaSocket implements IWebSocket {
onPassiveClose(1001, receiveTimeoutReason);
}
});
- reconnectManager = new ReconnectManager(new ReconnectManager.OnReconnectListener() {
+ reconnectManager = new ReconnectManager(context, new ReconnectManager.OnReconnectListener() {
@Override
- public void onReconnection() {
- connect("重连中");
+ public void onReconnection(String tag) {
+ connect("重连中(" + tag + ")");
}
});
client = okBuilder.build();