From ba175c7290ef623ef7db3f5d6e9e55b57ef1e297 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 2 Dec 2022 18:13:36 +0800 Subject: [PATCH 1/4] =?UTF-8?q?[2.13.0]=20taxi/bus=E5=8F=B8=E6=9C=BA?= =?UTF-8?q?=E7=AB=AF=20=E5=AE=9A=E4=BD=8D=E6=9D=83=E9=99=90=EF=BC=8C?= =?UTF-8?q?=E9=95=BF=E9=93=BE=E6=8E=A5=E5=BC=82=E5=B8=B8=EF=BC=8C=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E5=BC=82=E5=B8=B8=E5=AE=9A=E6=97=B6=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mogo/och/bus/model/BusOrderModel.java | 5 + .../manager/AbnormalFactorsLoopManager.kt | 93 +++++++++++++++++++ .../com/mogo/och/taxi/model/TaxiModel.java | 6 ++ 3 files changed, 104 insertions(+) create mode 100644 OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/AbnormalFactorsLoopManager.kt diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 0ec34d7ce4..0b1eb2c647 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -59,6 +59,7 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst; import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; +import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.DateTimeUtil; @@ -166,6 +167,8 @@ public class BusOrderModel { OCHSocketMessageManager.INSTANCE.getMsgWriteOffPassengerType(), mWriteOffPassengeOnMessageListener); + AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); + //2022.1.28 // 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃 // The exception could not be delivered to the consumer because it has already canceled/disposed @@ -343,6 +346,8 @@ public class BusOrderModel { OCHSocketMessageManager.INSTANCE.getMsgMonitorType()); OCHSocketMessageManager.INSTANCE.releaseSocketMessageListener( OCHSocketMessageManager.INSTANCE.getMsgWriteOffPassengerType()); + + AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors(); } private Object readResolve() { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/AbnormalFactorsLoopManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/AbnormalFactorsLoopManager.kt new file mode 100644 index 0000000000..a3df02bf62 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/manager/AbnormalFactorsLoopManager.kt @@ -0,0 +1,93 @@ +package com.mogo.och.common.module.manager + +import android.Manifest +import android.content.Context +import com.mogo.commons.module.status.IMogoStatusChangedListener +import com.mogo.commons.module.status.MogoStatusManager +import com.mogo.commons.module.status.StatusDescriptor +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i +import com.mogo.eagle.core.utilcode.util.NetworkUtils +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.common.module.utils.PermissionUtil +import io.reactivex.Observable +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import io.reactivex.schedulers.Schedulers +import java.util.concurrent.TimeUnit + +/** + * @author: wangmingjun + * @date: 2022/12/2 + */ +object AbnormalFactorsLoopManager : IMogoStatusChangedListener { + + const val TAG = "AbnormalFactorsLoopManager" + + private const val LOOP_TIME = 10 *1000L + private const val LOOP_DELAY = 5 * 1000L + private var socketStatus: Boolean = false + + private var looperDisposable : Disposable? = null + + fun startLoopAbnormalFactors(context: Context){ + if (looperDisposable != null && !looperDisposable!!.isDisposed){ + return + } + i(TAG, "startLoopAbnormalFactors()") + looperDisposable = Observable.interval(LOOP_DELAY, LOOP_TIME, TimeUnit.MILLISECONDS) + .map { aLong -> aLong+1 } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe{ aLong -> checkAbnormalFactors(context)} + + //长链接监听 + MogoStatusManager.getInstance().registerStatusChangedListener(TAG, + StatusDescriptor.CLOUD_SOCKET,this) + } + + private fun checkAbnormalFactors(context: Context) { + + var locationStatusPermsStatus = false + var networkStatus = false + + //定位权限 + locationStatusPermsStatus = !(!PermissionUtil.isLocServiceEnable(context) || !PermissionUtil.checkPermission( + context, *arrayOf( + Manifest.permission.ACCESS_FINE_LOCATION + ) + )) + + //网络状态或者网络权限是否打开 + if (NetworkUtils.isConnected(context)){ + networkStatus = true + } + //长链接状态 socketStatus + + var toastStr = "" + if (!locationStatusPermsStatus) toastStr += "定位服务异常 " + if (!networkStatus) toastStr += " 网络异常 " + if (!socketStatus) toastStr += " 长链接异常 " + + i(TAG, "abnormal_factors_Str = $toastStr") + + if (toastStr !== ""){ + ToastUtils.showLong(toastStr + "请开启相应权限或者查看网络") + } + } + + + fun stopLoopAbnormalFactors(){ + looperDisposable!!.dispose() + looperDisposable == null + + MogoStatusManager.getInstance().unregisterStatusChangedListener(TAG, + StatusDescriptor.CLOUD_SOCKET,this) + } + + override fun onStatusChanged(descriptor: StatusDescriptor?, isTrue: Boolean) { + //长链接监听、 + if (StatusDescriptor.CLOUD_SOCKET == descriptor && isTrue){ + socketStatus = isTrue + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 07579d98ca..6184a1c946 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -46,6 +46,7 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst; import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; +import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager; import com.mogo.och.common.module.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.map.AmapNaviToDestinationModel; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; @@ -233,6 +234,9 @@ public class TaxiModel { OCHSocketMessageManager.INSTANCE.registerSocketMessageListener( OCHSocketMessageManager.INSTANCE.getMsgMonitorType(), mMogoOnMessageListener); + + AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); + } private final IMogoOnMessageListener mMogoOnMessageListener = @@ -265,6 +269,8 @@ public class TaxiModel { CallerAutoPilotStatusListenerManager.INSTANCE.removeListener(mGoAutopilotStatusListener); CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener); OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null); + + AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors(); } public void startOrStopOrderLoop(boolean start) { From 464bfe4f853966cbad7c21f30816d02b107f71c9 Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Fri, 2 Dec 2022 18:21:30 +0800 Subject: [PATCH 2/4] =?UTF-8?q?[2.13.0][Fix]=E8=A7=A3=E5=86=B3=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E5=BC=B9=E7=AA=97=E9=97=AA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index b8b18d6aa7..7732d44741 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -510,7 +510,7 @@ class MoGoHmiFragment : MvpFragment(), .setGravity(Gravity.LEFT) .setImmersionStatusBar(true) .setWindowHeight(LayoutParams.MATCH_PARENT) - .setWindowWidth(AutoSizeUtils.dp2px(context, 960f)) +// .setWindowWidth(AutoSizeUtils.dp2px(context, 960f)) .setAnimator(object : DefaultAnimator() { override fun enterAnim( view: View, From 58fb2363f5360bddb77b86cc1f88c56d329b37e4 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 2 Dec 2022 18:26:06 +0800 Subject: [PATCH 3/4] =?UTF-8?q?[2.13.0]=20taxi=E5=8F=B8=E6=9C=BA=E7=AB=AF?= =?UTF-8?q?=202.12.0=E7=A9=BA=E6=8C=87=E9=92=88=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/TaxiBeingServerdOrdersFragment.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java index bedc400eeb..752bb88cc6 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiBeingServerdOrdersFragment.java @@ -385,31 +385,32 @@ public class TaxiBeingServerdOrdersFragment extends BaseTaxiUIFragment int min = (int)Math.ceil((double)timeInSecond/ 60f); String strHtml2 = "里程 " + "" + dis + "" + " "+disUnit+"" + ",剩余 " + "" + min + "" + " 分钟"; + try { + if (mCurrentOrder != null && mCurrentOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToStart.getCode()) { //前往上车点 + mDistanceAndTime3.setText(Html.fromHtml(strHtml2)); + if (mNaviStartIcon.getVisibility() == View.GONE){ + mNaviStartIcon.setVisibility(View.VISIBLE); + } - if (mCurrentOrder != null && mCurrentOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToStart.getCode()) { //前往上车点 + } else if (mCurrentOrder != null && mCurrentOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()) { //前往终点 时间单位是分钟 + if (mNaviToEndIcon.getVisibility() == View.GONE){ + mNaviToEndIcon.setVisibility(View.VISIBLE); + } - mDistanceAndTime3.setText(Html.fromHtml(strHtml2)); - if (mNaviStartIcon.getVisibility() == View.GONE){ - mNaviStartIcon.setVisibility(View.VISIBLE); + if (mTtsLessThan200Tip < 1 && meters <= 250 && meters > 150){ + speekVoice200mTipsOnce(); + } + mDistanceAndTime2.setText(Html.fromHtml(strHtml2)); + if (isFirstStartAutopilotDone){ + VoiceNotice.showNotice(String.format(getResources() + .getString(R.string.module_och_taxi_order_server_start_auto_tip), + dis,disUnit,min)); + isFirstStartAutopilotDone = false; + } } + }catch (NullPointerException e){ - } else if (mCurrentOrder != null && mCurrentOrder.orderStatus == TaxiOrderStatusEnum.OnTheWayToEnd.getCode()) { //前往终点 时间单位是分钟 - if (mNaviToEndIcon.getVisibility() == View.GONE){ - mNaviToEndIcon.setVisibility(View.VISIBLE); - } - - if (mTtsLessThan200Tip < 1 && meters <= 250 && meters > 150){ - speekVoice200mTipsOnce(); - } - mDistanceAndTime2.setText(Html.fromHtml(strHtml2)); - if (isFirstStartAutopilotDone){ - VoiceNotice.showNotice(String.format(getResources() - .getString(R.string.module_och_taxi_order_server_start_auto_tip), - dis,disUnit,min)); - isFirstStartAutopilotDone = false; - } } - } private void speekVoice200mTipsOnce() { From 095c926fb6fe7d3b263c3cd388b0d6874b0db08c Mon Sep 17 00:00:00 2001 From: zhongchao Date: Fri, 2 Dec 2022 19:13:24 +0800 Subject: [PATCH 4/4] [2.13.0]fix bug of netty status of view and close the spi real time --- .../mogo/launcher/stageone/HttpDnsStartUp.kt | 22 +++++++++---------- .../hmi/ui/setting/DebugSettingView.kt | 15 +++++++++++++ .../com/mogo/commons/module/MogoServices.java | 12 +++++----- 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt b/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt index 818fe0ddfb..794e9ef28b 100644 --- a/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt @@ -79,7 +79,6 @@ class HttpDnsStartUp : AndroidStartup() { if (ProcessUtils.isMainProcess(context)) { initGDLoc() initHttpDns() - initCloudClientConfig() } return true } @@ -110,8 +109,10 @@ class HttpDnsStartUp : AndroidStartup() { DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE // 设置是否输出日志 clientConfig.isShowDebugLog = true + // 使用中台长链接 + clientConfig.isUseOriginSocket = true // 设置是否输出网络日志 - clientConfig.isShowNetDebugLog = true //todo test em arrow + clientConfig.isShowNetDebugLog = false // 设置是否是直播推流的主播 clientConfig.isAnchor = true when (DebugConfig.getCarMachineType()) { @@ -203,7 +204,10 @@ class HttpDnsStartUp : AndroidStartup() { clientConfig.token = token // 由于存在token过期问题,在更新后会回调至此处,增加二次判定 if (!gotToken) { - CallerLogger.d(SceneConstant.M_MAIN + TAG, "onTokenGot token : $token , sn :$sn") + CallerLogger.d( + SceneConstant.M_MAIN + TAG, + "onTokenGot token : $token , sn :$sn" + ) CallerCloudListenerManager.invokeCloudTokenGot(token, sn) // 异步初始化NetConfig asyncInit() @@ -313,7 +317,7 @@ class HttpDnsStartUp : AndroidStartup() { ) override fun onConnectFailure() { CallerLogger.d(SceneConstant.M_MAIN + TAG, "socket-onConnectFailure") - MogoStatusManager.getInstance().setCloudSocketMode(TAG,false) + MogoStatusManager.getInstance().setCloudSocketMode(TAG, false) } @ChainLog( @@ -326,7 +330,7 @@ class HttpDnsStartUp : AndroidStartup() { ) override fun onConnectSuccess() { CallerLogger.d(SceneConstant.M_MAIN + TAG, "socket-onConnectSuccess") - MogoStatusManager.getInstance().setCloudSocketMode(TAG,true) + MogoStatusManager.getInstance().setCloudSocketMode(TAG, true) } @ChainLog( @@ -339,7 +343,7 @@ class HttpDnsStartUp : AndroidStartup() { ) override fun onConnectLost() { CallerLogger.d(SceneConstant.M_MAIN + TAG, "socket-onConnectLost") - MogoStatusManager.getInstance().setCloudSocketMode(TAG,false) + MogoStatusManager.getInstance().setCloudSocketMode(TAG, false) } @ChainLog( @@ -364,10 +368,4 @@ class HttpDnsStartUp : AndroidStartup() { .init(context, DebugConfig.getSocketAppId(), lat, lon) } - private fun initCloudClientConfig() { - // 使用旧Socket链路 true = 旧链路,false = 新链路 - if (DebugConfig.getProductFlavor() == "fPadLenovoOchTaxi" || DebugConfig.getProductFlavor() == "fPadLenovoOchBus" || DebugConfig.getProductFlavor() == "fPadLenovoOchTaxiPassenger" || DebugConfig.getProductFlavor() == "fPadLenovoOchBusPassenger") { - clientConfig.isUseOriginSocket = true - } - } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 97e1d9d86e..32207c1d81 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -78,6 +78,7 @@ import com.mogo.map.MogoMapUIController import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.map.uicontroller.VisualAngleMode.* import com.mogo.eagle.core.function.business.routeoverlay.* +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager import com.mogo.eagle.core.function.v2x.vip.VipCarManager import com.zhidao.easysocket.utils.L import com.zhidao.support.adas.high.other.permission.BackgrounderPermission @@ -1651,6 +1652,20 @@ class DebugSettingView @JvmOverloads constructor( */ @SuppressLint("SetTextI18n") private fun drawAppInfo() { + when { + AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) -> {// 司机端 + AppConfigInfo.isDriver = true + AppConfigInfo.isConnectedNetty = CallerTelematicManager.getServerStarted() + } + AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) -> { + AppConfigInfo.isDriver = false + AppConfigInfo.isConnectedNetty = CallerTelematicManager.getClientConnStatus() + AppConfigInfo.serverSn = CallerTelematicManager.getServerToken() + } + else -> { + } + } + /** * 设备绑定关系 */ diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoServices.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoServices.java index 017b3c747e..5926f0af9d 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoServices.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/module/MogoServices.java @@ -58,9 +58,9 @@ public class MogoServices implements IMogoIntentListener { intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); mContext.sendBroadcast(intent); - if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) { - MoGoAiCloudRealTime.startRealTime(mContext, DebugConfig.getSocketAppId()); - } +// if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) { +// MoGoAiCloudRealTime.startRealTime(mContext, DebugConfig.getSocketAppId()); +// } } private void registerMogoReceiver(Context context) { @@ -105,9 +105,9 @@ public class MogoServices implements IMogoIntentListener { public void destroy() { CallerLogger.INSTANCE.d(M_OLD_OTHER + TAG, "MogoServices do nothings."); - if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) { - MoGoAiCloudRealTime.stopRealTime(); - } +// if (DebugConfig.isNeedUploadCoordinatesDurationInTime()) { +// MoGoAiCloudRealTime.stopRealTime(); +// } } }