diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index b4cdfb2088..1d1af8189c 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -334,6 +334,11 @@ public class BusPassengerModel { private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){ + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) { } diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java index 457fb25a60..fa686d846f 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerBaseFragment.java @@ -16,7 +16,6 @@ import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; -import com.mogo.eagle.core.function.call.map.CallerSmpManager; import com.mogo.eagle.core.function.view.MapBizView; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -59,9 +58,6 @@ public abstract class BusPassengerBaseFragment onAutopilotStatusResponse(info); } + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotGuardian(MogoReportMsg.MogoReportMessage guardianInfo) { BusTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo); diff --git a/OCH/mogo-och-noop/src/main/java/com/mogo/och/noop/MoGoOCHNoopProvider.kt b/OCH/mogo-och-noop/src/main/java/com/mogo/och/noop/MoGoOCHNoopProvider.kt index 1abf670a2e..9ea1d1dfd3 100644 --- a/OCH/mogo-och-noop/src/main/java/com/mogo/och/noop/MoGoOCHNoopProvider.kt +++ b/OCH/mogo-och-noop/src/main/java/com/mogo/och/noop/MoGoOCHNoopProvider.kt @@ -4,18 +4,8 @@ import android.content.Context import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity import com.alibaba.android.arouter.facade.annotation.Route -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.d -/** - * @author congtaowang - * @since 2021/1/15 - * - * - * 描述 - */ @Route(path = OCHConstants.PATH) class MoGoOCHNoopProvider : IMogoOCH { @@ -31,23 +21,8 @@ class MoGoOCHNoopProvider : IMogoOCH { private var activity: FragmentActivity? = null override fun init(context: Context) { - MogoStatusManager.getInstance().registerStatusChangedListener( - TAG, StatusDescriptor.VR_MODE, statusChangedListener - ) } - private val statusChangedListener = - IMogoStatusChangedListener { descriptor: StatusDescriptor, isTrue: Boolean -> - if (descriptor == StatusDescriptor.VR_MODE) { - // 进入vr模式默认显示网约车小巴fragment - if (isTrue) { - showFragment() - } else { - hideFragment() - } - } - } - private fun showFragment() { activity?.let { if (fragment == null) { @@ -72,17 +47,10 @@ class MoGoOCHNoopProvider : IMogoOCH { } } - private fun hideFragment() { - if (fragment != null) { - d(TAG, "准备hide fragment") - activity?.supportFragmentManager?.beginTransaction()?.hide(fragment!!) - ?.commitAllowingStateLoss() - } - } - override fun createCoverage(activity: FragmentActivity?, containerId: Int?): Fragment? { this.containerId = containerId!! this.activity = activity + showFragment() return null } diff --git a/OCH/mogo-och-noop/src/main/java/com/mogo/och/noop/OchNoopFragment.kt b/OCH/mogo-och-noop/src/main/java/com/mogo/och/noop/OchNoopFragment.kt index 241a04a3a0..a716c3ba70 100644 --- a/OCH/mogo-och-noop/src/main/java/com/mogo/och/noop/OchNoopFragment.kt +++ b/OCH/mogo-och-noop/src/main/java/com/mogo/och/noop/OchNoopFragment.kt @@ -1,6 +1,5 @@ package com.mogo.och.noop -import android.view.View import com.mogo.commons.mvp.MvpFragment import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView import kotlinx.android.synthetic.main.och_noop_fragment_hmi.* @@ -29,21 +28,6 @@ class OchNoopFragment : MvpFragment(), ToggleDebugView.toggleDebugView.toggle(requireContext()) true } - -// cbMsgBoxDriver.setOnCheckedChangeListener { _, isChecked -> -// if (isChecked) { -// viewDriverMsgBoxList.visibility = View.VISIBLE -// viewDriverMsgBoxList.notifyData() -// viewDriverMsgBoxBubble.visibility = View.GONE -// viewDriverMsgBoxBubble.isShowData(false) -// MsgBoxTipView.visibility = View.GONE -// } else { -// viewDriverMsgBoxList.visibility = View.GONE -// viewDriverMsgBoxBubble.visibility = View.VISIBLE -// viewDriverMsgBoxBubble.isShowData(true) -// } -// } - } diff --git a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml index fb8338a2b9..447299cd97 100644 --- a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml +++ b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml @@ -14,6 +14,19 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> + + + + + - - + app:layout_constraintTop_toBottomOf="@+id/viewSpeedChart" /> + tools:visibility="visible" /> @@ -142,11 +148,11 @@ android:layout_height="@dimen/module_hmi_check_size" android:layout_marginStart="25dp" android:layout_marginBottom="40dp" + android:contentDescription="工具箱" android:elevation="@dimen/dp_10" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/viewPerspectiveSwitch" - app:layout_goneMarginStart="50dp" - android:contentDescription="工具箱"/> + app:layout_goneMarginStart="50dp" /> + app:layout_constraintStart_toEndOf="@id/ivToolsView" /> + app:layout_constraintStart_toEndOf="@id/ivBadCaseTools" /> + tools:visibility="gone" /> CallerSweeperFutianCleanSystemListenerManager.INSTANCE.removeListener(TAG); } + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { if (autopilotStatusInfo == null) return; diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 74ec039d91..9a7964d873 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -499,6 +499,10 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener(){ + @Override + public void onAutopilotRouteLineId(long lineId) { + + } @Override public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index b09650e4d3..b65a4f9d02 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -18,7 +18,6 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; -import com.mogo.eagle.core.function.call.map.CallerSmpManager; import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager; import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxBubbleView; import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxButtonView; @@ -93,9 +92,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment getPresenter().checkAndUpdateStatus(phoneTail)); } - /** - * 隐藏鹰眼原有控件 - */ - private void hideEagleConfig() { - //隐藏小地图 - CallerSmpManager.INSTANCE.hidePanel(); - } - @Override public void onResume() { super.onResume(); 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 2b7db7e77d..188faf6027 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 @@ -1144,6 +1144,11 @@ public class TaxiModel { private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() { + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) { } 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 6eeca67db6..9f62ad071a 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 @@ -22,7 +22,6 @@ import com.mogo.eagle.core.data.map.CenterLine; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; -import com.mogo.eagle.core.function.call.map.CallerSmpManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.DateTimeUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; @@ -34,7 +33,6 @@ import com.mogo.och.common.module.map.ICommonNaviChangedCallback; import com.mogo.och.common.module.utils.DateTimeUtil; import com.mogo.och.common.module.utils.NumberFormatUtil; import com.mogo.och.common.module.utils.OCHThreadPoolManager; -import com.mogo.och.common.module.utils.ToastUtilsOch; import com.mogo.och.common.module.voice.VoiceNotice; import com.mogo.och.common.module.wigets.OCHCommitDialog; import com.mogo.och.taxi.R; diff --git a/app/productFlavors/fMultiDisplayOchBus.gradle b/app/productFlavors/fMultiDisplayOchBus.gradle index 7d6a5da0a1..2e6173c679 100644 --- a/app/productFlavors/fMultiDisplayOchBus.gradle +++ b/app/productFlavors/fMultiDisplayOchBus.gradle @@ -36,6 +36,8 @@ project.android.productFlavors { buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.8.102\"" // 构建的是否是演示(美化)模式 buildConfigField 'boolean', 'IS_DEMO_MODE', 'false' + // 构建的是否要动态更换模型 + buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true' // 构建 是否支持多屏异显异交互 buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'true' diff --git a/app/productFlavors/fMultiDisplayOchTaxi.gradle b/app/productFlavors/fMultiDisplayOchTaxi.gradle index 6ddbeaeef7..fba1ab5e63 100644 --- a/app/productFlavors/fMultiDisplayOchTaxi.gradle +++ b/app/productFlavors/fMultiDisplayOchTaxi.gradle @@ -41,6 +41,8 @@ project.android.productFlavors { buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.1.102\"" // 构建的是否是演示(美化)模式 buildConfigField 'boolean', 'IS_DEMO_MODE', 'false' + // 构建的是否要动态更换模型 + buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true' // 构建 是否支持多屏异显异交互 buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'true' diff --git a/app/productFlavors/fPadLenovo.gradle b/app/productFlavors/fPadLenovo.gradle index 634a6e7150..b33dba6460 100644 --- a/app/productFlavors/fPadLenovo.gradle +++ b/app/productFlavors/fPadLenovo.gradle @@ -38,6 +38,8 @@ project.android.productFlavors { buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.1.104\"" // 构建的是否是演示(美化)模式 buildConfigField 'boolean', 'IS_DEMO_MODE', 'false' + // 构建的是否要动态更换模型 + buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true' // 构建 是否支持多屏异显异交互 buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false' diff --git a/app/productFlavors/fPadLenovoOchBus.gradle b/app/productFlavors/fPadLenovoOchBus.gradle index 430c9e079d..e671513ffa 100644 --- a/app/productFlavors/fPadLenovoOchBus.gradle +++ b/app/productFlavors/fPadLenovoOchBus.gradle @@ -41,6 +41,8 @@ project.android.productFlavors { buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.8.102\"" // 构建的是否是演示(美化)模式 buildConfigField 'boolean', 'IS_DEMO_MODE', 'false' + // 构建的是否要动态更换模型 + buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true' // 构建 是否支持多屏异显异交互 buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false' diff --git a/app/productFlavors/fPadLenovoOchBusPassenger.gradle b/app/productFlavors/fPadLenovoOchBusPassenger.gradle index b26f796ab8..508ef2da67 100644 --- a/app/productFlavors/fPadLenovoOchBusPassenger.gradle +++ b/app/productFlavors/fPadLenovoOchBusPassenger.gradle @@ -39,6 +39,8 @@ project.android.productFlavors { buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.8.103\"" // 构建的是否是演示(美化)模式 buildConfigField 'boolean', 'IS_DEMO_MODE', 'false' + // 构建的是否要动态更换模型 + buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true' // 构建 是否支持多屏异显异交互 buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'true' diff --git a/app/productFlavors/fPadLenovoOchSweeper.gradle b/app/productFlavors/fPadLenovoOchSweeper.gradle index 14d07bddb7..0afcc6abaa 100644 --- a/app/productFlavors/fPadLenovoOchSweeper.gradle +++ b/app/productFlavors/fPadLenovoOchSweeper.gradle @@ -41,6 +41,8 @@ project.android.productFlavors { buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.8.102\"" // 构建的是否是演示(美化)模式 buildConfigField 'boolean', 'IS_DEMO_MODE', 'false' + // 构建的是否要动态更换模型 + buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true' // 构建 是否支持多屏异显异交互 buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false' diff --git a/app/productFlavors/fPadLenovoOchTaxi.gradle b/app/productFlavors/fPadLenovoOchTaxi.gradle index 2fc97c5ddf..c9f2a230f2 100644 --- a/app/productFlavors/fPadLenovoOchTaxi.gradle +++ b/app/productFlavors/fPadLenovoOchTaxi.gradle @@ -42,6 +42,8 @@ project.android.productFlavors { buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.1.102\"" // 构建的是否是演示(美化)模式 buildConfigField 'boolean', 'IS_DEMO_MODE', 'false' + // 构建的是否要动态更换模型 + buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true' // 构建 是否支持多屏异显异交互 buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false' diff --git a/app/productFlavors/fPadLenovoOchTaxiPassenger.gradle b/app/productFlavors/fPadLenovoOchTaxiPassenger.gradle index 2b9a92c8b7..36592bccb0 100644 --- a/app/productFlavors/fPadLenovoOchTaxiPassenger.gradle +++ b/app/productFlavors/fPadLenovoOchTaxiPassenger.gradle @@ -41,6 +41,8 @@ project.android.productFlavors { buildConfigField 'String', 'ADAS_CONNECT_IP', "\"192.168.1.103\"" // 构建的是否是演示(美化)模式 buildConfigField 'boolean', 'IS_DEMO_MODE', 'false' + // 构建的是否要动态更换模型 + buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true' // 构建 是否支持多屏异显异交互 buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'true' diff --git a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt index bf3fb9760a..1335dc0e52 100644 --- a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt @@ -1,7 +1,6 @@ package com.mogo.launcher.startup import android.content.Context -import android.util.Log import com.mogo.commons.debug.DebugConfig import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig @@ -10,7 +9,6 @@ import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.deva.net.UrlConfig import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.GsonUtils -import com.mogo.eagle.core.utilcode.util.ProcessUtils import com.mogo.launcher.BuildConfig import com.mogo.launcher.R import com.mogo.test.crashreport.CrashReportConstants @@ -35,7 +33,6 @@ object ConfigStartUp { AppConfigInfo.appBuildTime = BuildConfig.APP_BUILD_TIME // 使用与渠道配置一样的gps提供者提供的数据,app/productFlavors/fPadLenovo.gradle GPS_PROVIDER 0-Android系统,1-工控机,2-OBU FunctionBuildConfig.gpsProvider = BuildConfig.GPS_PROVIDER -// FunctionBuildConfig.gpsProvider = 2 // 演示模式,上一次勾选的数据 FunctionBuildConfig.isDemoMode = BuildConfig.IS_DEMO_MODE // // app安装的身份信息 @@ -43,8 +40,6 @@ object ConfigStartUp { // 各个module需要的url FunctionBuildConfig.urlJson = GsonUtils.fromJson(BuildConfig.URLs, UrlConfig::class.java) - Log.d("ConfigStartUp", "ProcessUtils.getCurrentProcessName():" + ProcessUtils.getCurrentProcessName()) - // // 这里影响当前Activity的身份信息,多进程先保持与原来一样,主进程为司机端,:passenger 进程为乘客端 TODO 暂时不启用,仅做洱海交付,独立乘客屏+宣传视频 // if (ProcessUtils.getCurrentProcessName().contains(":passenger")) { // if (AppIdentityModeUtils.isBus(BuildConfig.APP_IDENTITY_MODE)) { @@ -77,8 +72,8 @@ object ConfigStartUp { DebugConfig.setSocketAppId(BuildConfig.SOCKET_APP_ID) DebugConfig.setMapVersion(BuildConfig.MAP_SDK_VERSION) DebugConfig.setMapOptVersion(BuildConfig.MAP_SDK_OPT_VERSION) - DebugConfig.setNeedUploadCoordinatesInTime(BuildConfig.IS_NEED_UPLOAD_COORDINATES_IN_TIME) DebugConfig.setMultiDisplay(BuildConfig.IS_MULTI_DISPLAY) + DebugConfig.setCarModelChange(BuildConfig.IS_CAR_MODEL_CHANGE) } private fun initOtherConfig(context: Context) { @@ -108,23 +103,27 @@ object ConfigStartUp { val mapParams = MapParams.init() mapParams.setDebugMode(false) //todo 1-使用本地地图数据,0-使用在线地图数据 //.setDataFileSource(1) + .setDebugMode(false) .setCoordinateType(MapParams.COORDINATETYPE_GCJ02) .setPerspectiveMode(MapParams.MAP_PERSPECTIVE_UP_CAR) - .setHDVisibileArray(intArrayOf( - HDTypes.DIVIDER.type, - HDTypes.ROAD_AREA.type, - HDTypes.STOP_LINE.type, - HDTypes.ARROW.type, - HDTypes.STATION_BRIDGE.type, - HDTypes.ZEBRA_LINE.type, - HDTypes.GREEN_BELT.type, - HDTypes.DIVERSION.type, - HDTypes.SAFE_ISLAND.type, - HDTypes.ALPHANUMERIC.type, - HDTypes.GUARDBAR.type, - HDTypes.TRAFFIC_DEVICE.type, - HDTypes.CABLE.type, - HDTypes.SIGNAL_LINE.type)) + .setHDVisibileArray( + intArrayOf( + HDTypes.DIVIDER.type, + HDTypes.ROAD_AREA.type, + HDTypes.STOP_LINE.type, + HDTypes.ARROW.type, + HDTypes.STATION_BRIDGE.type, + HDTypes.ZEBRA_LINE.type, + HDTypes.GREEN_BELT.type, + HDTypes.DIVERSION.type, + HDTypes.SAFE_ISLAND.type, + HDTypes.ALPHANUMERIC.type, + HDTypes.GUARDBAR.type, + HDTypes.TRAFFIC_DEVICE.type, + HDTypes.CABLE.type, + HDTypes.SIGNAL_LINE.type + ) + ) // .setZoom( 20 ) // .setPointToCenter( 0.734375f, 0.5f ) //todo 2D模式下需要注意ADAS部分遮挡 diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt index 86a2933f6e..c820952fa3 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/FuncBizProvider.kt @@ -4,15 +4,18 @@ import android.content.Context import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.camera.CameraEntity +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.function.api.biz.IMoGoFuncBizProvider import com.mogo.eagle.core.function.api.biz.IMoGoNoticeNetCallBack +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.function.biz.dispatch.DispatchAutoPilotManager.Companion.dispatchAutoPilotManager import com.mogo.eagle.function.biz.monitoring.CronTaskManager.Companion.cronTaskManager import com.mogo.eagle.function.biz.notice.NoticeSocketManager.Companion.noticeSocketManager import com.mogo.eagle.function.biz.notice.network.NoticeNetWorkManager import com.mogo.eagle.function.biz.v2x.overview.OverViewDataManager import com.mogo.eagle.function.biz.v2x.overview.db.OverviewDb +import com.mogo.eagle.function.biz.v2x.road.LineUploadManager import com.mogo.eagle.function.biz.v2x.trafficlight.core.MogoTrafficLightManager import com.mogo.eagle.function.biz.v2x.vip.VipCarManager @@ -22,13 +25,19 @@ class FuncBizProvider : IMoGoFuncBizProvider { override val functionName: String get() = "FuncBiz" + private var mContext:Context? = null + override fun init(context: Context) { + mContext = context noticeSocketManager.init(context) dispatchAutoPilotManager.init(context) cronTaskManager.startCronTask() OverviewDb.getDb(context) MogoTrafficLightManager.INSTANCE.initServer(context) VipCarManager.INSTANCE.initServer(context) + if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ + LineUploadManager.getInstance(context)?.init() + } // RedLightWarningManager.INSTANCE.listenTrafficLight() } @@ -81,6 +90,11 @@ class FuncBizProvider : IMoGoFuncBizProvider { cronTaskManager.release() VipCarManager.INSTANCE.destroy() + if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ + mContext?.let { + LineUploadManager.getInstance(it)?.onDestroy() + } + } // RedLightWarningManager.INSTANCE.onDestroy() } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt new file mode 100644 index 0000000000..aed87f69b2 --- /dev/null +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/ILineUploadApi.kt @@ -0,0 +1,16 @@ +package com.mogo.eagle.function.biz.v2x.road + +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.data.v2x.LineUploadData +import io.reactivex.Observable +import retrofit2.http.Body +import retrofit2.http.Headers +import retrofit2.http.POST + +interface ILineUploadApi { + + @Headers("Content-type:application/json;charset=UTF-8" ) + @POST( "" ) + fun uploadLineId(@Body lineId: LineUploadData): Observable + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt new file mode 100644 index 0000000000..790ca44ab0 --- /dev/null +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/road/LineUploadManager.kt @@ -0,0 +1,75 @@ +package com.mogo.eagle.function.biz.v2x.road + +import android.content.Context +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.constants.HostConst.DATA_CENTER_HOST +import com.mogo.eagle.core.data.v2x.LineUploadData +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import io.reactivex.schedulers.Schedulers + +class LineUploadManager private constructor(context: Context) : IMoGoAutopilotStatusListener { + + companion object { + + private const val TAG = "LineUploadManager" + + @Volatile + private var lineUploadManager: LineUploadManager? = null + + @Synchronized + fun getInstance(context: Context): LineUploadManager? { + if (lineUploadManager == null) { + synchronized(LineUploadManager::class.java) { + if (lineUploadManager == null) { + lineUploadManager = LineUploadManager(context) + } + } + } + return lineUploadManager + } + } + + private var mContext: Context? = null + private var disposable: Disposable? = null + + init { + mContext = context + } + + fun init() { + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + } + + override fun onAutopilotRouteLineId(lineId: Long) { + super.onAutopilotRouteLineId(lineId) + if (lineId > 0) { + uploadLine(lineId) + } + } + + private fun uploadLine(lineId: Long) { + val lineUploadData = LineUploadData(lineId, MoGoAiCloudClientConfig.getInstance().sn) + disposable = MoGoRetrofitFactory.getInstance(DATA_CENTER_HOST) + .create(ILineUploadApi::class.java) + .uploadLineId(lineUploadData) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ data -> + CallerLogger.d(TAG, " uploadLine : $data") + }, { + CallerLogger.d(TAG, "e : ${it.message}") + }) + } + + fun onDestroy() { + mContext = null + disposable?.dispose() + CallerAutoPilotStatusListenerManager.removeListener(TAG) + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt index 98f7915b94..72b537691f 100644 --- a/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt +++ b/core/function-impl/mogo-core-function-biz/src/main/java/com/mogo/eagle/function/biz/v2x/trafficlight/core/MogoTrafficLightManager.kt @@ -137,13 +137,6 @@ class MogoTrafficLightManager : IMoGoChassisLocationGCJ02Listener { } } - fun getTrafficLightCurrentState(): TrafficLightDetail? { - trafficLightResult?.let { - return it.laneList - } - return null - } - fun getRoadResult(): RoadIDResult? { return roadIDResult } diff --git a/core/function-impl/mogo-core-function-datacenter/build.gradle b/core/function-impl/mogo-core-function-datacenter/build.gradle index a689c55ff7..70e7c4ac08 100644 --- a/core/function-impl/mogo-core-function-datacenter/build.gradle +++ b/core/function-impl/mogo-core-function-datacenter/build.gradle @@ -58,7 +58,6 @@ dependencies { implementation rootProject.ext.dependencies.amapnavi3dmap implementation project(':libraries:mogo-obu') implementation project(':libraries:mogo-adas') - implementation project(':libraries:mogo-adas-data') if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { implementation rootProject.ext.dependencies.mogo_core_utils diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/AndroidManifest.xml b/core/function-impl/mogo-core-function-datacenter/src/main/AndroidManifest.xml index e641d09ce5..63dc07bcfc 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/AndroidManifest.xml +++ b/core/function-impl/mogo-core-function-datacenter/src/main/AndroidManifest.xml @@ -3,13 +3,7 @@ package="com.mogo.eagle.core.function.datacenter"> - - - - - - @@ -18,13 +12,6 @@ - - - - - - - diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoTelematicProvider.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoTelematicProvider.kt index b1f0fd6a96..12eeedf1da 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoTelematicProvider.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/MoGoTelematicProvider.kt @@ -4,6 +4,7 @@ import android.content.Context import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.eagle.core.data.constants.MogoServicePaths import com.mogo.eagle.core.function.api.telematic.IMogoTelematicProvider +import com.mogo.telematic.MogoProtocolMsg import com.mogo.telematic.NSDNettyManager @Route(path = MogoServicePaths.PATH_TELEMATIC_PROVIDER) @@ -26,4 +27,16 @@ class MoGoTelematicProvider: IMogoTelematicProvider { override fun getServerToken(): String { return NSDNettyManager.getInstance().serverSn } + + override fun sendMsgToAllClients(type: Int, byteArray: ByteArray) { + NSDNettyManager.getInstance().sendMsgToAllClients( + MogoProtocolMsg(type, byteArray.size, byteArray) + ) + } + + override fun sendMsgToServer(type: Int, byteArray: ByteArray) { + NSDNettyManager.getInstance().sendMogoProtocolMsgToServer( + MogoProtocolMsg(type, byteArray.size, byteArray), + null) + } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt index 17471344ec..5144d53600 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/telematic/TeleMsgHandler.kt @@ -8,10 +8,12 @@ import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS +import com.mogo.eagle.core.data.telematic.TelematicConstant import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setDemoMode import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.setIgnoreConditionDraw import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.* import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.ToastUtils @@ -122,6 +124,9 @@ class TeleMsgHandler : IMsgHandler { } } } + TelematicConstant.BUSINESS_STRING -> { + CallerTelematicListenerManager.invokeReceivedMsg(TelematicConstant.BUSINESS_STRING, it.body) + } else -> { } } @@ -166,6 +171,9 @@ class TeleMsgHandler : IMsgHandler { invokeNettyConnResult("司机屏SN未获取到,不发送给乘客屏") } } + TelematicConstant.BUSINESS_STRING -> { + CallerTelematicListenerManager.invokeReceivedMsg(TelematicConstant.BUSINESS_STRING, it.body) + } else -> { } } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt index c66bdb3f4c..4c43812fbe 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/location/MoGoLocationDispatcher.kt @@ -223,14 +223,14 @@ object MoGoLocationDispatcher : /** * OBU定位回调监听 */ - override fun onObuLocationWGS84(data: MogoObuHvBasicsData) { + override fun onObuLocationWGS84(data: MessagePad.GnssInfo) { // 更新GNSS 信息 - lastOBULocation.longitude = data.vehBasicsMsg.longitude - lastOBULocation.latitude = data.vehBasicsMsg.latitude - lastOBULocation.heading = data.vehBasicsMsg.heading - lastOBULocation.gnssSpeed = data.vehBasicsMsg.speed.toFloat() - lastOBULocation.altitude = data.vehBasicsMsg.elevation - lastOBULocation.satelliteTime = data.vehBasicsMsg.secMark + lastOBULocation.longitude = data.longitude + lastOBULocation.latitude = data.latitude + lastOBULocation.heading = data.heading + lastOBULocation.gnssSpeed = data.gnssSpeed.toFloat() + lastOBULocation.altitude = data.altitude + lastOBULocation.satelliteTime = (data.satelliteTime * 1000).toLong() lastOBULocation.lastReceiveTime = TimeUtils.getNowMills() // 将高德中的一些用于业务的数据进行融合,例如:CityCode、address等 diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt index 39f0cd00a1..f76929ab06 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoObuDcCombineManager.kt @@ -256,24 +256,8 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener when (status) { // 添加 MogoObuConstants.STATUS.ADD -> { - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - appId, - alertContent, - ttsContent - ) - ).apply { - sourceType = DataSourceType.TELEMATIC - } - ) - CallerHmiManager.warningV2X( - appId, - alertContent, - ttsContent, null, direction - ) - + saveObuToDcData(appId, alertContent, ttsContent) + showWarning(appId, alertContent, ttsContent, direction) // 更新数据,是否需要 // TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(rsiWarningData)?.let { // CallerMapUIServiceManager.getMarkerService() @@ -342,25 +326,8 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener when (rsmWarningData.warningMsg.warningDataList[0].status) { MogoObuConstants.STATUS.ADD -> { // 添加 - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - v2xType, - alertContent, - ttsContent, - ) - ).apply { - sourceType = DataSourceType.TELEMATIC - } - ) - CallerHmiManager.warningV2X( - v2xType, - alertContent, - ttsContent, - null, - direction - ) + saveObuToDcData(v2xType, alertContent, ttsContent) + showWarning(v2xType, alertContent, ttsContent, direction) // 更新数据 TODO // TrafficDataConvertUtils.cvxPtcThreatIndInfo2TrafficData(rsmWarningData)?.let { @@ -459,27 +426,19 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener return when (targetClassification) { MogoObuConstants.VEH_TARGET_POSITION.AHEAD_IN_LANE, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_TOP //正前方 - MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_BOTTOM //正后方 - MogoObuConstants.VEH_TARGET_POSITION.INTERSECTION_RIGHT -> WarningDirectionEnum.ALERT_WARNING_RIGHT //正右方 - MogoObuConstants.VEH_TARGET_POSITION.INTERSECTION_LEFT -> WarningDirectionEnum.ALERT_WARNING_LEFT //正左方 - MogoObuConstants.VEH_TARGET_POSITION.AHEAD_LEFT, MogoObuConstants.VEH_TARGET_POSITION.AHEAD_FAR_LEFT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_LEFT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_FAR_LEFT -> WarningDirectionEnum.ALERT_WARNING_TOP_LEFT //左前方 - MogoObuConstants.VEH_TARGET_POSITION.AHEAD_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.AHEAD_FAR_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_FAT_RIGHT -> WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT //右前方 - MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_LEFT, MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_FAR_LEFT, -> WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT //左后方 - MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_FAR_RIGHT, -> WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT //右后方 - MogoObuConstants.VEH_TARGET_POSITION.UNCLASSIFIED -> WarningDirectionEnum.ALERT_WARNING_NON //未知 else -> WarningDirectionEnum.ALERT_WARNING_ALL } @@ -552,24 +511,8 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener "${M_OBU}${TAG}", "MogoObuDcCombineManager changeTrafficLightStatus 闯红灯 --------> ttsContent = $ttsContent ---alertContent = $alertContent " ) - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, - alertContent, - ttsContent - ) - ).apply { - sourceType = DataSourceType.TELEMATIC - } - ) - - CallerHmiManager.warningV2X( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, - alertContent, - ttsContent// 只有第一次才tts,防止更新的时候不断的提醒 - ) + saveObuToDcData(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, alertContent, ttsContent) + showWarning(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, alertContent, ttsContent, WarningDirectionEnum.ALERT_WARNING_NON) } } @@ -605,23 +548,8 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener ) val maxSpeed = currentLight.suggestMaxSpeed * 3.6 if (maxSpeed > 0) { - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, - alertContent, - ttsContent - ) - ).apply { - sourceType = DataSourceType.TELEMATIC - } - ) - CallerHmiManager.warningV2X( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, - alertContent, - ttsContent// 只有第一次才tts,防止更新的时候不断的提醒 - ) + saveObuToDcData(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, alertContent, ttsContent) + showWarning(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, alertContent, ttsContent, WarningDirectionEnum.ALERT_WARNING_NON) } } } @@ -666,4 +594,35 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener } } + /** + * 保存obu通过工控机传输的数据到消息盒子 + */ + private fun saveObuToDcData(type: String, content: String, tts: String) { + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + type, + content, + tts + ) + ).apply { + sourceType = DataSourceType.TELEMATIC + } + ) + } + + /** + * 消息盒子对应消息的语音播报 + */ + private fun showWarning(type: String, content: String, tts: String, direction: WarningDirectionEnum) { + CallerHmiManager.warningV2X( + type, + content, + tts, + null, + direction + ) + } + } diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt index 448913e959..56ccec4d4b 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt @@ -29,7 +29,6 @@ import com.mogo.support.obu.constants.MogoObuComType import com.mogo.support.obu.constants.MogoObuConstants import com.mogo.support.obu.constants.MogoObuTopicId import com.mogo.support.obu.model.* -import com.mogo.support.obu.model.advance.SpatLight import com.mogo.support.obu.option.MogoObuCom import com.mogo.support.obu.option.MogoObuOptions import com.zhidao.support.obu.ObuManager @@ -72,7 +71,7 @@ class MogoPrivateObuNewManager private constructor() { .registerTopic(MogoObuTopicId.MAP_MATCH) .build() - //每次连接的时候如果连接连接了,先断开 + //每次连接的时候如果连接连接了,先断开,防止ip改变等导致的连接失败 if (ObuManager.getInstance().connectStatus == 1) { try { ObuManager.getInstance().disconnect() @@ -80,7 +79,6 @@ class MogoPrivateObuNewManager private constructor() { e.printStackTrace() } } - ObuManager.getInstance().connect(options) } @@ -92,7 +90,6 @@ class MogoPrivateObuNewManager private constructor() { ObuManager.getInstance().disconnect() } - private val mogoObuListener: OnObuListener = object : OnObuListener { /** * 连接状态的改变 @@ -111,15 +108,15 @@ class MogoPrivateObuNewManager private constructor() { * HV车辆基础信息 gnssInfo */ override fun onGnssInfo(gnssInfo: MessagePad.GnssInfo?) { - if (gnssInfo != null ) { + if (gnssInfo != null) { CallerLogger.d( "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "onGnssInfo lon = ${gnssInfo.longitude} --- lat = ${gnssInfo.latitude} ---speed = ${gnssInfo.gnssSpeed} ---heading = ${gnssInfo.heading} --acceleration = ${gnssInfo.acceleration} --yawRate = ${gnssInfo.yawRate}" ) // 使用与渠道配置一样的gps提供者提供的数据,app/productFlavors/fPadLenovo.gradle GPS_PROVIDER 0-Android系统,1-工控机,2-OBU if (2 == FunctionBuildConfig.gpsProvider) { - // 同步给MAP地图 TODO -// CallerObuLocationWGS84ListenerManager.invokeObuLocationWGS84(gnssInfo) + // 同步给MAP地图 + CallerObuLocationWGS84ListenerManager.invokeObuLocationWGS84(gnssInfo) // 同步更新经纬度和系统时间至 AutoPilotStatusListener CallerAutoPilotStatusListenerManager.updateAutoPilotLatLon( System.currentTimeMillis() / 1000.0, @@ -244,9 +241,6 @@ class MogoPrivateObuNewManager private constructor() { //车内标牌 MogoObuConstants.RSI_SCENE_TYPE.IVS.toString() -> { when (data.warningMsgList[0].signSerialNum) { -// MogoObuConstants.RTS.RTI_TYPE_INTERSECTION -> { //十字路口 -// appId = EventTypeEnumNew.TYPE_ID_NTERSECTION.poiType -// } MogoObuConstants.RTS.RTI_TYPE_SHAPR_TURNS -> { //急转弯 appId = EventTypeEnumNew.TYPE_ID_SHAPR_TURNS.poiType } @@ -296,11 +290,6 @@ class MogoPrivateObuNewManager private constructor() { // appId = // EventTypeEnumNew.TYPE_USECASE_ID_ROAD_SPEED_LIMIT.poiType // } - -// MogoObuConstants.RTS.RTI_TYPE_GO_STRAIGHT_TURN_RIGHT -> { //直行或右转 -// appId = -// EventTypeEnumNew.TYPE_USECASE_ID_GO_STRAIGHT_TURN_RIGHT.poiType -// } MogoObuConstants.RTS.RTI_TYPE_BUS_WARNING -> { //公交提醒 appId = EventTypeEnumNew.TYPE_USECASE_ID_BUS_WARNING.poiType } @@ -365,30 +354,12 @@ class MogoPrivateObuNewManager private constructor() { when (status) { MogoObuConstants.STATUS.ADD -> { // 添加 - //显示警告红边 -// CallerHmiManager.showWarning(direction) //不显示弹框,语音提示,数据在消息盒子里面展示,此处不在处理弹框 if (alertContent.isEmpty() || ttsContent.isEmpty()) { return } - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - appId, - alertContent, - ttsContent - ) - ).apply { - sourceType = DataSourceType.OBU - } - ) - CallerHmiManager.warningV2X( - appId, - alertContent, - ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - null, direction - ) + saveObuData(appId, alertContent, ttsContent) + showWarning(appId, alertContent, ttsContent, direction) // 更新数据 TrafficDataConvertUtilsNew.cvxRtiThreatIndInfo2TrafficData(data)?.let { @@ -472,19 +443,6 @@ class MogoPrivateObuNewManager private constructor() { } MogoObuConstants.STATUS.UPDATE -> { // 更新 - //处理删除逻辑, -// if (rsmPtcIdMap.containsKey(data.participant.ptcId.toString())) { -// var oldTime = rsmPtcIdMap[data.participant.ptcId.toString()] -// var timeDiff = (System.currentTimeMillis() - oldTime!!) / 1000 -// if (timeDiff > 3) { //超过3秒,删除对应弱势交通元素 -// CallerMapUIServiceManager.getMarkerService() -// ?.removeCvxRvInfoIndInfo(data.participant.ptcId.toString()) -// } -// rsmPtcIdMap.remove(data.participant.ptcId.toString()) -// rsmPtcIdMap[data.participant.ptcId.toString()] = System.currentTimeMillis() -// } else { -// rsmPtcIdMap[data.participant.ptcId.toString()] = System.currentTimeMillis() -// } } MogoObuConstants.STATUS.DELETE -> { // 删除 @@ -522,25 +480,8 @@ class MogoPrivateObuNewManager private constructor() { if (alertContent.isEmpty() || ttsContent.isEmpty()) { return } - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - v2xType, - alertContent, - ttsContent - ) - ).apply { - sourceType = DataSourceType.OBU - } - ) - - CallerHmiManager.warningV2X( - v2xType, - alertContent, - ttsContent,// 只有第一次才tts,防止更新的时候不断的提醒 - null, direction - ) + saveObuData(v2xType, alertContent, ttsContent) + showWarning(v2xType, alertContent, ttsContent, direction) } MogoObuConstants.STATUS.UPDATE -> {// 更新 @@ -593,9 +534,8 @@ class MogoPrivateObuNewManager private constructor() { } } } - } - } - } + } + } /** * 获取消息的方位 车辆相关 @@ -605,27 +545,19 @@ class MogoPrivateObuNewManager private constructor() { return when (targetClassification) { MogoObuConstants.VEH_TARGET_POSITION.AHEAD_IN_LANE, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_TOP //正前方 - MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_IN_LANE -> WarningDirectionEnum.ALERT_WARNING_BOTTOM //正后方 - MogoObuConstants.VEH_TARGET_POSITION.INTERSECTION_RIGHT -> WarningDirectionEnum.ALERT_WARNING_RIGHT //正右方 - MogoObuConstants.VEH_TARGET_POSITION.INTERSECTION_LEFT -> WarningDirectionEnum.ALERT_WARNING_LEFT //正左方 - MogoObuConstants.VEH_TARGET_POSITION.AHEAD_LEFT, MogoObuConstants.VEH_TARGET_POSITION.AHEAD_FAR_LEFT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_LEFT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_FAR_LEFT -> WarningDirectionEnum.ALERT_WARNING_TOP_LEFT //左前方 - MogoObuConstants.VEH_TARGET_POSITION.AHEAD_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.AHEAD_FAR_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.ONCOMING_FAT_RIGHT -> WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT //右前方 - MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_LEFT, MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_FAR_LEFT, -> WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT //左后方 - MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_RIGHT, MogoObuConstants.VEH_TARGET_POSITION.BEHEAD_FAR_RIGHT, -> WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT //右后方 - MogoObuConstants.VEH_TARGET_POSITION.UNCLASSIFIED -> WarningDirectionEnum.ALERT_WARNING_NON //未知 else -> WarningDirectionEnum.ALERT_WARNING_ALL } @@ -633,10 +565,9 @@ class MogoPrivateObuNewManager private constructor() { /** * 构造对应展示数据和场景 根据obu的场景,add change delete确定是否展示 - * * @param appId 使用WarningTypeEnum获取icon、提示内容、tts内容 TODO 添加事件频繁播报拦截 - * - * @see com.mogo.module.common.enums.EventTypeEnum + * @see com.mogo.module.common.enums.EventTypeEnumNew + * EventTypeEnumNew在定义的id为了防止重复,和原始数据是不一样的,有对应关系 */ private fun handleSdkObu( appId: String, @@ -650,12 +581,14 @@ class MogoPrivateObuNewManager private constructor() { var ttsContent: String = "" var changeVisualAngle = false when (appId) { - //交叉路口碰撞预警 + //前向碰撞预警 MogoObuConstants.V2X_WARNING_TYPE.FCW.toString() -> { alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType) ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType) + +// ObuManager.getInstance().obuRvToTrackedObject(info) //todo emArrow } //交叉路口碰撞预警 @@ -766,9 +699,9 @@ class MogoPrivateObuNewManager private constructor() { } // 这里处理固定的提示信息,包括了<紧急车辆提醒> - else -> { //TODO - // ttsContent = EventTypeEnumNew.getWarningTts(appId.toString()) - // alertContent = EventTypeEnumNew.getWarningContent(appId.toString()) + else -> { + // ttsContent = EventTypeEnumNew.getWarningTts(appId.toString()) + // alertContent = EventTypeEnumNew.getWarningContent(appId.toString()) } } @@ -782,18 +715,7 @@ class MogoPrivateObuNewManager private constructor() { ) if (level == 2 || level == 3) { //不显示弹框,其它保留 - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - appId, - alertContent, - ttsContent - ) - ).apply { - sourceType = DataSourceType.OBU - } - ) + saveObuData(appId, alertContent, ttsContent) CallerHmiManager.warningV2X( appId, alertContent, @@ -837,7 +759,11 @@ class MogoPrivateObuNewManager private constructor() { /** * 处理红绿灯 */ - private fun handlerTrafficLight(appId: Int, status: Int, lights: MutableList) { + private fun handlerTrafficLight( + appId: Int, + status: Int, + lights: MutableList + ) { CallerLogger.d( "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "handlerTrafficLight --- status = $status ---lights.size = ${lights.size} ---lights = $lights ---appId = $appId" @@ -845,8 +771,7 @@ class MogoPrivateObuNewManager private constructor() { when (status) { // 添加 MogoObuConstants.STATUS.ADD, - MogoObuConstants.STATUS.UPDATE - -> { + MogoObuConstants.STATUS.UPDATE -> { if (lights != null && lights.isNotEmpty()) { changeTrafficLightStatus(appId, lights) } @@ -857,9 +782,7 @@ class MogoPrivateObuNewManager private constructor() { CallerTrafficLightListenerManager.disableTrafficLight() isShowGreenWave = false isShowRunRedLight = false - // lightCountDownRed = 1 - // lightCountDownGreen = 1 - // lightCountDownYellow = 1 + CallerTrafficLightListenerManager.invokeTrafficLightDisapper() } } } @@ -867,7 +790,6 @@ class MogoPrivateObuNewManager private constructor() { private var isShowGreenWave = false private var isShowRunRedLight = false - /** * 修改红绿灯 */ @@ -893,31 +815,13 @@ class MogoPrivateObuNewManager private constructor() { if (!isShowRunRedLight) { isShowRunRedLight = true CallerLogger.d( - "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", - "changeTrafficLightStatus 闯红灯 --------> " - ) + "$M_OBU${MogoObuConst.TAG_MOGO_NEW_OBU}", "changeTrafficLightStatus 闯红灯 --------> ") ttsContent = EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType) alertContent = EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType) - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, - alertContent, - ttsContent - ) - ).apply { - sourceType = DataSourceType.OBU - } - ) - - CallerHmiManager.warningV2X( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, - alertContent, - ttsContent// 只有第一次才tts,防止更新的时候不断的提醒 - ) + saveObuData(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, alertContent, ttsContent) + showWarning(EventTypeEnumNew.TYPE_USECASE_ID_IVP_RED.poiType, alertContent, ttsContent, WarningDirectionEnum.ALERT_WARNING_NON) } } @@ -935,33 +839,16 @@ class MogoPrivateObuNewManager private constructor() { ttsContent = String.format( EventTypeEnumNew.getWarningTts(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), - adviceSpeedTts - ) + adviceSpeedTts) alertContent = String.format( EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType), - adviceSpeed - ) + adviceSpeed) val maxSpeed = currentLight.suggestMaxSpeed if (maxSpeed > 0) { - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.V2X, - V2XMsg( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, - alertContent, - ttsContent - ) - ).apply { - sourceType = DataSourceType.OBU - } - ) - CallerHmiManager.warningV2X( - EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, - alertContent, - ttsContent// 只有第一次才tts,防止更新的时候不断的提醒 - ) + saveObuData(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, alertContent, ttsContent) + showWarning(EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType, alertContent, ttsContent, WarningDirectionEnum.ALERT_WARNING_NON) } } } @@ -1004,4 +891,39 @@ class MogoPrivateObuNewManager private constructor() { ) } } - } + } + + /** + * 保存obu直连数据到消息盒子 + */ + private fun saveObuData(type: String, content: String, tts: String) { + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + type, + content, + tts + ) + ).apply { + sourceType = DataSourceType.OBU + } + ) + } + + /** + * 消息盒子对应消息的语音播报 + */ + private fun showWarning(type: String, content: String, tts: String, direction: WarningDirectionEnum) { + CallerHmiManager.warningV2X( + type, + content, + tts, + null, + direction + ) + } + +} + + diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/adapter/MoGoObuListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/adapter/MoGoObuListenerImpl.kt index 2ca1b43239..17e01071e0 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/adapter/MoGoObuListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/adapter/MoGoObuListenerImpl.kt @@ -1,15 +1,17 @@ package com.mogo.eagle.core.function.datacenter.obu.adapter import com.mogo.eagle.core.function.call.obu.* -import com.mogo.support.obu.OnMogoObuListener +import com.mogo.support.obu.ObuScene import com.mogo.support.obu.constants.Define.ConnectStatus import com.mogo.support.obu.model.* +import com.zhidao.support.obu.OnObuListener +import mogo.telematics.pad.MessagePad /** * 适配 OBU 回调监听分发,这里不做业务,只做数据包装及分发处理 * @author dong hong yu */ -object MoGoObuListenerImpl : OnMogoObuListener() { +object MoGoObuListenerImpl : OnObuListener { /** * 连接状态 @@ -36,8 +38,10 @@ object MoGoObuListenerImpl : OnMogoObuListener() { * @param data 数据 * @since 1.0.0 */ - override fun onMogoObuHvBasics(data: MogoObuHvBasicsData) { - CallerObuLocationWGS84ListenerManager.invokeObuLocationWGS84(data) + override fun onGnssInfo(gnssInfo: MessagePad.GnssInfo?) { + if (gnssInfo != null) { + CallerObuLocationWGS84ListenerManager.invokeObuLocationWGS84(gnssInfo) + } } /** @@ -46,8 +50,7 @@ object MoGoObuListenerImpl : OnMogoObuListener() { * @param data 数据 * @since 1.0.0 */ - override fun onMogoObuRvWarning(data: MogoObuRvWarningData) { - CallerObuWarningRvListenerManager.invokeObuRvWarning(data) + override fun onObuRvWarning(rvWarningData: ObuScene.RvWarningData?) { } /** @@ -56,8 +59,7 @@ object MoGoObuListenerImpl : OnMogoObuListener() { * @param data 数据 * @since 1.0.0 */ - override fun onMogoObuSpatWarning(data: MogoObuSpatWarningData) { - + override fun onObuSpatWarning(spatWarningData: ObuScene.SpatWarningData?) { } /** @@ -66,8 +68,7 @@ object MoGoObuListenerImpl : OnMogoObuListener() { * @param data 数据 * @since 1.0.0 */ - override fun onMogoObuRsiWarning(data: MogoObuRsiWarningData) { - + override fun onObuRsiWarning(rsiWarningData: ObuScene.RsiWarningData?) { } /** @@ -76,7 +77,7 @@ object MoGoObuListenerImpl : OnMogoObuListener() { * @param data 数据 * @since 1.0.0 */ - override fun onMogoObuRsmWarning(data: MogoObuRsmWarningData) { + override fun onObuRsmWarning(rsmWarningData: ObuScene.RsmWarningData?) { } /** @@ -85,6 +86,8 @@ object MoGoObuListenerImpl : OnMogoObuListener() { * @param data 数据 * @since 1.0.0 */ - override fun onMogoObuMapMath(data: MogoObuMapMathData) { + override fun onObuMapMath(mapMatchData: ObuScene.MapMatchData?) { + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuRsuTestTriggerReceiver.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuRsuTestTriggerReceiver.kt deleted file mode 100644 index d79a247af1..0000000000 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuRsuTestTriggerReceiver.kt +++ /dev/null @@ -1,120 +0,0 @@ -package com.mogo.eagle.core.function.datacenter.obu.receiver - -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -//import com.mogo.eagle.core.function.obu.mogo.MogoObuConst -//import com.mogo.eagle.core.function.datacenter.obu.MogoPrivateObuManager -//import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -//import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU -//import com.zhidao.support.obu.constants.ObuConstants -//import com.zhidao.support.obu.model.CvxIvpThreatIndInfo -//import com.zhidao.support.obu.model.CvxPtcThreatIndInfo -//import com.zhidao.support.obu.model.CvxRtiThreatIndInfo -//import com.zhidao.support.obu.model.CvxSlwThreatIndInfo -//import com.zhidao.support.obu.model.advance.* - -/** - * @author lixiaopeng - * @date 2021/8/18 - * - * OBU 测试使用 - * 红绿灯 - */ -class ObuRsuTestTriggerReceiver : BroadcastReceiver() { - private var mContext: Context? = null - - companion object { - private const val TAG = "ObuRsuTestTriggerReceiver" - } - - override fun onReceive(context: Context, intent: Intent) { - mContext = context - -// val obuType = intent.getIntExtra(MogoObuConst.BROADCAST_OBU_TYPE_EXTRA_KEY, 0) -// val obuStatus = intent.getIntExtra(MogoObuConst.BROADCAST_OBU_STATES_EXTRA_KEY, 0) -// val obuLevel = intent.getIntExtra(MogoObuConst.BROADCAST_OBU_LEVEL_EXTRA_KEY, 3) -// val indicator = intent.getIntExtra(MogoObuConst.BROADCAST_LIGHT_LEVEL_EXTRA_KEY, 0) -// val pctType = intent.getIntExtra(MogoObuConst.BROADCAST_PTC_INFO_EXTRA_KEY, 0) -// val rtiType = intent.getIntExtra(MogoObuConst.BROADCAST_RTI_TYPE_EXTRA_KEY, 0) -// -// CallerLogger.d( -// "$M_OBU$TAG", "obuStatus:$obuStatus phase:$indicator obuType:$obuType obuLevel:$obuLevel" -// ) -// -// when (obuType) { -// ObuConstants.USE_CASE_ID.IVP -> { //构建红绿灯数据 -// val cvxIvpThreatIndInfo = CvxIvpThreatIndInfo(1, 1, 1L) -// -// val ivpThreat = IvpThreat(1, obuType, null, 1000, obuLevel, 100) -// -// cvxIvpThreatIndInfo.threat_info = ivpThreat -// -// val lightList = listOf( -// Light(1, 0x0, 1000, 3000, 6000, 3000, 100, 1000), -// Light(1, 0x1, 1000, 3000, 6000, 3000, 100, 1000), -// Light(1, 0x2, 1000, 3000, 6000, 3000, 100, 1000), -// Light(1, 0x3, 1000, 3000, 6000, 3000, 100, 1000) -// ) -// val ivpThreatExt = IvpThreatExt(1, 1000, 1000, 0, indicator, lightList) -// cvxIvpThreatIndInfo.ext_info = ivpThreatExt -// cvxIvpThreatIndInfo.status = obuStatus -// cvxIvpThreatIndInfo.link_id = "1" -// -// MogoPrivateObuManager.INSTANCE.getMogoObuListener() -// .onCvxIvpThreatIndInfo(cvxIvpThreatIndInfo) -// } -// -// ObuConstants.USE_CASE_ID.SLW -> { //限速预警 -// val cvxSlwThreatIndInfo = CvxSlwThreatIndInfo(1, 1, 1L) -// val slwThreatExt = SlwThreatExt(1, 2, 6000, 2000) -// -// cvxSlwThreatIndInfo.ext_info = slwThreatExt -// cvxSlwThreatIndInfo.status = obuStatus -// -// MogoPrivateObuManager.INSTANCE.getMogoObuListener() -// .onCvxSlwThreatIndInfo(cvxSlwThreatIndInfo) -// } -// -// //弱势交通参与者碰撞预警,行人/摩托车碰撞预警 -// ObuConstants.USE_CASE_ID.VRUCW -> { -// val cvxPtcIndInfo = CvxPtcThreatIndInfo(1, 1, 1) -// val position = Position(1, 399739429, 1164115207, 20) -// cvxPtcIndInfo.ptc_pos = position -// cvxPtcIndInfo.ptc_id = "111" -// cvxPtcIndInfo.ptc_type = pctType -// cvxPtcIndInfo.status = obuStatus -// -// val v2vThreat = V2vThreat(1, obuType, null, 1000, obuLevel, 100) -// cvxPtcIndInfo.threat_info = v2vThreat -// -// MogoPrivateObuManager.INSTANCE.getMogoObuListener() -// .onCvxPtcThreatIndInfo(cvxPtcIndInfo) -// } -// -// //道路危险情况, 车内标牌, 前方拥堵提醒 -// ObuConstants.USE_CASE_ID.HLW, ObuConstants.USE_CASE_ID.IVS, ObuConstants.USE_CASE_ID.TJW -> { -// val cvxRtiThreatIndInfo = CvxRtiThreatIndInfo(1, 1, 1L) -// val dateTime = DateTime(1, 1, 1, 1, 1, 1, 1, 1) -// val rtiThread = RtiThreat(1, obuType, dateTime, 100000, obuLevel, 100) -// val extInfo = RtiThreatExt(1, rtiType, 0x02, 100000, 100000) -// val position = Position(1, 399739429, 1164115207, 20) -// -// // 位置围栏 -// val zonesInfo = listOf( -// ZoneInfo(1, 2000, 2000, listOf(position)) -// ) -// -// cvxRtiThreatIndInfo.rti_id = "123123" -// cvxRtiThreatIndInfo.zones_info = zonesInfo -// cvxRtiThreatIndInfo.threat_info = rtiThread -// cvxRtiThreatIndInfo.ext_info = extInfo -// cvxRtiThreatIndInfo.status = obuStatus -// -// MogoPrivateObuManager.INSTANCE.getMogoObuListener() -// .onCvxRtiThreatIndInfo(cvxRtiThreatIndInfo) -// } -// } - } - -} diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuTestNewObuReceiver.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuTestNewObuReceiver.kt index 8a6eb1f7c0..4e9dc56327 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuTestNewObuReceiver.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuTestNewObuReceiver.kt @@ -14,7 +14,7 @@ import com.mogo.support.obu.model.advance.WarningData * @author lixiaopeng * @date 2022/9/8 10:50 上午 * - * 自研OBU 模拟场景 + * 自研OBU 模拟场景 HV */ class ObuTestNewObuReceiver : BroadcastReceiver() { private var mContext: Context? = null @@ -49,6 +49,8 @@ class ObuTestNewObuReceiver : BroadcastReceiver() { // val cvxHvInfoIndInfo = MogoRvWarningData(0, vehBasicsMsg, warningMsg) +// val gnssInfo = MessagePad.GnssInfo() + // MogoPrivateObuNewManager.INSTANCE // .getMogoObuListener() // .onGnssInfo(cvxHvInfoIndInfo) diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuTestTriggerReceiver.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuTestTriggerReceiver.kt deleted file mode 100644 index 052107741e..0000000000 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/receiver/ObuTestTriggerReceiver.kt +++ /dev/null @@ -1,89 +0,0 @@ -package com.mogo.eagle.core.function.datacenter.obu.receiver - -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -//import com.mogo.eagle.core.function.obu.mogo.MogoObuConst -//import com.mogo.eagle.core.function.datacenter.obu.MogoPrivateObuManager -//import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -//import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU -//import com.zhidao.support.obu.constants.ObuConstants -//import com.zhidao.support.obu.model.CvxV2vThreatIndInfo -//import com.zhidao.support.obu.model.advance.MovingObjectInfo -//import com.zhidao.support.obu.model.advance.Position -//import com.zhidao.support.obu.model.advance.V2vThreat -//import com.zhidao.support.obu.model.advance.V2vThreatExt -//import kotlin.random.Random - -/** - * @author xiaoyuzhou - * @date 2021/8/11 10:50 上午 - * - * OBU 测试使用 - */ -class ObuTestTriggerReceiver : BroadcastReceiver() { - private var mContext: Context? = null - - companion object { - private const val TAG = "ObuTestTriggerReceiver" - } - - override fun onReceive(context: Context, intent: Intent) { -// mContext = context -// /** -// * OBU 场景类型 -// * @see com.zhidao.support.obu.constants.ObuConstants.USE_CASE_ID -// */ -// val obuType = intent.getIntExtra(MogoObuConst.BROADCAST_OBU_TYPE_EXTRA_KEY, 0) -// val obuStatus = intent.getIntExtra(MogoObuConst.BROADCAST_OBU_STATES_EXTRA_KEY, 0) -// val obuLevel = intent.getIntExtra(MogoObuConst.BROADCAST_OBU_LEVEL_EXTRA_KEY, 3) -// val obuDirection = -// intent.getIntExtra(MogoObuConst.BROADCAST_OBU_EVENT_DIRECTION_EXTRA_KEY, 0x11) -// CallerLogger.d( -// "$M_OBU$TAG", "obuType:$obuType obuStatus:$obuStatus obuDirection$obuDirection" -// ) -// -// when (obuType) { -// ObuConstants.USE_CASE_ID.EBW, ObuConstants.USE_CASE_ID.FCW, ObuConstants.USE_CASE_ID.ICW, -// ObuConstants.USE_CASE_ID.CLW, ObuConstants.USE_CASE_ID.DNPW, ObuConstants.USE_CASE_ID.AVW, -// ObuConstants.USE_CASE_ID.BSW, ObuConstants.USE_CASE_ID.LCW, ObuConstants.USE_CASE_ID.EVW, ObuConstants.USE_CASE_ID.VRUCW, -// ObuConstants.USE_CASE_ID.SLW, ObuConstants.USE_CASE_ID.LTA, ObuConstants.USE_CASE_ID.HLW, ObuConstants.USE_CASE_ID.IVS, -// ObuConstants.USE_CASE_ID.TJW, ObuConstants.USE_CASE_ID.IVP, ObuConstants.USE_CASE_ID.COC -> { -// -// // 构建测试数据 -// val cvxV2vThreatIndInfo = CvxV2vThreatIndInfo(1, 1, 1L) -// -// val v2vThreat = V2vThreat(1, obuType, null, 1000, obuLevel, 100) -// cvxV2vThreatIndInfo.threat_info = v2vThreat -// -// val v2vThreatExt = -// V2vThreatExt( -// 1, 1, obuDirection, 1, 1 -// ) -// cvxV2vThreatIndInfo.ext_info = v2vThreatExt -// cvxV2vThreatIndInfo.status = obuStatus -// cvxV2vThreatIndInfo.vehicle_id = "123321" -// -// -// // 设置位置 -// val randomLocation = Random.nextInt(100, 2000) -// -// val position = Position( -// 0, (399739429 + randomLocation).toLong(), -// (1164115207 + randomLocation).toLong(), 20 -// ) -// val movingObjectInfo = MovingObjectInfo( -// 0, -// position, -// 1800 +randomLocation, -// 6000 +randomLocation -// ) -// cvxV2vThreatIndInfo.basic_info = movingObjectInfo -// -// MogoPrivateObuManager.INSTANCE.getMogoObuListener() -// .onCvxV2vThreatIndInfo(cvxV2vThreatIndInfo) -// } -// } - } - -} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt index 06eb44312b..da18deaa54 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/v2x/TrafficLightDispatcher.kt @@ -125,6 +125,13 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight CallerTrafficLightListenerManager.resetTrafficLightStatus(!hasObuLightStatus) } + /** + * obu数据消失 + */ + override fun onObuTrafficLightDisapper() { + hasObuLightStatus = false + } + /** * obu 红绿灯数据 */ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt index 316bb35fec..3bc530ebaa 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarManager.kt @@ -101,7 +101,7 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { } fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit) { - BindingCarNetWorkManager.instance.modifyBindingcar(mAddress, mWidevineIDWithMd5, callBack, screenType) + BindingCarNetWorkManager.instance.modifyBindingCar(mContext!!, mAddress, mWidevineIDWithMd5, callBack, screenType) } private fun driverScreen(macAddress: String, widevineIDWithMd5: String) { @@ -115,7 +115,7 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { SharedPrefsMgr.getInstance(mContext!!) .putLong("typeDriver", System.currentTimeMillis() / (1000 * 60)) BindingCarNetWorkManager.instance - .getBindingcarInfo(mContext, macAddress, widevineIDWithMd5, screenType) + .getBindingCarInfo(mContext!!, macAddress, widevineIDWithMd5, screenType) } } } @@ -131,7 +131,7 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener { SharedPrefsMgr.getInstance(mContext!!) .putLong("typePassenger", System.currentTimeMillis() / (1000 * 60)) BindingCarNetWorkManager.instance - .getBindingcarInfo(mContext, macAddress, widevineIDWithMd5, screenType) + .getBindingCarInfo(mContext!!, macAddress, widevineIDWithMd5, screenType) } } }//乘客屏//司机屏 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt index 578e485b2f..3a44ccd5e9 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/binding/BindingCarNetWorkManager.kt @@ -3,6 +3,7 @@ package com.zhjt.mogo_core_function_devatools.binding import android.content.Context import com.mogo.commons.constants.HostConst import com.mogo.commons.constants.SharedPrefsConstants +import com.mogo.commons.debug.DebugConfig import com.mogo.eagle.core.data.bindingcar.BindingCarInfo import com.mogo.eagle.core.data.bindingcar.BindingCarRequest import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo @@ -40,16 +41,17 @@ class BindingCarNetWorkManager private constructor() { } } - private val mBindingCarApiService: BindingCarApiService = MoGoRetrofitFactory.getInstance(HostConst.getHost()) - .create(BindingCarApiService::class.java) + private val mBindingCarApiService: BindingCarApiService = + MoGoRetrofitFactory.getInstance(HostConst.getHost()) + .create(BindingCarApiService::class.java) /** * 获取绑定的车辆信息 * * @param macAddress mac地址 */ - fun getBindingcarInfo( - context: Context?, + fun getBindingCarInfo( + context: Context, macAddress: String?, widevineIDWithMd5: String?, screenType: Int @@ -72,28 +74,24 @@ class BindingCarNetWorkManager private constructor() { override fun onSubscribe(d: Disposable) {} override fun onNext(info: BindingCarInfo) { if (info != null && info.getData() != null) { - d( - SceneConstant.M_BINDING + TAG, - "getBindingcarInfo onNext info.getData() =" + info.getData().toString() - ) - //根据车辆类型切换不同的车辆模型,只针对红旗做处理 - updateCarVrIconRes(info.getData().brandId) + d(SceneConstant.M_BINDING + TAG, "getBindingCarInfo data =" + info.getData().toString()) + if (!SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.MAC_ADDRESS).equals(macAddress) && DebugConfig.isCarModelChange()) { + updateCarVrIconRes(info.getData().brandId); + } when (info.getData().compare) { "0" -> showBindingCarDialog() "3" -> showModifyBindingCarDialog() "null" -> TipToast.shortTip("当前工控机没有入库") } - SharedPrefsMgr.getInstance(context!!).putString( - SharedPrefsConstants.CAR_INFO, - GsonUtils.toJson(info.getData()) - ) + SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.CAR_INFO, GsonUtils.toJson(info.getData())) + SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.MAC_ADDRESS, macAddress) } } override fun onError(e: Throwable) { e( SceneConstant.M_BINDING + TAG, - "getBindingcarInfo onError e = " + e.toString() + "---e.getMessage = " + e.message + "getBindingCarInfo onError e = " + e.toString() + "---e.getMessage = " + e.message ) } @@ -105,7 +103,8 @@ class BindingCarNetWorkManager private constructor() { * 绑定和修改绑定车辆 * mac: 48:b0:2d:3a:9c:19 */ - fun modifyBindingcar( + fun modifyBindingCar( + context: Context, macAddress: String?, widevineIDWithMd5: String?, callBack: (ModifyBindingcarInfo) -> Unit, @@ -132,16 +131,19 @@ class BindingCarNetWorkManager private constructor() { callBack.invoke(info) d( SceneConstant.M_BINDING + TAG, - "modifyBindingcar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString() + "modifyBindingCar onNext code = " + info.code + "---msg = " + info.msg + "--info.toString() = " + info.toString() ) - updateCarVrIconRes(info.data.brandId) + if (!SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.MAC_ADDRESS).equals(macAddress) && DebugConfig.isCarModelChange()) { + updateCarVrIconRes(info.data.brandId); + } + SharedPrefsMgr.getInstance(context).putString(SharedPrefsConstants.MAC_ADDRESS, macAddress) } } override fun onError(e: Throwable) { e( SceneConstant.M_BINDING + TAG, - "modifyBindingcar onError e = " + e.toString() + "---e.getMessage = " + e.message + "modifyBindingCar onError e = " + e.toString() + "---e.getMessage = " + e.message ) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/MBoxBubbleView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/MBoxBubbleView.kt new file mode 100644 index 0000000000..61fd81fb64 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/MBoxBubbleView.kt @@ -0,0 +1,79 @@ +package com.mogo.eagle.core.function.hmi.ui.msgbox + +import android.app.Activity +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.LinearLayoutManager +import com.mogo.eagle.core.data.msgbox.MsgBoxBean +import com.mogo.eagle.core.data.msgbox.MsgBoxType +import com.mogo.eagle.core.data.msgbox.MsgCategory +import com.mogo.eagle.core.function.api.msgbox.IMsgBoxListener +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.ui.msgbox.adapter.MBoxBubbleAdapter +import com.mogo.eagle.core.function.msgbox.MsgBoxConfig +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import kotlinx.android.synthetic.main.layout_m_box_bubble.view.* + +class MBoxBubbleView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), IMsgBoxListener { + + private val TAG = "PassengerMsgBoxBubbleView" + private val dataList :ArrayList = ArrayList() + private var mBoxBubbleAdapter: MBoxBubbleAdapter?= null + private var isShowData = true + + init { + LayoutInflater.from(context).inflate(R.layout.layout_m_box_bubble, this, true) + initView() + } + + private fun initView(){ + val linearLayoutManager = LinearLayoutManager(context) + linearLayoutManager.orientation = LinearLayoutManager.VERTICAL + mBoxBubbleAdapter = MBoxBubbleAdapter(context as Activity) + rvMBoxBubbleList.adapter = mBoxBubbleAdapter + rvMBoxBubbleList.layoutManager = linearLayoutManager + } + + /** + * 是否展示接收消息,消息盒子打开状态下不再展示气泡消息 + * @param show true 展示;false 不展示 + */ + fun isShowData(show: Boolean){ + isShowData = show + } + + override fun onDataChanged(category: MsgCategory, msgBoxList: MsgBoxBean) { + UiThreadHandler.post { + if(category == MsgCategory.NOTICE){ + if(msgBoxList.type == MsgBoxType.NOTICE || msgBoxList.type == MsgBoxType.V2X + || msgBoxList.type == MsgBoxType.OBU){ + MsgBoxConfig.noticeList.add(msgBoxList) + if(isShowData){ + CallerMsgBoxEventListenerManager.invokeUpdateTipListener(true) + dataList.add(msgBoxList) + mBoxBubbleAdapter?.setData(dataList) + } + } + } + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerMsgBoxListenerManager.addListener(TAG,this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerMsgBoxListenerManager.removeListener(TAG) + } + +} \ 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/msgbox/adapter/MBoxBubbleAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/MBoxBubbleAdapter.kt new file mode 100644 index 0000000000..343289ebcd --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/MBoxBubbleAdapter.kt @@ -0,0 +1,119 @@ +package com.mogo.eagle.core.function.hmi.ui.msgbox.adapter + +import android.app.Activity +import android.os.CountDownTimer +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.data.enums.EventTypeEnumNew +import com.mogo.eagle.core.data.msgbox.* +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager +import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinFormat + +class MBoxBubbleAdapter(private val activity: Activity): RecyclerView.Adapter(){ + + private var data: ArrayList ?= null + + private val notice: Int = 1 + private val v2x: Int = 2 + + var countDownTimer: CountDownTimer?=null + + fun setData(data: ArrayList){ + this.data = data + if(data.size>3){ + data.removeAt(0) + } + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + return when (viewType) { + notice -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_m_box_notice,parent,false) + BubbleNoticeHolder(view) + } + else -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_m_box_v2x,parent,false) + BubbleV2XHolder(view) + } + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + when (holder) { + is BubbleNoticeHolder -> { + data?.let { + val noticeFrCloudMsg = it[position].bean as NoticeFrCloudMsg + if(noticeFrCloudMsg.type == 0){ + val noticeNormalData = noticeFrCloudMsg.noticeNormalData + holder.tvMNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvMNoticeContent.text = noticeNormalData?.content + }else { + val noticeTrafficStylePushData = noticeFrCloudMsg.trafficPushData + holder.tvMNoticeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvMNoticeContent.text = noticeTrafficStylePushData?.content + } + + } + } + is BubbleV2XHolder -> { + data?.let { + val msgBoxBean = it[position] + val v2XMsg = msgBoxBean.bean as V2XMsg + holder.tvMV2XTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + holder.tvMV2XContent.text = v2XMsg.content + holder.ivMV2XImage.setImageDrawable(activity.resources.getDrawable( + EventTypeEnumNew.getUpdateIconRes(v2XMsg.type))) + } + } + } + + val msgBoxBean: MsgBoxBean = data!![position] + countDownTimer =object: CountDownTimer(CallerMsgBoxManager.getDismissTime(),1000){ + override fun onTick(p0: Long) { + + } + + override fun onFinish() { + data?.remove(msgBoxBean) + notifyDataSetChanged() +// notifyItemRemoved(index) +// notifyItemRangeChanged(index,recordTypeEntity.size-index) + } + + } + countDownTimer?.start() + } + + override fun getItemCount() = data?.size ?: 0 + + override fun getItemViewType(position: Int): Int { + return if(data!![position].type == MsgBoxType.NOTICE){ + notice + }else{ + v2x + } + } + + //Notice + class BubbleNoticeHolder(itemView: View): RecyclerView.ViewHolder(itemView){ + var ivMNoticeImage: ImageView = itemView.findViewById(R.id.ivMNoticeImage) + var tvMNoticeTitle: TextView = itemView.findViewById(R.id.tvMNoticeTitle) + var tvMNoticeContent: TextView = itemView.findViewById(R.id.tvMNoticeContent) + var tvMNoticeTime: TextView = itemView.findViewById(R.id.tvMNoticeTime) + } + + //OBU、V2X + class BubbleV2XHolder(itemView: View): RecyclerView.ViewHolder(itemView){ + var ivMV2XImage: ImageView = itemView.findViewById(R.id.ivMV2XImage) + var tvMV2XTime: TextView = itemView.findViewById(R.id.tvMV2XTime) + var tvMV2XContent: TextView = itemView.findViewById(R.id.tvMV2XContent) + } + +} \ 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 b86ab7d917..566837fc46 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 @@ -9,6 +9,7 @@ import android.graphics.Color import android.os.Build import android.text.Html import android.util.AttributeSet +import android.util.Log import android.view.LayoutInflater import android.view.View import androidx.annotation.RequiresApi @@ -613,7 +614,6 @@ internal class DebugSettingView @JvmOverloads constructor( tbIsDemoMode.visibility = View.GONE } - // 雨天模式,上一次勾选的数据 tbIsRainMode.isChecked = FunctionBuildConfig.isRainMode //雨天模式 @@ -630,36 +630,30 @@ internal class DebugSettingView @JvmOverloads constructor( //感知优化模式 tbBeautyMode.setOnCheckedChangeListener { _, isChecked -> FunctionBuildConfig.isBeautyMode = isChecked - if (!FunctionBuildConfig.isBeautyMode) { - tbBeautyMode.isChecked = false - } } tbV2NFromCar.isChecked = FunctionBuildConfig.isV2NFromCar //v2n车端预警 tbV2NFromCar.setOnCheckedChangeListener { _, isChecked -> FunctionBuildConfig.isV2NFromCar = isChecked - if (!FunctionBuildConfig.isV2NFromCar) { - tbV2NFromCar.isChecked = false - } } tbDrawAiCloudFusion.isChecked = FunctionBuildConfig.isDrawAiCloudFusion //云端感知绘制 tbDrawAiCloudFusion.setOnCheckedChangeListener { _, isChecked -> FunctionBuildConfig.isDrawAiCloudFusion = isChecked - if (!FunctionBuildConfig.isDrawAiCloudFusion) { - tbDrawAiCloudFusion.isChecked = false - } } tbDrawRomaMode.isChecked = FunctionBuildConfig.isRomaMode //roma tbDrawRomaMode.setOnCheckedChangeListener { _, isChecked -> FunctionBuildConfig.isRomaMode = isChecked - if (!FunctionBuildConfig.isRomaMode) { - tbDrawRomaMode.isChecked = false - } + } + + tbObuWarningFusionUnion.isChecked = FunctionBuildConfig.isObuWarningFusionUnion + //ObuWarningFusionUnion + tbObuWarningFusionUnion.setOnCheckedChangeListener { _, isChecked -> + FunctionBuildConfig.isObuWarningFusionUnion = isChecked } //重启工控机所有节点 @@ -755,12 +749,6 @@ internal class DebugSettingView @JvmOverloads constructor( FunctionBuildConfig.isDrawUnknownIdentifyData = isChecked } -// // 初始化 OBU感知数据是否绘制 选择情况 -// tbIsDrawOBUIdentifyData.isChecked = FunctionBuildConfig.isDrawObuIdentifyData -// tbIsDrawOBUIdentifyData.setOnCheckedChangeListener { buttonView, isChecked -> -// FunctionBuildConfig.isDrawObuIdentifyData = isChecked -// } - //TODO tbIsDrawPath.setOnCheckedChangeListener { _, isChecked -> @@ -1068,18 +1056,6 @@ internal class DebugSettingView @JvmOverloads constructor( * 设置Hmi点击监听 */ private fun setHmiCheckedChangeListener() { - - /** - * 隐藏、显示小地图 - */ - tbControlView.setOnCheckedChangeListener { _, isChecked -> -// if (isChecked) { -// CallerSmpManager.hidePanel() -// } else { -// CallerSmpManager.showPanel() -// } - } - /** * sn绑定控制 */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt index 67c43f6f1f..66a1a68404 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/PncActionsView.kt @@ -2,7 +2,9 @@ package com.mogo.eagle.core.function.hmi.ui.vehicle import android.content.Context import android.util.AttributeSet +import android.util.TypedValue.COMPLEX_UNIT_PX import android.view.LayoutInflater +import android.view.ViewGroup import androidx.appcompat.content.res.AppCompatResources import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo @@ -23,6 +25,8 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.zhjt.service_biz.BizConfig import kotlinx.android.synthetic.main.view_pnc_actions.view.* +import me.jessyan.autosize.AutoSize +import me.jessyan.autosize.utils.AutoSizeUtils import mogo.telematics.pad.MessagePad class PncActionsView @JvmOverloads constructor( @@ -41,12 +45,24 @@ class PncActionsView @JvmOverloads constructor( private var mAutoPilotStatusInfo: AutopilotStatusInfo? = null + private val bgResources: Int + private val topMargin: Int + private val txtSize: Int + init { LayoutInflater.from(context).inflate(R.layout.view_pnc_actions, this, true) + val a = context.obtainStyledAttributes(attrs, R.styleable.PncActionsView, defStyleAttr, 0) + bgResources = a.getResourceId(R.styleable.PncActionsView_background_resource, R.drawable.pnc_actions_bg) + topMargin = a.getResourceId(R.styleable.PncActionsView_pnc_top_margin,resources.getDimension(R.dimen.dp_30).toInt()) + txtSize = a.getResourceId(R.styleable.PncActionsView_pnc_size,resources.getDimension(R.dimen.dp_34).toInt()) + a.recycle() } override fun onAttachedToWindow() { super.onAttachedToWindow() + (tvHmiPncActions.layoutParams as MarginLayoutParams).topMargin = topMargin + tvHmiPncActions.setTextSize(COMPLEX_UNIT_PX,txtSize.toFloat()) + CallerAutoPilotStatusListenerManager.addListener(TAG, this) CallerPlanningActionsListenerManager.addListener(TAG, this) CallerTrafficLightListenerManager.addListener(TAG, this) @@ -78,14 +94,21 @@ class PncActionsView @JvmOverloads constructor( var actions: String? = null planningActionMsg.actionMsg?.let { it -> try { - actions = PncActionsHelper.getAction(it.drivingState.number, it.drivingAction.number) - } catch (e:Exception){ + actions = PncActionsHelper.getAction( + it.drivingState.number, + it.drivingAction.number + ) + } catch (e: Exception) { e.printStackTrace() } //如果是存在云端红绿灯数据条件下,设置云端数据 - if (PncActionsHelper.isWaitingTrafficlight(it.drivingState.number, it.drivingAction.number) + if (PncActionsHelper.isWaitingTrafficlight( + it.drivingState.number, + it.drivingAction.number + ) && mTrafficLightResult != null - && getWaitTrafficLightTime().isNotBlank()) { + && getWaitTrafficLightTime().isNotBlank() + ) { actions += ",预计${getWaitTrafficLightTime()}秒后通过" } else { mTrafficLightResult = null @@ -96,7 +119,8 @@ class PncActionsView @JvmOverloads constructor( this.background = null tvHmiPncActions.text = "" } else { - this.background = AppCompatResources.getDrawable(context, R.drawable.pnc_actions_bg) + this.background = + AppCompatResources.getDrawable(context, bgResources) tvHmiPncActions.text = actions } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt index cde4b3ab84..00021183f3 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/SteeringBrakeView.kt @@ -35,10 +35,6 @@ class SteeringBrakeView(context: Context, attrs: AttributeSet?) : ConstraintLayo init { LayoutInflater.from(context).inflate(R.layout.view_steering_brake, this, true) - val typedArray = context.obtainStyledAttributes(attrs, R.styleable.SteeringBrakeView) - val dayLight = typedArray.getBoolean(R.styleable.SteeringBrakeView_day_light_mode, false) - turnLightView.dayLightMode(dayLight) - typedArray.recycle() } override fun onAttachedToWindow() { @@ -47,7 +43,6 @@ class SteeringBrakeView(context: Context, attrs: AttributeSet?) : ConstraintLayo CallerChassisLocationWGS84ListenerManager.addListener(TAG, this) } - override fun onChassisLocationWGS84(gnssInfo: MogoLocation) { if (gnssInfo != null) { //设置刹车信息,小于默认认为是刹车 @@ -86,8 +81,6 @@ class SteeringBrakeView(context: Context, attrs: AttributeSet?) : ConstraintLayo brakeView.visibility = View.GONE isShowTurnLight = false } - turnLightView.visibility = View.VISIBLE - turnLightView.setTurnLight(lightSwitch) } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt index e38d41ccbd..c2683e8c6c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TurnLightViewStatus.kt @@ -11,9 +11,12 @@ import android.view.animation.Animation import android.widget.ImageView import androidx.constraintlayout.widget.ConstraintLayout import chassis.Chassis -import com.mogo.eagle.core.function.api.map.angle.* +import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLamplightListener +import com.mogo.eagle.core.function.api.map.angle.Turning +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLamplightListenerManager import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager import com.mogo.eagle.core.function.hmi.R +import kotlinx.android.synthetic.main.view_steering_brake.view.* import kotlinx.android.synthetic.main.view_turn_light_status.view.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope @@ -25,33 +28,62 @@ import kotlinx.coroutines.launch * @author lixiaopeng * @since 2022/1/10 */ -class TurnLightViewStatus @JvmOverloads constructor( +open class TurnLightViewStatus @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr) { +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoChassisLamplightListener { - private var init: Boolean = false + companion object { + private const val TAG = "TurnLightViewStatus" + } - fun dayLightMode(dayLight: Boolean) { + private val visible: Boolean + + init { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.TurnLightView) + val dayLight = typedArray.getBoolean(R.styleable.TurnLightView_day_light_mode, false) if (dayLight) { LayoutInflater.from(context) .inflate(R.layout.view_turn_light_status_daytime, this, true) } else { LayoutInflater.from(context).inflate(R.layout.view_turn_light_status, this, true) } - invalidate() - init = true + visible = typedArray.getBoolean(R.styleable.TurnLightView_visible, false) + if (visible) { + turn_light_layout.visibility = View.VISIBLE + } else { + turn_light_layout.visibility = View.GONE + } + typedArray.recycle() + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerChassisLamplightListenerManager.addListener(TAG, this) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerChassisLamplightListenerManager.removeListener(TAG) + } + + override fun onAutopilotLightSwitchData(lightSwitch: Chassis.LightSwitch?) { + super.onAutopilotLightSwitchData(lightSwitch) + lightSwitch?.let { + turnLightView.visibility = View.VISIBLE + setTurnLight(it) + } } /** * 转向灯动画 */ - fun setTurnLight(directionLight: Chassis.LightSwitch) { + private fun setTurnLight(directionLight: Chassis.LightSwitch) { + if (!isAttachedToWindow) { + return + } GlobalScope.launch(Dispatchers.Main) { - if (!init) { - return@launch - } //根据左右进行显示和隐藏,实际要判断每个来的时间和频度 when (directionLight) { Chassis.LightSwitch.LIGHT_LEFT -> { //左转向 @@ -135,7 +167,9 @@ class TurnLightViewStatus @JvmOverloads constructor( } override fun onAnimationEnd(p0: Animation?) { - turn_light_layout.visibility = View.GONE + if (visible) { + turn_light_layout.visibility = View.GONE + } stopAnimate() } }) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt index 93fb48fd71..bd8cdb8807 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SpeedPanelView.kt @@ -5,23 +5,22 @@ import android.graphics.Color import android.util.AttributeSet import android.view.Gravity import android.widget.FrameLayout +import com.mogo.eagle.core.data.enums.DataSourceType import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener +import com.mogo.eagle.core.function.api.v2x.ILimitingVelocityListener import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager -import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager +import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.UiThreadHandler import java.util.* -/** - * @author xiaoyuzhou - * @date 2021/8/25 8:25 下午 - */ class SpeedPanelView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : FrameLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener { +) : FrameLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener, + ILimitingVelocityListener { companion object { const val TAG = "SpeedPanelView" @@ -30,11 +29,6 @@ class SpeedPanelView @JvmOverloads constructor( var mContext: Context var mSpeedChartView: SpeedChartView var mLatLng: MogoLocation? = null - var mSpeedLimit = 60 - - private val timer by lazy { - Timer() - } init { setBackgroundResource(R.drawable.yi_biao_pan_bg_nor) @@ -50,49 +44,34 @@ class SpeedPanelView @JvmOverloads constructor( addView(mSpeedChartView) } - private var timerTask: TimerTask? = null - override fun onAttachedToWindow() { super.onAttachedToWindow() - // 注册位置回调 + CallerLimitingVelocityListenerManager.addListener(TAG, this) CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this) - // 开启定时查询速度 - timerTask?.cancel() - val task = object : TimerTask() { - override fun run() { - mLatLng?.let { - mSpeedLimit = CallerMapUIServiceManager.getMapUIController()!!.getLimitSpeed(it.longitude, it.latitude, - it.heading.toFloat() - ) - UiThreadHandler.post { - val speed = (it.gnssSpeed * 3.6f).toInt() - mSpeedChartView.setArcColor(Color.parseColor(if (speed > mSpeedLimit) "#DB3137" else "#3E77F6")) - mSpeedChartView.setValues(speed) - setBackgroundResource(if (speed > mSpeedLimit) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor) - } - } - } - } - this.timerTask = task - timer.schedule(task, Date(), 200) } - override fun onChassisLocationGCJ02(gnssInfo: MogoLocation?) { - gnssInfo?.let { - mLatLng = gnssInfo + override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { + mogoLocation?.let { + mLatLng = mogoLocation + } + } + + override fun onLimitingVelocityChange(limitingVelocity: Int, sourceType: DataSourceType) { + super.onLimitingVelocityChange(limitingVelocity, sourceType) + mLatLng?.let { + UiThreadHandler.post { + val speed = (it.gnssSpeed * 3.6f).toInt() + mSpeedChartView.setArcColor(Color.parseColor(if (speed > limitingVelocity) "#DB3137" else "#3E77F6")) + mSpeedChartView.setValues(speed) + setBackgroundResource(if (speed > limitingVelocity) R.drawable.yi_biao_pan_bg_speeding else R.drawable.yi_biao_pan_bg_nor) + } } } override fun onDetachedFromWindow() { super.onDetachedFromWindow() - // 解除注册 + CallerLimitingVelocityListenerManager.removeListener(TAG) CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) - try { - timerTask?.cancel() - } catch (e: Exception) { - e.printStackTrace() - } } - } \ 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/widget/SteeringWheelView.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java index ac21f7f4f1..77bfcf3bab 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SteeringWheelView.java @@ -105,6 +105,11 @@ public class SteeringWheelView extends ConstraintLayout implements private final IMoGoAutopilotStatusListener mGoAutopilotStatusListener = new IMoGoAutopilotStatusListener() { + @Override + public void onAutopilotRouteLineId(long lineId) { + + } + @Override public void onAutopilotIpcConnectStatusChanged(int status, @Nullable String reason) { } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_notice.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_notice.xml new file mode 100644 index 0000000000..4f6a9e0465 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_notice.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_v2x.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_v2x.xml new file mode 100644 index 0000000000..60eab23068 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_v2x.xml @@ -0,0 +1,51 @@ + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_m_box_bubble.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_m_box_bubble.xml new file mode 100644 index 0000000000..f70a509ba8 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/layout_m_box_bubble.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 3aad4d8c8f..5bfa8302c6 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -278,6 +278,18 @@ android:textOn="关闭漫游模式" android:textSize="@dimen/dp_24" /> + + - - @android:color/transparent - + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt index 52216f9c14..d07c857bf1 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/angle/MoGoVisualAngleChangeProvider.kt @@ -28,11 +28,8 @@ import java.util.concurrent.atomic.* @Route(path = MogoServicePaths.PATH_VISUAL_ANGLE) class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { - override val functionName: String - get() = "VisualAngleChange" - companion object { - const val TAG = "VisualAngleChange" + private const val TAG = "VisualAngleChange" } private val triggerLocation = AtomicReference() @@ -147,11 +144,6 @@ class MoGoVisualAngleChangeProvider: IMoGoVisualAngleChangeProvider { return CoroutineScope(Handler(Looper.getMainLooper()).asCoroutineDispatcher("change-visual-angle") + SupervisorJob()) } - - override fun onDestroy() { - CallerMapRoadListenerManager.unRegisterRoadListener("VisualAngleChange") - } - @Volatile private var mLevel:Boolean = false diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackerSourceColorHelper.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackerSourceColorHelper.kt index bc96ab3770..d98984e337 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackerSourceColorHelper.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackerSourceColorHelper.kt @@ -67,6 +67,11 @@ object TrackerSourceColorHelper { color = "#9900ffFF" } + //僵尸车 + if(data.addAttribute == AdditionalAttribute.ATTR_ZOMBIE){ + color = "#D1E5FDFF" + } + // pnc预警 WarningHelper.getPncColor(data.uuid.toString()) { if (it.isNotBlank()) { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java index 9809818667..eeb872d6d3 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/routeoverlay/MogoRouteOverlayManager.java @@ -126,4 +126,9 @@ public class MogoRouteOverlayManager implements @Override public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) { } + + @Override + public void onAutopilotRouteLineId(long lineId) { + + } } diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index b32b7b3793..8891300245 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -11,6 +11,7 @@ import android.view.MotionEvent import android.view.View import android.widget.RelativeLayout import android.widget.TextView +import androidx.annotation.MainThread import ch.hsr.geohash.GeoHash import com.amap.api.maps.AMap import com.amap.api.maps.CameraUpdate @@ -71,7 +72,7 @@ class OverMapView @JvmOverloads constructor( private val zoomLevel = 15 private var mCameraUpdate: CameraUpdate? = null private var mContext: Context? = null - private val mTilt = 60f + private var mTilt = 0f private var overLayerView: TextView? = null // 全局路径规划中的GeoHash网格 @@ -99,6 +100,7 @@ class OverMapView @JvmOverloads constructor( private var isFirstLocation = true var mCustomMapStyleOptions: CustomMapStyleOptions? = null var currMarkerList: ArrayList? = null + var siteMarkerList: ArrayList? = null companion object { const val TAG = "OverMapView" @@ -155,18 +157,56 @@ class OverMapView @JvmOverloads constructor( } // =================必须通知高德地图生命周期的变化================= + /** + * 隐藏右下角的重置View + */ fun hideResetView() { overLayerView?.visibility = View.GONE } + /** + * siteLatLngs: 高德坐标集合 + * bitmap: Marker对应的图片 + * (anchorX,anchorY)为锚点坐标,各自取值范围为[0,1],默认值为(0.5,1) + */ + @MainThread + fun drawSiteMarkers(siteLatLngs: List?, bitmap: Bitmap, anchorX: Float, anchorY: Float) { + if (siteLatLngs.isNullOrEmpty()) return + clearSiteMarkers() + val markerOptionsList = ArrayList() + for (latLng in siteLatLngs) { + val markerOption = MarkerOptions() + markerOption.position(latLng) + markerOption.anchor(anchorX, anchorY) + markerOption.icon( + BitmapDescriptorFactory.fromBitmap(bitmap) + ) + markerOptionsList.add(markerOption) + } + siteMarkerList = mAMap!!.addMarkers(markerOptionsList, false) + } + + @MainThread + fun clearSiteMarkers() { + if (siteMarkerList != null) { + for (marker in siteMarkerList!!) { + marker.destroy() + } + siteMarkerList = null + } + } + private fun initView(context: Context) { mContext = context val smpView = LayoutInflater.from(context).inflate(R.layout.module_overview_map_view, this) mMapView = smpView.findViewById(R.id.aMapView) overLayerView = findViewById(R.id.overLayer) - overLayerView?.background = resources.getDrawable(if (resetDrawable != -1) resetDrawable else R.drawable.amap_reset) - arrivedBitmap = BitmapDescriptorFactory.fromResource(if (arrivedDrawable != -1) arrivedDrawable else R.drawable.taxi_map_arrow_arrived) - unArrivedBitmap = BitmapDescriptorFactory.fromResource(if (unArrivedDrawable != -1) unArrivedDrawable else R.drawable.taxi_map_arrow_un_arrive) + overLayerView?.background = + resources.getDrawable(if (resetDrawable != -1) resetDrawable else R.drawable.amap_reset) + arrivedBitmap = + BitmapDescriptorFactory.fromResource(if (arrivedDrawable != -1) arrivedDrawable else R.drawable.taxi_map_arrow_arrived) + unArrivedBitmap = + BitmapDescriptorFactory.fromResource(if (unArrivedDrawable != -1) unArrivedDrawable else R.drawable.taxi_map_arrow_un_arrive) CallerPlanningRottingListenerManager.addListener(TAG, this) initAMapView(context) // 注册定位监听 @@ -177,6 +217,7 @@ class OverMapView @JvmOverloads constructor( private fun initAMapView(context: Context) { Log.d(TAG, "initAMapView") + mTilt = 30f mCameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel.toFloat()) mAMap = mMapView!!.map mCustomMapStyleOptions = CustomMapStyleOptions() @@ -197,6 +238,8 @@ class OverMapView @JvmOverloads constructor( } // 实时路况图层关闭,必须添加在loaded结束之后,其他位置不生效 mAMap?.isTrafficEnabled = false + mAMap?.showBuildings(true) + mAMap?.animateCamera(CameraUpdateFactory.changeTilt(mTilt)) } setUpMap() customOptions() @@ -350,7 +393,7 @@ class OverMapView @JvmOverloads constructor( return bitmap } - fun clearV2XMarkers() { + private fun clearV2XMarkers() { if (currMarkerList != null) { for (marker in currMarkerList!!) { marker.destroy() @@ -428,6 +471,7 @@ class OverMapView @JvmOverloads constructor( bitmap ) ) + markerOption.anchor(0.18f, 0.98f) markerOption.zIndex(2f) posInfMap[latLng] = structureList markerOptionsList.add(markerOption) @@ -448,8 +492,8 @@ class OverMapView @JvmOverloads constructor( val marker = MakerWithCount(context) marker.setCount(count) marker.measure( - MeasureSpec.makeMeasureSpec(116, MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(116, MeasureSpec.EXACTLY) + MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(mContext, 116f), MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(AutoSizeUtils.dp2px(mContext, 116f), MeasureSpec.EXACTLY) ) marker.layout(0, 0, marker.measuredWidth, marker.measuredHeight) val bitmap = Bitmap.createBitmap(marker.width, marker.height, Bitmap.Config.ARGB_8888) @@ -486,7 +530,7 @@ class OverMapView @JvmOverloads constructor( } else { //设置希望展示的地图缩放级别 val cameraPosition = CameraPosition.Builder() - .target(mCarMarker!!.position).tilt(0f).zoom(zoomLevel.toFloat()).build() + .target(mCarMarker!!.position).tilt(mTilt).zoom(zoomLevel.toFloat()).build() mAMap!!.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)) } } diff --git a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt index cf2c47b420..9437ee5b85 100644 --- a/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt +++ b/core/function-impl/mogo-core-function-startup/src/main/java/com/mogo/eagle/core/function/startup/stageone/HttpDnsStartUp.kt @@ -1,31 +1,24 @@ package com.mogo.eagle.core.function.startup.stageone import android.content.Context -import com.mogo.aicloud.services.httpdns.HttpDnsConst -import com.mogo.aicloud.services.httpdns.IMogoHttpDns -import com.mogo.aicloud.services.httpdns.MogoHttpDnsHandler import com.mogo.aicloud.services.locationinfo.MogoLocationInfoServices import com.mogo.aicloud.services.socket.IMogoLifecycleListener import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager import com.mogo.cloud.httpdns.MogoHttpDnsConfig import com.mogo.cloud.httpdns.bean.HttpDnsSimpleLocation import com.mogo.cloud.httpdns.listener.IHttpDnsCurrentLocation -import com.mogo.cloud.httpdns.listener.OnAddressChangedListener import com.mogo.cloud.passport.IMoGoTokenCallback import com.mogo.cloud.passport.MoGoAiCloudClient import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.AbsMogoApplication -import com.mogo.commons.constants.HostConst import com.mogo.commons.constants.SharedPrefsConstants import com.mogo.commons.debug.DebugConfig import com.mogo.commons.module.status.MogoStatusManager import com.mogo.commons.network.NetConfigUtils -import com.mogo.commons.network.Utils import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_FAIL import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_CLOUD_CONNECT_SUCCESS -import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS import com.mogo.eagle.core.data.map.MogoLocation @@ -38,10 +31,7 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr -import com.mogo.eagle.core.utilcode.util.AppUtils -import com.mogo.eagle.core.utilcode.util.ProcessUtils -import com.mogo.eagle.core.utilcode.util.ThreadPoolService -import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.eagle.core.utilcode.util.* import com.rousetime.android_startup.AndroidStartup import com.zhjt.service.chain.ChainLog import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD @@ -58,8 +48,6 @@ class HttpDnsStartUp : AndroidStartup() { // 缓存IP地址 private var cacheIp: String? = null - private lateinit var mogoHttpDns: IMogoHttpDns - private var context: Context? = null private var gotToken = false @@ -77,7 +65,7 @@ class HttpDnsStartUp : AndroidStartup() { override fun create(context: Context): Boolean { this.context = context initGDLoc() - initHttpDns() + preparePassportEnvironment() return true } @@ -85,15 +73,6 @@ class HttpDnsStartUp : AndroidStartup() { CallerMapUIServiceManager.getGDLocationServer(context!!)?.start() } - /** - * 初始化 HttpDNS ,这里会通过一个接口获取所有鹰眼中使用的微服务域名以及端口号 - * 后续的网络请求会通过 HttpDnsInterceptor 进行拦截替换 - */ - private fun initHttpDns() { - mogoHttpDns = MogoHttpDnsHandler.getHttpDnsApi() - preparePassportEnvironment() - } - private fun preparePassportEnvironment() { // 设置网络环境:HTTP_DNS_ENV_QA、HTTP_DNS_ENV_RELEASE、HTTP_DNS_ENV_DEV when (DebugConfig.getNetMode()) { @@ -131,9 +110,9 @@ class HttpDnsStartUp : AndroidStartup() { // TODO 现在这块逻辑因为网约车业务那后台的限制,还没有更换,条件成熟后替换为 DeviceIdUtils.getWidevineIDWithMd5(context) // 这里影响当前Activity的身份信息,多进程先保持与原来一样,主进程为司机端,:passenger 进程为乘客端 if (ProcessUtils.getCurrentProcessName().contains(":passenger")) { - clientConfig.thirdPartyDeviceId = Utils.getDevicesId() + "_passenger" + clientConfig.thirdPartyDeviceId = DeviceUtils.getDeviceSN() + "_passenger" } else { - clientConfig.thirdPartyDeviceId = Utils.getDevicesId() + clientConfig.thirdPartyDeviceId = DeviceUtils.getDeviceSN() } //设置长链接的secretKey 通过SHA1和包名找中台服务生成,后续包名分渠道,需要做对应操作 clientConfig.secretKey = "YMj2VFDFxJ3Q4gNoZceJ" @@ -145,7 +124,8 @@ class HttpDnsStartUp : AndroidStartup() { return HttpDnsSimpleLocation(envConfig.cityCode, envConfig.lat, envConfig.lon) } var mogoLocation: MogoLocation? = null - val locationClient = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() + val locationClient = + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02() if (locationClient != null) { mogoLocation = locationClient } @@ -213,8 +193,6 @@ class HttpDnsStartUp : AndroidStartup() { CallerCloudListenerManager.invokeCloudTokenGot(token, sn) // 异步初始化NetConfig asyncInit() - // HttpDns ttl回调 --- socketTTL -// registerSocketHttpDnsTTL() startSocketService() // 开启每5s/次定位上报 uploadLocPerFiveSecond() @@ -251,35 +229,6 @@ class HttpDnsStartUp : AndroidStartup() { } } - /** - * 请求获取最新的 DNS 微服务 域名信息 - */ - private fun registerSocketHttpDnsTTL() { - mogoHttpDns.addressChangedListener(object : OnAddressChangedListener { - @ChainLog( - linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS, - linkCode = CHAIN_LINK_CLOUD, - endpoint = PAD, - nodeAliasCode = CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED, - paramIndexes = [0, 1], - clientPkFileName = "sn" - ) - override fun onAddressChanged(cityCode: String, address: Map?) { - val dnsCacheIp = mogoHttpDns.getCachedHttpDnsIps( - HostConst.SOCKET_CENTER_DOMAIN, - HttpDnsConst.HTTP_DNS_ADDRESS_TYPE_HTTP - ) ?: return - if (dnsCacheIp != cacheIp) { - CallerLogger.d( - SceneConstant.M_MAIN + TAG, - "获取缓存Dns IP : $dnsCacheIp , 原缓存 IP : $cacheIp" - ) - cacheIp = dnsCacheIp - } - } - }) - } - /** * 上传自车位置信息到云端 */ diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/test/TestV2XReceiver.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/test/TestV2XReceiver.java index 6e24080849..acd5440e71 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/test/TestV2XReceiver.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/test/TestV2XReceiver.java @@ -10,7 +10,6 @@ import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.entity.V2XMessageEntity; import com.mogo.eagle.core.data.map.entity.V2XRoadEventEntity; import com.mogo.eagle.core.data.v2x.V2XOptimalRouteDataRes; -import com.mogo.eagle.core.function.call.map.CallerSmpManager; import com.mogo.eagle.core.function.v2x.events.consts.V2XConst; import java.util.List; diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/internal/http/V2XRefreshModel.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/internal/http/V2XRefreshModel.kt index 517e16e76b..f3e8a4f56a 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/internal/http/V2XRefreshModel.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/internal/http/V2XRefreshModel.kt @@ -12,7 +12,7 @@ import com.mogo.eagle.core.function.v2x.internal.data.V2XMarkerResponse import com.mogo.eagle.core.function.v2x.internal.http.api.V2XApiService import com.mogo.eagle.core.function.v2x.internal.http.body.V2XRefreshEntity import com.mogo.eagle.core.function.v2x.internal.http.callback.IV2XRefreshCallback -import com.mogo.eagle.core.function.v2x.internal.utils.DeviceUtils +import com.mogo.eagle.core.utilcode.util.DeviceUtils import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers @@ -64,7 +64,7 @@ internal class V2XRefreshModel { handled }) this["netType"] = CommonUtils.getNetworkType(config.context) - this["cellId"] = DeviceUtils.getCellId(config.context) ?: "" + this["cellId"] = DeviceUtils.getCellId() ?: "" this["sn"] = config.aiCloudConfig.sn this["ticket"] = config.aiCloudConfig.token this["sig"] = SignUtil.createSign(this, "JGjZx6") diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/internal/utils/DeviceUtils.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/internal/utils/DeviceUtils.kt deleted file mode 100644 index b7c6dc3312..0000000000 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/internal/utils/DeviceUtils.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.mogo.eagle.core.function.v2x.internal.utils - -import android.Manifest -import android.annotation.SuppressLint -import android.content.Context -import android.content.pm.PackageManager -import android.telephony.CellLocation -import android.telephony.TelephonyManager -import android.telephony.cdma.CdmaCellLocation -import android.telephony.gsm.GsmCellLocation -import java.lang.Exception - -internal class DeviceUtils { - - companion object { - - @SuppressLint("MissingPermission") - @JvmStatic - fun getCellId(context: Context): String? { - val tm = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager - val pm = context.packageManager - val accessCoarseLocationPermission = PackageManager.PERMISSION_GRANTED == - pm.checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION, context.packageName) - val accessFineLocationPermission = PackageManager.PERMISSION_GRANTED == - pm.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, context.packageName) - if (!accessCoarseLocationPermission || !accessFineLocationPermission) return "noPermission" - var location: CellLocation? = null - try { - location = tm.cellLocation - } catch (e: Exception) { - e.printStackTrace() - } - if (location != null) { - // Gsm网络 , 联通移动的网络属于这一套 - if (location is GsmCellLocation) { - val cellid = location.cid - return cellid.toString() - // Cdma网络 , 电信网络属于这一种 - } else if (location is CdmaCellLocation) { - return location.baseStationId.toString() - } - } - return null - } - } -} \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/AppConfigInfo.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/AppConfigInfo.kt index 1a43eab9b8..ac11b12d1f 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/AppConfigInfo.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/app/AppConfigInfo.kt @@ -28,6 +28,7 @@ object AppConfigInfo { // 高精地图版本 var mapSdkVersion: String? = null + // 高精地图采集版本 var mapSdkOptVersion: String? = null var adasSdkVersion: String? = null @@ -40,12 +41,15 @@ object AppConfigInfo { //车牌号 @Volatile var plateNumber: String? = null + //工控机MAC地址 @Volatile var iPCMacAddress: String? = null + //工控机DockerVersion @Volatile var dockerVersion: String? = null + //工控机协议版本 var protocolVersionNumber: Int = 0 @@ -168,11 +172,17 @@ object AppConfigInfo { "" } }${isConnectedNetty}
" + - "------------------工控机感知&规控数据---------------------
" + "------------------工控机数据---------------------
"+ + "车牌:${plateNumber}
" + + "mac:${iPCMacAddress}
" + + "docker version:${dockerVersion}
" + + "protocol:${protocolVersionNumber}
" + + "------------------业务信息---------------------
"+ + "角色:$role , isDriver : $isDriver
" } } -fun AppConfigInfo.toConfigUpload():ConfigUpload{ +fun AppConfigInfo.toConfigUpload(): ConfigUpload { val configUpload = ConfigUpload() configUpload.adasSdkVersion = adasSdkVersion configUpload.appBuildTime = appBuildTime @@ -199,12 +209,11 @@ fun AppConfigInfo.toConfigUpload():ConfigUpload{ configUpload.protocolVersionNumber = protocolVersionNumber configUpload.role = role configUpload.serverSn = serverSn - configUpload.iPCMacAddress = iPCMacAddress configUpload.teleTimeStamp = teleTimeStamp configUpload.timeStamp = System.currentTimeMillis() configUpload.uniqueDeviceId = uniqueDeviceId configUpload.widevineIDMd5 = widevineIDMd5 configUpload.workingBranchHash = workingBranchHash configUpload.workingBranchName = workingBranchName - return configUpload + return configUpload } \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt index ff6a6b3135..9e6508a3d3 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt @@ -89,6 +89,14 @@ object FunctionBuildConfig { @JvmField var isFusionColor = false + /** + * 是否开启obu rv预警感知物融合功能 , 仅大理,烟台交付项目 + * 默认关闭 + */ + @Volatile + @JvmField + var isObuWarningFusionUnion = false + /** * 当前APP的身份模式 * diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/telematic/TelematicConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/telematic/TelematicConstant.kt new file mode 100644 index 0000000000..6c02b811db --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/telematic/TelematicConstant.kt @@ -0,0 +1,7 @@ +package com.mogo.eagle.core.data.telematic + +class TelematicConstant { + companion object { + const val BUSINESS_STRING = 100 + } +} \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/TrafficLightResult.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/TrafficLightResult.kt index bea0fc16be..8c9ecfb629 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/TrafficLightResult.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/TrafficLightResult.kt @@ -15,15 +15,17 @@ fun TrafficLightResult.toTrafficLightDetail():MessagePad.TrafficLightDetail{ val left = trafficLightBuilder.leftBuilder val mid = trafficLightBuilder.midBuilder val right = trafficLightBuilder.rightBuilder - left.phaseNo = this.laneList.left.phaseNo - left.color = this.laneList.left.color - left.remain = this.laneList.left.remain - mid.phaseNo = this.laneList.mid.phaseNo - mid.color = this.laneList.mid.color - mid.remain = this.laneList.mid.remain - right.phaseNo = this.laneList.right.phaseNo - right.color = this.laneList.right.color - right.remain = this.laneList.right.remain + if(this.laneList != null){ + left.phaseNo = this.laneList.left.phaseNo + left.color = this.laneList.left.color + left.remain = this.laneList.left.remain + mid.phaseNo = this.laneList.mid.phaseNo + mid.color = this.laneList.mid.color + mid.remain = this.laneList.mid.remain + right.phaseNo = this.laneList.right.phaseNo + right.color = this.laneList.right.color + right.remain = this.laneList.right.remain + } return trafficLightBuilder.build() } @@ -39,7 +41,7 @@ data class TrafficLightResult( val lightId: Int, //红绿灯ID val laneNo: Int, //车道号 val arrowNo: Int, //当前车道对应地面要素转向 - val laneList: TrafficLightDetail, //灯态具体信息 + val laneList: TrafficLightDetail?, //灯态具体信息 val flashYellow: Int,// 黄灯总时间 val timeStamp: Long //当前卫星时间,单位:ms ) { diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/TrafficLightStatusHelper.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/TrafficLightStatusHelper.kt index 3b6f9ac6ef..1ab8483128 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/TrafficLightStatusHelper.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/trafficlight/TrafficLightStatusHelper.kt @@ -4,6 +4,9 @@ object TrafficLightStatusHelper { fun getCurrentRoadTrafficLight(trafficLightResult: TrafficLightResult): TrafficLightStatus? { val arrowNo = trafficLightResult.arrowNo + if(trafficLightResult.laneList == null){ + return null + } if (RoadArrow.isLeft(arrowNo) && trafficLightResult.laneNo == -1) { return trafficLightResult.laneList.left } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt new file mode 100644 index 0000000000..8700029ed9 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/v2x/LineUploadData.kt @@ -0,0 +1,6 @@ +package com.mogo.eagle.core.data.v2x + +/** + * 路线上报 + */ +data class LineUploadData(val lineId:Long,val sn:String) \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt index 86208cc151..87d4452fb7 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/autopilot/IMoGoAutopilotStatusListener.kt @@ -44,7 +44,12 @@ interface IMoGoAutopilotStatusListener { /** * 工控机主动查询 AdasManager#sendStatusQueryReq(),后会收到如下回调 */ - fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) { } + fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {} + + /** + * 自动驾驶路线ID回调 + */ + fun onAutopilotRouteLineId(lineId: Long){} companion object { /** diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/angle/IMoGoVisualAngleChangeProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/angle/IMoGoVisualAngleChangeProvider.kt index a4c1ec1712..a91757137d 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/angle/IMoGoVisualAngleChangeProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/map/angle/IMoGoVisualAngleChangeProvider.kt @@ -1,8 +1,8 @@ package com.mogo.eagle.core.function.api.map.angle -import com.mogo.eagle.core.function.api.base.* +import com.alibaba.android.arouter.facade.template.IProvider -interface IMoGoVisualAngleChangeProvider: IMoGoFunctionServerProvider { +interface IMoGoVisualAngleChangeProvider: IProvider { fun updateLongSightLevel(level: Boolean) diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuLocationWGS84Listener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuLocationWGS84Listener.kt index 16c5fd57b3..8c4eeac160 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuLocationWGS84Listener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/obu/IMoGoObuLocationWGS84Listener.kt @@ -1,6 +1,6 @@ package com.mogo.eagle.core.function.api.obu -import com.mogo.support.obu.model.MogoObuHvBasicsData +import mogo.telematics.pad.MessagePad /** * OBU HV 自车车辆基础信息数据,自车定位数据 WGS84 坐标系 @@ -15,6 +15,6 @@ interface IMoGoObuLocationWGS84Listener { * @param data 数据 * @since 1.0.0 */ - fun onObuLocationWGS84(data: MogoObuHvBasicsData) + fun onObuLocationWGS84(data: MessagePad.GnssInfo) } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IMogoTelematicProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IMogoTelematicProvider.kt index 70303c7b99..39ff7d0f62 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IMogoTelematicProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IMogoTelematicProvider.kt @@ -10,4 +10,8 @@ interface IMogoTelematicProvider: IProvider { fun getServerIp(): String fun getServerToken(): String + + fun sendMsgToAllClients(type: Int, byteArray: ByteArray) + + fun sendMsgToServer(type: Int, byteArray: ByteArray) } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IReceivedMsgListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IReceivedMsgListener.kt new file mode 100644 index 0000000000..c64b114963 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IReceivedMsgListener.kt @@ -0,0 +1,5 @@ +package com.mogo.eagle.core.function.api.telematic + +interface IReceivedMsgListener { + fun onReceivedMsg(type: Int, byteArray: ByteArray) +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/v2x/IMoGoTrafficLightListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/v2x/IMoGoTrafficLightListener.kt index 58e247b9e3..216a936e78 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/v2x/IMoGoTrafficLightListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/v2x/IMoGoTrafficLightListener.kt @@ -30,6 +30,11 @@ interface IMoGoTrafficLightListener { */ fun onTrafficLightPlusSource(light: TrafficLightEnum, remain:Int = -1, lightSource: DataSourceType){} + /** + * obu 红绿灯消失 + */ + fun onObuTrafficLightDisapper(){} + /** * 展示红绿灯预警 * diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt index e158d6bced..a8e8131ab8 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/autopilot/CallerAutoPilotStatusListenerManager.kt @@ -7,6 +7,9 @@ import com.mogo.eagle.core.function.call.base.CallerBase import com.mogo.eagle.core.utilcode.util.GsonUtils import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg +import system_master.* +import java.util.concurrent.ConcurrentHashMap +import kotlin.properties.Delegates import system_master.SystemStatusInfo /** @@ -20,6 +23,20 @@ object CallerAutoPilotStatusListenerManager : CallerBase + if(newValue == null){ + return@observable + } + M_AUTOPILOT_STATUS_LISTENERS.forEach { + val listener = it.value + listener.onAutopilotRouteLineId(newValue) + } + } + + // 存储所有注册了监听的对象,invokeXXXX进行遍历回调,将信息同步 + private val M_AUTOPILOT_STATUS_LISTENERS: ConcurrentHashMap = + ConcurrentHashMap() + @Volatile private var autoPilotMessageCode: String = "" @@ -167,6 +184,7 @@ object CallerAutoPilotStatusListenerManager : CallerBase() { - fun invokeObuLocationWGS84(data: MogoObuHvBasicsData) { + fun invokeObuLocationWGS84(data: MessagePad.GnssInfo) { M_LISTENERS.forEach { val tag = it.key val listener = it.value diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicListenerManager.kt new file mode 100644 index 0000000000..54201e9325 --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicListenerManager.kt @@ -0,0 +1,14 @@ +package com.mogo.eagle.core.function.call.telematic + +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener +import com.mogo.eagle.core.function.call.base.CallerBase + +object CallerTelematicListenerManager: CallerBase() { + + fun invokeReceivedMsg(type: Int, byteArray: ByteArray) { + M_LISTENERS.forEach { + val listener = it.value + listener.onReceivedMsg(type, byteArray) + } + } +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicManager.kt index 34bf5ea141..c164e12b15 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicManager.kt @@ -34,4 +34,20 @@ object CallerTelematicManager { fun getServerToken(): String { return providerApi?.getServerToken() ?: "" } + + /** + * 发送数据给所有客户端 + * type:保存在TelematicConstant中 + */ + fun sendMsgToAllClients(type: Int, byteArray: ByteArray) { + providerApi?.sendMsgToAllClients(type, byteArray) + } + + /** + * 发送数据给服务端 + * type:保存在TelematicConstant中 + */ + fun sendMsgToServer(type: Int, byteArray: ByteArray) { + providerApi?.sendMsgToServer(type, byteArray) + } } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallerTrafficLightListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallerTrafficLightListenerManager.kt index c903ddbc2a..60e4cd4e78 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallerTrafficLightListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/v2x/CallerTrafficLightListenerManager.kt @@ -45,6 +45,13 @@ object CallerTrafficLightListenerManager : CallerBase } } + fun invokeTrafficLightDisapper() { + M_LISTENERS.forEach { + val listener = it.value + listener.onObuTrafficLightDisapper() + } + } + /** * 重置红绿灯状态并隐藏 */ diff --git a/core/mogo-core-utils/src/main/AndroidManifest.xml b/core/mogo-core-utils/src/main/AndroidManifest.xml index acde4e0712..70033d6f31 100644 --- a/core/mogo-core-utils/src/main/AndroidManifest.xml +++ b/core/mogo-core-utils/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/DeviceUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/DeviceUtils.java index 8cf0c47008..b9b636186a 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/DeviceUtils.java +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/DeviceUtils.java @@ -5,9 +5,11 @@ import static android.Manifest.permission.CHANGE_WIFI_STATE; import static android.Manifest.permission.INTERNET; import static android.content.Context.WIFI_SERVICE; +import android.Manifest; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.Resources; import android.net.Uri; @@ -15,7 +17,10 @@ import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; import android.provider.Settings; +import android.telephony.CellLocation; import android.telephony.TelephonyManager; +import android.telephony.cdma.CdmaCellLocation; +import android.telephony.gsm.GsmCellLocation; import android.text.TextUtils; import android.util.Log; @@ -528,6 +533,41 @@ public final class DeviceUtils { return prefix + UUID.nameUUIDFromBytes(id.getBytes()).toString().replace("-", ""); } + public static String getCellId() { + TelephonyManager tm = (TelephonyManager) Utils.getApp().getSystemService(Context.TELEPHONY_SERVICE); + if (tm == null) { + return ""; + } + + PackageManager pm = Utils.getApp().getPackageManager(); + boolean accessCoarseLocationPermission = (PackageManager.PERMISSION_GRANTED == + pm.checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION, Utils.getApp().getPackageName())); + boolean accessFineLocationPermission = (PackageManager.PERMISSION_GRANTED == + pm.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, Utils.getApp().getPackageName())); + if (!accessCoarseLocationPermission || !accessFineLocationPermission) + return "noPermission"; + + CellLocation location = null; + try { + location = tm.getCellLocation(); + } catch (Exception e) { + e.printStackTrace(); + } + if (location != null) { + // Gsm网络 , 联通移动的网络属于这一套 + if (location instanceof GsmCellLocation) { + GsmCellLocation gsmLoc = (GsmCellLocation) location; + int cellid = gsmLoc.getCid(); + return String.valueOf(cellid); + // Cdma网络 , 电信网络属于这一种 + } else if (location instanceof CdmaCellLocation) { + CdmaCellLocation cdmaLoc = (CdmaCellLocation) location; + return String.valueOf(cdmaLoc.getBaseStationId()); + } + } + return ""; + } + /** * 判断用户是否打开系统定位服务 * @@ -574,10 +614,10 @@ public final class DeviceUtils { // 中科创达 EB5获取SN serial = (String) get.invoke(c, "persist.device.sn"); } - if (TextUtils.isEmpty(serial)) { - // 联想PAD 获取SN - serial = (String) get.invoke(c, "ro.odm.lenovo.gsn"); - } +// if (TextUtils.isEmpty(serial)) { +// // 联想PAD 获取SN,2022-2023款PAD无法获取暂时不启用 +// serial = (String) get.invoke(c, "ro.odm.lenovo.gsn"); +// } } catch (Exception e) { e.printStackTrace(); } @@ -609,6 +649,26 @@ public final class DeviceUtils { return productModel; } + + /** + * @return 获取Fota系统版本 + */ + public static String getFotaVersion() { + String fotaVersion = ""; + try { + Class c = Class.forName("android.os.SystemProperties"); + Method get = c.getMethod("get", String.class); + fotaVersion = (String) get.invoke(c, "ro.fota.version"); + if (!TextUtils.isEmpty(fotaVersion)) { + fotaVersion = fotaVersion.trim(); + } + } catch (Exception e) { + e.printStackTrace(); + } + return fotaVersion; + } + + private static String getSerialnoNumbers() { final String serialnoStr = "[ro.boot.serialno]"; try { @@ -633,4 +693,29 @@ public final class DeviceUtils { } return serialnoStr; } + + public static final String KEY_DEVICE_ID = "deviceId"; + + /** + * 获取设备SN信息,首次获取后会存储SP,后续获取都从SP获取 + * + * @return 当前的设备SN信息,优先使用设备固定的sn, + */ + public static String getDeviceSN() { + String devicesSN = SPUtils.getInstance().getString(KEY_DEVICE_ID); + if (TextUtils.isEmpty(devicesSN)) { + // 获取设备唯一SN + devicesSN = getSerialNumber(); + // 获取 android id of device + if (TextUtils.isEmpty(devicesSN)) { + devicesSN = getAndroidID(); + // 获取随机的设备ID + if (TextUtils.isEmpty(devicesSN)) { + devicesSN = getUniqueDeviceId(); + } + } + SPUtils.getInstance().put(KEY_DEVICE_ID, devicesSN); + } + return devicesSN; + } } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java index 36ffa13fce..ff72401217 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/constants/HostConst.java @@ -12,6 +12,7 @@ public class HostConst { public static final String CAMERA_STREAM_HOST = "http://dzt-smartTransportationAiCloud.zhidaozhixing.com"; public static final String OPEN_CAMERA_STREAM_HOST = "http://10.0.16.6:18080"; + public static final String DATA_CENTER_HOST = "http://dzt-data-center.zhidaozhixing.com"; public static final String CITY_HOST = "http://dzt-city.zhidaozhixing.com"; public static final String SOCKET_CENTER_DOMAIN = "socketRegion"; diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java index 9e01274d60..b87aa93e8b 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java @@ -168,18 +168,6 @@ public class DebugConfig { return mapOptVersion; } - /** - * 是否需要实时上报坐标位置 - */ - private static boolean sIsNeedUploadCoordinatesInTime = false; - - public static boolean isNeedUploadCoordinatesDurationInTime() { - return sIsNeedUploadCoordinatesInTime; - } - - public static void setNeedUploadCoordinatesInTime(boolean sIsNeedUploadCoordinatesInTime) { - DebugConfig.sIsNeedUploadCoordinatesInTime = sIsNeedUploadCoordinatesInTime; - } // 兼容是否支持多屏幕方案 private static boolean isMultiDisplay = false; @@ -190,4 +178,15 @@ public class DebugConfig { public static boolean isMultiDisplay() { return isMultiDisplay; } + + // 兼容是否支持多屏幕方案 + private static boolean isCarModelChange = true; + + public static void setCarModelChange(boolean status) { + isCarModelChange = status; + } + + public static boolean isCarModelChange() { + return isCarModelChange; + } } diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java index 38c0ce82b2..6cfd729f0b 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/ParamsUtil.java @@ -16,7 +16,7 @@ import com.mogo.eagle.core.network.ServerParam; import com.mogo.eagle.core.network.utils.GsonUtil; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.CommonUtils; -import com.mogo.eagle.core.utilcode.util.DeviceIdUtils; +import com.mogo.eagle.core.utilcode.util.DeviceUtils; import com.mogo.eagle.core.utilcode.util.WindowUtils; import java.io.UnsupportedEncodingException; @@ -38,7 +38,7 @@ public class ParamsUtil { params.putAll(location); } params.put(ServerParam.NET_TYPE, CommonUtils.getNetworkType(AbsMogoApplication.getApp())); - params.put(ServerParam.CELL_ID, Utils.getCellId(AbsMogoApplication.getApp())); + params.put(ServerParam.CELL_ID, DeviceUtils.getCellId()); // params.put( ServerParam.DISPLAY_ID, DeviceUtil.getSystemVersion() ); params.put(ServerParam.SN, MoGoAiCloudClientConfig.getInstance().getSn()); @@ -61,10 +61,10 @@ public class ParamsUtil { STATIC_PARAMS.put(ServerParam.VERSION_NAME, CommonUtils.getVersionName(AbsMogoApplication.getApp())); STATIC_PARAMS.put(ServerParam.SCREEN_PIXELS, WindowUtils.getScreenPixels(AbsMogoApplication.getApp())); STATIC_PARAMS.put(ServerParam.ANDROID_ID, CommonUtils.getAndroidID(AbsMogoApplication.getApp())); - STATIC_PARAMS.put(ServerParam.DEVICE_ID, DeviceIdUtils.getDeviceId(AbsMogoApplication.getApp())); + STATIC_PARAMS.put(ServerParam.DEVICE_ID, DeviceUtils.getDeviceSN()); STATIC_PARAMS.put(ServerParam.IMEI, CommonUtils.getIMEI(AbsMogoApplication.getApp())); STATIC_PARAMS.put(ServerParam.IMSI, CommonUtils.getIMSI(AbsMogoApplication.getApp())); - STATIC_PARAMS.put(ServerParam.FOTA_VERSION, Utils.getFotaVersion()); + STATIC_PARAMS.put(ServerParam.FOTA_VERSION, DeviceUtils.getFotaVersion()); STATIC_PARAMS.put(ServerParam.END_POINT, ServerParam.END_POINT_CAR); } @@ -75,7 +75,7 @@ public class ParamsUtil { public static Map getAnalyticsCustomParams() { Map map = new ArrayMap<>(); map.put("debug", DebugConfig.isDebug() ? 1 : 0); - String fota = Utils.getFotaVersion(); + String fota = DeviceUtils.getFotaVersion(); map.put("systemversion", TextUtils.isEmpty(fota) ? DebugConfig.getProductFlavor() : fota); map.put("sn", MoGoAiCloudClientConfig.getInstance().getSn()); return map; diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java deleted file mode 100644 index 548c76e459..0000000000 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/network/Utils.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.mogo.commons.network; - - -import android.Manifest; -import android.content.Context; -import android.content.pm.PackageManager; -import android.telephony.CellLocation; -import android.telephony.TelephonyManager; -import android.telephony.cdma.CdmaCellLocation; -import android.telephony.gsm.GsmCellLocation; - -import com.mogo.commons.AbsMogoApplication; -import com.mogo.commons.debug.DebugConfig; -import com.mogo.eagle.core.utilcode.util.DeviceIdUtils; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; - -/** - * Created by congtaowang on 2018/3/29. - */ - -public class Utils { - - public static String getCellId(Context context) { - TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - if (tm == null) { - return ""; - } - - PackageManager pm = context.getPackageManager(); - boolean accessCoarseLocationPermission = (PackageManager.PERMISSION_GRANTED == - pm.checkPermission(Manifest.permission.ACCESS_COARSE_LOCATION, context.getPackageName())); - boolean accessFineLocationPermission = (PackageManager.PERMISSION_GRANTED == - pm.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, context.getPackageName())); - if (!accessCoarseLocationPermission || !accessFineLocationPermission) - return "noPermission"; - - CellLocation location = null; - try { - location = tm.getCellLocation(); - } catch (Exception e) { - e.printStackTrace(); - } - if (location != null) { - // Gsm网络 , 联通移动的网络属于这一套 - if (location instanceof GsmCellLocation) { - GsmCellLocation gsmLoc = (GsmCellLocation) location; - int cellid = gsmLoc.getCid(); - return String.valueOf(cellid); - // Cdma网络 , 电信网络属于这一种 - } else if (location instanceof CdmaCellLocation) { - CdmaCellLocation cdmaLoc = (CdmaCellLocation) location; - return String.valueOf(cdmaLoc.getBaseStationId()); - } - } - return ""; - } - - - public static final String GET = "get"; - public static final String GSM_SERIAL = "gsm.serial"; - public static final String BYD_SERIAL = "ro.serialno"; - public static final String FOTA_VERSION = "ro.fota.version"; - public static final String PROPERTIES = "android.os.SystemProperties"; - - public static String getDevicesId() { - if (DebugConfig.getCarMachineType() != DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) { - return DeviceIdUtils.getDeviceId(AbsMogoApplication.getApp()); - } - return getSystemProperties(GSM_SERIAL); - } - - public static String getFotaVersion() { - return getSystemProperties(FOTA_VERSION); - } - - public static String getSystemProperties(String name) { - String value = ""; - - try { - Class c = Class.forName(PROPERTIES); - Method get = c.getMethod(GET, String.class); - value = (String) get.invoke(c, name); - } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException var3) { - var3.printStackTrace(); - } - return value; - } -} diff --git a/gradle.properties b/gradle.properties index 9c88990a89..dd72d41281 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ org.gradle.daemon=true org.gradle.configureondemand=true org.gradle.parallel=true -org.gradle.jvmargs=-Xmx3048m +org.gradle.jvmargs=-Xmx3072m #开启gradle缓存 org.gradle.caching=true android.enableBuildCache=true @@ -66,23 +66,23 @@ SERVICE_BIZ_VERSION=1.2.4 LOGLIB_VERSION=1.5.10 ######## MogoAiCloudSDK Version ######## # 网络请求LOGLIB_VERSION -MOGO_NETWORK_VERSION=1.4.4.1 +MOGO_NETWORK_VERSION=1.4.4.2 # 鉴权 -MOGO_PASSPORT_VERSION=1.4.4.1 +MOGO_PASSPORT_VERSION=1.4.4.2 # 常链接 -MOGO_SOCKET_VERSION=1.4.4.1 +MOGO_SOCKET_VERSION=1.4.4.2 # 数据采集 -MOGO_REALTIME_VERSION=1.4.4.1 +MOGO_REALTIME_VERSION=1.4.4.2 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.4.4.1 +MOGO_TANLU_VERSION=1.4.4.2 # 直播推流 -MOGO_LIVE_VERSION=1.4.4.1 +MOGO_LIVE_VERSION=1.4.4.2 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.4.4.1 +MOGO_TRAFFICLIVE_VERSION=1.4.4.2 # 定位服务 -MOGO_LOCATION_VERSION=1.4.4.1 +MOGO_LOCATION_VERSION=1.4.4.2 # 远程通讯模块 -MOGO_TELEMATIC_VERSION=1.4.4.1 +MOGO_TELEMATIC_VERSION=1.4.4.2 ######## MogoAiCloudSDK Version ######## # 自研地图 MAP_SDK_VERSION=2.10.0.2_test_01 diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java index 8c003a0a5f..e264f883ad 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java @@ -126,7 +126,7 @@ public class AMapViewWrapper implements IMogoMapView, private void initViews() { // 初始化首次地图进入的时候的样式, MapAutoApi.INSTANCE.init(context, mapParams);将影响这里的数据 int mapStyle = MapAutoApi.INSTANCE.getMapParams().getStyleMode(); - CallerLogger.INSTANCE.e(M_MAP + TAG, "默认配置地图模式:mapStyle=" + mapStyle); + CallerLogger.INSTANCE.d(M_MAP + TAG, "默认配置地图模式:mapStyle=" + mapStyle); switch (mapStyle) { case MapAutoApi.MAP_STYLE_DAY: mCurrentUI = EnumMapUI.MAP_STYLE_DAY; diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/CustomMapApiBuilder.java b/libraries/mogo-map/src/main/java/com/mogo/map/CustomMapApiBuilder.java deleted file mode 100644 index d745f286fb..0000000000 --- a/libraries/mogo-map/src/main/java/com/mogo/map/CustomMapApiBuilder.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.mogo.map; - -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.map.uicontroller.AMapUIController; -import com.mogo.map.uicontroller.IMogoMapUIController; - -/** - * @author congtaowang - * @since 2020/12/9 - *

- * 描述 - */ -public class CustomMapApiBuilder { - - private static final String TAG = "CustomMapApiBuilder"; - - private static CustomMapApiBuilder sApiBuilder; - - private static CustomMapApiBuilder getApiBuilder() { - if (sApiBuilder == null) { - synchronized (CustomMapApiBuilder.class) { - if (sApiBuilder == null) { - CallerLogger.INSTANCE.d(TAG, "init"); - sApiBuilder = new CustomMapApiBuilder(); - } - } - } - return sApiBuilder; - } - - public IMogoMapUIController getMapUIController() { - return AMapUIController.getInstance(); - } - - - public static IMogoMapUIController getMapUIControllerDelegate() { - return getApiBuilder().getMapUIController(); - } - - public static void destroy() { - } -} diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java index e46f160a1a..f525de00c5 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapUIController.java @@ -8,6 +8,7 @@ import com.mogo.eagle.core.data.map.CenterLine; import com.mogo.eagle.core.data.map.MogoLatLng; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.map.uicontroller.AMapUIController; import com.mogo.map.uicontroller.CarCursorOption; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.MapCameraPosition; @@ -37,7 +38,7 @@ public class MogoMapUIController implements IMogoMapUIController { private void initDelegate() { if (mDelegate == null) { - mDelegate = CustomMapApiBuilder.getMapUIControllerDelegate(); + mDelegate = AMapUIController.getInstance(); } } diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapView.java b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapView.java index 538db0e039..62f04538f1 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapView.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/MogoMapView.java @@ -89,7 +89,6 @@ public class MogoMapView extends MogoBaseMapView implements ILifeCycle { } public void setExtraGPSData(MogoLocation gnssInfo) { - getMap().getUIController().setExtraGPSData(gnssInfo); } diff --git a/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/ObuManager.java b/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/ObuManager.java index 9844746ece..9af04efdeb 100644 --- a/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/ObuManager.java +++ b/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/ObuManager.java @@ -755,7 +755,9 @@ public class ObuManager { trackedObjectBuilder.setAltitude(vehBasics.getElevation()); trackedObjectBuilder.setSpeed(vehBasics.getSpeed()); trackedObjectBuilder.setHeading(vehBasics.getHeading()); - trackedObjectBuilder.addTrackedSource(MessagePad.TrackedSource.newBuilder().setSource(2)); + MessagePad.TrackedSource source = MessagePad.TrackedSource.newBuilder().setSource(2) + .addSubSource(MessagePad.SubSource.newBuilder().setSource(1).setId(vehBasics.getId())).build(); + trackedObjectBuilder.addTrackedSource(source); /** * 0 未知车辆 * 1 特殊用途车辆 diff --git a/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java b/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java index 075efaea9b..ac22671363 100644 --- a/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java +++ b/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java @@ -1,7 +1,6 @@ package com.mogo.test.crashreport.apm; import android.content.Context; -import android.util.Log; import com.alibaba.android.arouter.facade.annotation.Route; import com.apm.insight.AttachUserData; @@ -16,9 +15,8 @@ import com.mogo.commons.debug.DebugConfig; import com.mogo.eagle.core.data.bindingcar.CarInfo; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; -import com.mogo.eagle.core.utilcode.util.AppUtils; import com.mogo.eagle.core.utilcode.util.CommonUtils; -import com.mogo.eagle.core.utilcode.util.DeviceIdUtils; +import com.mogo.eagle.core.utilcode.util.DeviceUtils; import com.mogo.eagle.core.utilcode.util.GsonUtils; import com.mogo.test.crashreport.CrashReportConstants; import com.mogo.test.crashreport.ITestCrashReportProvider; @@ -92,7 +90,7 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider { if (sn != null && !sn.isEmpty()) { crash.config().setDeviceId(sn); } else { - crash.config().setDeviceId(DeviceIdUtils.getDeviceId(context)); + crash.config().setDeviceId(DeviceUtils.getDeviceSN()); } crash.addTags(MAP_SDK_VERSION, mapSDKVersion); crash.addTags("CITYCODE", mCityCode); @@ -104,7 +102,7 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider { HashMap dimension = new HashMap<>(); //维度值 - dimension.put("Devices_SN_DeviceId", sn + "__" + DeviceIdUtils.getDeviceId(context)); + dimension.put("Devices_SN_DeviceId", sn + "__" + DeviceUtils.getDeviceSN()); // dimension.put("Devices_SN_WidevineID_MD5", sn + "__" + DeviceIdUtils.getWidevineIDWithMd5(context)); // dimension.put("Devices_SN_WidevineID", sn + "__" + DeviceIdUtils.getWidevineID(context)); dimension.put(MAP_SDK_VERSION, mapSDKVersion);