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) { 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() { 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 6f58fc5303..4153f4243a 100644 --- a/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt @@ -81,7 +81,6 @@ class HttpDnsStartUp : AndroidStartup() { // if (ProcessUtils.isMainProcess(context)) { initGDLoc() initHttpDns() - initCloudClientConfig() // } return true } @@ -112,8 +111,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()) { @@ -205,7 +206,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() @@ -315,7 +319,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( @@ -328,7 +332,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( @@ -341,7 +345,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( @@ -366,11 +370,4 @@ class HttpDnsStartUp : AndroidStartup() { .init(context, DebugConfig.getSocketAppId(), lat, lon) } - private fun initCloudClientConfig() { - // 使用旧Socket链路 true = 旧链路,false = 新链路 - if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)|| - AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { - 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/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, 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(); +// } } }