From b321350fda4109a020224ffed0886f30bd0ab265 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 6 Sep 2023 16:57:19 +0800 Subject: [PATCH 1/7] =?UTF-8?q?[6.0.0]=201=E3=80=81=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E5=AF=BC=E8=88=AA=E5=86=8D=E6=AC=A1=E6=89=93=E5=BC=80=E9=9C=80?= =?UTF-8?q?30s-1=E5=88=86=E9=92=9F=E6=89=8D=E6=98=BE=E7=A4=BA=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E9=97=AE=E9=A2=98=202=E3=80=81=E5=8F=8D=E5=A4=8D?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E5=AF=BC=E8=88=AA=E6=8C=89=E9=92=AE,=20?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E8=BD=A8=E8=BF=B9=E4=B8=8D=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/common/module/map/CommonAmapNaviVIew.kt | 5 ++--- .../java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt | 2 +- .../com/mogo/och/taxi/ui/navi/auto/TaxiMapDirectionView.kt | 4 ++++ .../com/mogo/och/taxi/ui/task/TaxiCurrentTaskViewModel.kt | 2 +- .../src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt index bc16c9fb2b..0a34893090 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/map/CommonAmapNaviVIew.kt @@ -134,7 +134,6 @@ class CommonAmapNaviVIew @JvmOverloads constructor( } override fun onNaviCancel() { - TODO("Not yet implemented") } override fun onNaviBackClick(): Boolean { @@ -170,11 +169,11 @@ class CommonAmapNaviVIew @JvmOverloads constructor( } override fun onMapTypeChanged(p0: Int) { - TODO("Not yet implemented") + } override fun onNaviViewShowMode(p0: Int) { - TODO("Not yet implemented") + } fun onCreate(savedInstanceState : Bundle?){ diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt index 4b933918a9..a9ab0a9ed8 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt @@ -592,6 +592,7 @@ abstract class BaseTaxiTabFragment> : MvpFragment> : MvpFragment(), driveToNearestStationTask: StartServiceRespBean.Result?, currentTaskWithOrder: QueryCurrentTaskRespBean.Result? ) { - if (currentTaskWithOrder?.endSite != null && currentTaskWithOrder.startSite != null + if (currentTaskWithOrder?.endSite != null && (currentTaskWithOrder.currentStatus < TaskStatusEnum.CompleteTask.code ||currentTaskWithOrder.order != null) ) { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index cf4f690875..e70f507880 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -706,7 +706,7 @@ object TaxiTaskModel { if (result.order != null && result.currentStatus == TaskStatusEnum.CompleteTask.code && result.servingStatus == 1){ - if (result.order!!.orderStatus <= TaxiOrderStatusEnum.ArriveAtStart.code) { + if (result.order!!.orderStatus < TaxiOrderStatusEnum.ArriveAtStart.code) { VoiceNotice.showNotice("已为您接到订单") } if (result.taskType == TaskTypeEnum.ToOrderStartTask.code From 02bdcbdac6d323d2f8db8119747a5d52cfc09aa7 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Wed, 6 Sep 2023 17:28:17 +0800 Subject: [PATCH 2/7] =?UTF-8?q?[6.0.0]=201=E3=80=81=E5=B7=B2=E4=B8=BA?= =?UTF-8?q?=E6=82=A8=E6=8E=A5=E5=88=B0=E8=AE=A2=E5=8D=95=20=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3=E6=92=AD=E6=8A=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt index e70f507880..9190377910 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskModel.kt @@ -706,7 +706,8 @@ object TaxiTaskModel { if (result.order != null && result.currentStatus == TaskStatusEnum.CompleteTask.code && result.servingStatus == 1){ - if (result.order!!.orderStatus < TaxiOrderStatusEnum.ArriveAtStart.code) { + if (result.taskType <= TaskTypeEnum.VirtualTask.code + && result.order!!.orderStatus < TaxiOrderStatusEnum.ArriveAtStart.code) { VoiceNotice.showNotice("已为您接到订单") } if (result.taskType == TaskTypeEnum.ToOrderStartTask.code From 01d099c6c29b10e566890ba3ef77ac94cc7ef5f8 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Wed, 6 Sep 2023 17:31:32 +0800 Subject: [PATCH 3/7] =?UTF-8?q?[6.0.0][Fix]=E9=AB=98=E7=B2=BE=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E4=BF=AE=E6=94=B9=E4=BA=86=E6=BC=AB=E6=B8=B8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index e49b92deed..8ea41b4317 100644 --- a/gradle.properties +++ b/gradle.properties @@ -80,7 +80,7 @@ MOGO_LOCATION_VERSION=1.4.7.16 MOGO_TELEMATIC_VERSION=1.4.7.16 ######## MogoAiCloudSDK Version ######## # 自研地图 -MAP_SDK_VERSION=2.14.3.9 +MAP_SDK_VERSION=2.14.3.10 MAP_SDK_OPERATION_VERSION=1.1.4.1 # websocket WEBSOCKET_VERSION=1.1.7 From 551ff2a745b27610c61cac7da512051df5191a58 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Wed, 6 Sep 2023 17:45:59 +0800 Subject: [PATCH 4/7] [6.0.0] fix roma distance ui --- .../mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt | 4 ++++ .../passenger/src/main/res/layout/taxi_p_base_fragment.xml | 1 + .../mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt | 4 ++++ .../src/main/res/layout/taxi_p_base_fragment.xml | 1 + 4 files changed, 10 insertions(+) diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt index 0255c7fae7..48cf6f23ee 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt @@ -96,8 +96,10 @@ class TaxiPassengerBaseFragment() : ck_setting.visibility = View.VISIBLE if (DeviceUtils.isLenovoModel() || DeviceUtils.isEB5Model()) { romaPView.visibility = View.VISIBLE + romaDistanceView.visibility = View.VISIBLE } else { romaPView.visibility = View.GONE + romaDistanceView.visibility = View.GONE } rv_location_center.visibility = View.VISIBLE pcnActionView.visibility = View.VISIBLE @@ -111,6 +113,7 @@ class TaxiPassengerBaseFragment() : presenter?.setItineraryVisibility() ck_setting.visibility = View.VISIBLE romaPView.visibility = View.GONE + romaDistanceView.visibility = View.GONE rv_location_center.visibility = View.VISIBLE pcnActionView.visibility = View.VISIBLE CallerHmiManager.showTrafficLightView() @@ -124,6 +127,7 @@ class TaxiPassengerBaseFragment() : ck_setting.visibility = View.GONE ck_setting.isChecked = false romaPView.visibility = View.GONE + romaDistanceView.visibility = View.GONE rv_location_center.visibility = View.GONE pcnActionView.visibility = View.GONE CallerHmiManager.hideTrafficLightView() diff --git a/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml b/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml index c7355508c5..0b37513c4c 100644 --- a/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml +++ b/OCH/taxi/passenger/src/main/res/layout/taxi_p_base_fragment.xml @@ -82,6 +82,7 @@ app:roma_open="@drawable/taxi_p_roma_checked" /> Date: Wed, 6 Sep 2023 17:50:49 +0800 Subject: [PATCH 5/7] =?UTF-8?q?[6.0.0]=201=E3=80=81debug=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=8C=BA=E5=88=86=E9=A2=84=E5=8A=A0=E8=BD=BD=E8=BD=A8=E8=BF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java index 0ce5fc4b14..98a14737f1 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaxiTrajectoryManager.java @@ -287,7 +287,7 @@ public class TaxiTrajectoryManager { } if (mPreAutoPilotLine != null){ - DebugView.Companion.printInfoMsg("[下发轨迹] sendTrajectoryDownloadReq, lindId=" + mPreAutoPilotLine.getLineId() + ", lineName=" + mPreAutoPilotLine.getLineName()); + DebugView.Companion.printInfoMsg("[下发预加载轨迹] sendTrajectoryDownloadReq, lindId=" + mPreAutoPilotLine.getLineId() + ", lineName=" + mPreAutoPilotLine.getLineName()); CallerAutoPilotControlManager.INSTANCE.sendTrajectoryDownloadReq(mPreAutoPilotLine, PRE_LOADING); }else { CallerLogger.e(M_TAXI + TAG, "sendTrajectoryReq(): mPreAutoPilotLine is null!!!"); From 58ead9e6cd134dc3f796d3ef8c1bec4e59d3b592 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 6 Sep 2023 18:05:56 +0800 Subject: [PATCH 6/7] [6.0.0] [log] --- .../manager/distancemamager/TrajectoryAndDistanceManager.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt index ac302ad156..b2fcc24349 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/distancemamager/TrajectoryAndDistanceManager.kt @@ -92,7 +92,7 @@ object TrajectoryAndDistanceManager: IMoGoPlanningRottingListener{ d(M_OCHCOMMON + TAG, "onAutopilotRotting: 收到轨迹") globalPathResp?.wayPointsList?.let { if (it.size > 0) { - d(M_OCHCOMMON + TAG, "收到轨迹:${it.size}第一个点${it[0]}最后一个点:${it.last()}") + d(M_OCHCOMMON + TAG, "收到轨迹:轨迹个数${it.size}第一个点${it[0]}最后一个点:${it.last()} 轨迹id:${globalPathResp.lineId}") if(globalPathResp.lineId!=null) {// 适配低版本不传递lineId if (globalPathResp.lineId == lineId && !mRoutePoints.isNullOrEmpty()) { d(M_OCHCOMMON + TAG, "重复轨迹") From c2a95e78abe7a1630e017e35499ec6ea57bfed41 Mon Sep 17 00:00:00 2001 From: xinfengkun Date: Wed, 6 Sep 2023 19:45:31 +0800 Subject: [PATCH 7/7] =?UTF-8?q?[600][adas]=E6=B7=BB=E5=8A=A0=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=BD=91=E7=BB=9C=E7=9B=91=E5=90=AC=EF=BC=8C=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E5=88=B0=E7=BD=91=E7=BB=9C=E8=BF=9E=E6=8E=A5=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E5=90=8E=E7=AB=8B=E5=8D=B3=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autopilot/MoGoAutopilotControlProvider.kt | 10 ++--- .../mogo-adas/src/main/AndroidManifest.xml | 1 + .../zhidao/support/adas/high/AdasChannel.java | 8 +++- .../zhidao/support/adas/high/AdasManager.java | 4 +- .../adas/high/common/ReconnectManager.java | 41 +++++++++++++++++-- .../support/adas/high/socket/FpgaSocket.java | 13 +++--- 6 files changed, 58 insertions(+), 19 deletions(-) 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();