diff --git a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml index 5536384f8a..6186719077 100644 --- a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml @@ -32,6 +32,27 @@ app:marginStart="@dimen/dp_640" app:marginTop="@dimen/dp_80" /> + + + + + + + package="com.mogo.och.noop"> - / \ No newline at end of file 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 9d04c6c036..1abf670a2e 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,6 +4,10 @@ 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 @@ -15,15 +19,70 @@ import com.alibaba.android.arouter.facade.annotation.Route @Route(path = OCHConstants.PATH) class MoGoOCHNoopProvider : IMogoOCH { + companion object { + private const val TAG = "MogoOCHNoopProvider" + } + override val functionName: String - get() = "MogoOCHNoopProvider" + get() = TAG + + private var fragment: OchNoopFragment? = null + private var containerId = 0 + 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) { + d(TAG, "准备add fragment======") + val fragmentByTag = it.supportFragmentManager.findFragmentByTag(TAG) + fragment = if (fragmentByTag is OchNoopFragment) { + fragmentByTag + } else { + OchNoopFragment() + } + if (!fragment!!.isAdded) { + it.supportFragmentManager.beginTransaction() + .add(containerId, fragment!!, TAG).commitAllowingStateLoss() + } + return + } + d(TAG, "准备show fragment") + fragment?.let { noopFragment -> + it.supportFragmentManager.beginTransaction().show(noopFragment) + .commitAllowingStateLoss() + } + } + } + + 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 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 ac540cf7e9..3dcf55be4f 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 @@ -3,12 +3,9 @@ package com.mogo.och.noop import android.view.View import com.mogo.commons.mvp.MvpFragment import com.mogo.eagle.core.data.config.FunctionBuildConfig -import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager -import com.mogo.eagle.core.function.hmi.ui.setting.CameraLiveView.Companion.cameraLiveView import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView -import com.mogo.eagle.core.function.hmi.ui.setting.ToolsView.Companion.toolsView import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView import com.mogo.och.bus.R @@ -33,7 +30,6 @@ class OchNoopFragment : MvpFragment(), return OchNoopPresenter(this) } - override fun initViews() { //设置StatusBar初始状态 @@ -44,23 +40,6 @@ class OchNoopFragment : MvpFragment(), DemoModeView(requireContext()) ) - ivCameraIcon?.setOnClickListener { - cameraLiveView.showCameraList( - context, - CallerFuncBizManager.bizProvider.getCameraList - ) { liveStatus -> - if (liveStatus) { - ivCameraIcon.setBackgroundResource(R.drawable.icon_camera_selected) - } else { - ivCameraIcon.setBackgroundResource(R.drawable.icon_camera_nor) - } - } - } - - ivToolsView?.setOnClickListener { - toolsView.showToolsFloat(context) - } - viewShowDebugView.setOnLongClickListener { ToggleDebugView.toggleDebugView.toggle(requireContext()) true diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml index abd64b352c..18d4ade230 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml @@ -90,6 +90,27 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"/> + + + + + + () { } override fun dependenciesByName(): List { - return listOf("com.mogo.launcher.stageone.ARouterStartUp", "com.mogo.launcher.stageone.ThreadOptStartup") + return listOf("com.mogo.launcher.stageone.ARouterStartUp") } } \ No newline at end of file diff --git a/app/src/main/java/com/mogo/launcher/stageone/ARouterStartUp.kt b/app/src/main/java/com/mogo/launcher/stageone/ARouterStartUp.kt index 15c913da9b..c539080df1 100644 --- a/app/src/main/java/com/mogo/launcher/stageone/ARouterStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/stageone/ARouterStartUp.kt @@ -33,6 +33,6 @@ class ARouterStartUp : AndroidStartup() { override fun waitOnMainThread() = false override fun dependenciesByName(): List? { - return listOf("com.mogo.launcher.stageone.ThreadOptStartup") + return null } } \ No newline at end of file diff --git a/app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt b/app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt index 9c5c13cc30..d2093e3b5c 100644 --- a/app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/stageone/ConfigStartUp.kt @@ -93,13 +93,6 @@ class ConfigStartUp : AndroidStartup() { // 配置BuglyAppID:MoGoEagleEye CrashReportConstants.buglyAppID = "ac71228f85" - if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) || - AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { - //控制HMI展示元素 将不用手动调用setXXXXXViewVisibility - HmiBuildConfig.isShowAutopilotStatusView = false - HmiBuildConfig.isShowPerspectiveSwitchView = false - } - if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { HdMapBuildConfig.currentCarVrIconRes = R.raw.chuzuche } else if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { @@ -112,21 +105,13 @@ class ConfigStartUp : AndroidStartup() { if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { - //是否显示 红绿等 - HmiBuildConfig.isShowTrafficLightView = false //是否显示 限速UI HmiBuildConfig.isShowLimitingVelocityView = false - //是否显示 路侧监控 - HmiBuildConfig.isShowCameraView = false //白天模式 FunctionBuildConfig.skinMode = 1 } else if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { - //是否显示 红绿等 - HmiBuildConfig.isShowTrafficLightView = false //是否显示 限速UI HmiBuildConfig.isShowLimitingVelocityView = false - //是否显示 路侧监控 - HmiBuildConfig.isShowCameraView = false } } @@ -169,7 +154,7 @@ class ConfigStartUp : AndroidStartup() { } - override fun dependenciesByName(): List { - return listOf("com.mogo.launcher.stageone.ThreadOptStartup") + override fun dependenciesByName(): List? { + return null } } \ No newline at end of file diff --git a/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt b/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt index a189438325..8c4aa9dc6c 100644 --- a/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/stageone/HttpDnsStartUp.kt @@ -70,8 +70,7 @@ class HttpDnsStartUp : AndroidStartup() { override fun dependenciesByName(): List { return listOf( - "com.mogo.launcher.stageone.APMStartup", - "com.mogo.launcher.stageone.ThreadOptStartup" + "com.mogo.launcher.stageone.APMStartup" ) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 6888a1fde6..62501383b7 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -11,10 +11,19 @@ import androidx.lifecycle.LifecycleCoroutineScope import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.msgbox.MsgBoxBean +import com.mogo.eagle.core.data.msgbox.MsgBoxType +import com.mogo.eagle.core.data.msgbox.RecordBagMsg +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.utilcode.kotlin.lifecycleOwner +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils 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.logger.scene.SceneConstant.Companion.M_DEVA +import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.* import com.zhjt.mogo_core_function_devatools.badcase.biz.* import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig @@ -27,7 +36,7 @@ import record_cache.RecordPanelOuterClass import java.lang.ref.WeakReference import java.util.concurrent.TimeUnit -internal object BadCaseManager : LifecycleEventObserver { +internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordListener { const val TAG = "BadCase" @@ -96,6 +105,8 @@ internal object BadCaseManager : LifecycleEventObserver { * 主动采集BadCase */ fun initBadCase(view: View) { + CallerAutopilotRecordListenerManager.addListener(TAG, this) + val activity = view.context as? FragmentActivity ?: throw IllegalStateException("please ensure context is FragmentActivity.") view.setOnClickListener { @@ -193,24 +204,62 @@ internal object BadCaseManager : LifecycleEventObserver { } } + override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { + super.onAutopilotRecordResult(recordPanel) + CallerLogger.d("$M_DEVA$TAG", "recordKey=${recordPanel.key},stat=${recordPanel.stat}") + if (BadCaseConfig.recordKeyList.contains(recordPanel.key)) { + if (recordPanel.stat == 100 || recordPanel.stat == 101) { + //成功结束录制 + TipToast.shortTip( + "${ + TimeUtils.millis2String( + System.currentTimeMillis(), + TimeUtils.getHourMinSecondFormat() + ) + } bag录制成功" + ) + } + if (recordPanel.stat == 200) { + //录制失败 + TipToast.shortTip( + "${ + TimeUtils.millis2String( + System.currentTimeMillis(), + TimeUtils.getHourMinSecondFormat() + ) + } bag录制失败" + ) + } + return + } + //在工控机taxi2.3.0版本和Bus2.4.0版本上不支持被动录包,不进行被动录包的弹窗 + BadCaseConfig.dockerVersion?.let { + if (it.contains("taxi") && it.contains("2.3.0")) { + return + } + if (it.contains("bus") && it.contains("2.4.0")) { + return + } + } + //处于非美化模式下弹窗;是地图数据采集任务时即type=2时,不弹窗 + if (!FunctionBuildConfig.isDemoMode && (recordPanel.stat == 100 || recordPanel.stat == 101) && recordPanel.type != 2) { + //只在司机屏生效,乘客屏不生效 + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.RECORD, RecordBagMsg( + recordPanel.key, recordPanel.stat, recordPanel.id, + recordPanel.type, recordPanel.filename, recordPanel.note + ) + ) + ) + } + } + } + override fun onStateChanged(source: LifecycleOwner, event: Event) { } } - - -internal fun RecordPanelOuterClass.RecordPanel.toRecord(): AutoPilotRecord = - AutoPilotRecord().also { - it.id = this.id - it.stat = this.stat - it.key = this.key.toString() - it.note = this.note - it.type = this.type - it.total = this.totalSize - it.fileName = this.filename - it.duration = this.duration.toDouble() - it.diskFree = this.diskFree - it.consumed = false - } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt index 4ab9e49463..ed8dc2da88 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/InitiativeBadCaseWindow.kt @@ -373,6 +373,7 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { CallerLogger.d("${M_DEVA}${TAG}", "-- 收到工控机录制任务回调 -- $recordPanel") + ThreadUtils.runOnUiThread { if (recordKey == null) { recordKey = recordPanel.key.toString() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 05b6ab8ac8..a0ac521b3a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -40,6 +40,7 @@ import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion. import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.PerspectiveSwitchView_TAG import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.SpeedPanelView_TAG import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.ToolsView_TAG +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.TrafficLightView_TAG import com.mogo.eagle.core.function.api.hmi.view.IViewLimitingVelocity import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight import com.mogo.eagle.core.function.api.hmi.warning.IMoGoHmiProvider @@ -99,8 +100,7 @@ import java.util.concurrent.atomic.AtomicReference class MoGoHmiFragment : MvpFragment(), IMoGoHmiProvider, IMoGoHmiViewProxy, - MoGoHmiContract.View, - IMoGoAutopilotRecordListener { + MoGoHmiContract.View{ companion object { private const val TAG = "MoGoHmiFragment" @@ -119,29 +119,10 @@ class MoGoHmiFragment : MvpFragment(), private var showingV2XTip: IReminder? = null override fun initViews() { - initViewShowWithConfig() //设置StatusBar初始状态 CallerHmiViewControlListenerManager.updateStatusBarRightView(StatusBarView.TAG,FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(requireContext())) - ivCameraIcon?.setOnClickListener { - cameraLiveView.showCameraList( - context, - CallerFuncBizManager.bizProvider.getCameraList - ) { liveStatus -> - if (liveStatus) { - ivCameraIcon.setBackgroundResource(R.drawable.icon_camera_selected) - } else { - ivCameraIcon.setBackgroundResource(R.drawable.icon_camera_nor) - } - } - } - - viewShowDebugView.setOnLongClickListener { - toggleDebugView.toggle(requireContext()) - true - } - //todo 新超,封装至消息盒子 cbMsgBoxDriver.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { @@ -204,14 +185,10 @@ class MoGoHmiFragment : MvpFragment(), override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - CallerAutopilotRecordListenerManager.addListener(TAG, this) - - // 首次初始化使用默认视图 - setProxyTrafficLightView(viewTrafficLightVr) + //todo 确认使用方 taxi bus 乘客/司机 setProxyLimitingSpeedView(viewLimitingVelocity) } - /** todo ----------------------------------------------**/ /** * 设置 红绿灯 代理View @@ -227,109 +204,6 @@ class MoGoHmiFragment : MvpFragment(), mViewLimitingVelocity = view } - /** - * 根据配置文件初始化视图显示 - */ - private fun initViewShowWithConfig() { - // 控制 自动驾驶状态 展示 - if (HmiBuildConfig.isShowAutopilotStatusView) { - setAutopilotStatusViewVisibility(View.VISIBLE) - } else { - setAutopilotStatusViewVisibility(View.GONE) - } - - // 控制 切换视角 展示 - if (HmiBuildConfig.isShowPerspectiveSwitchView) { - setPerspectiveSwitchViewVisibility(View.VISIBLE) - } else { - setPerspectiveSwitchViewVisibility(View.GONE) - } - - // 控制 红绿灯 展示 - if (HmiBuildConfig.isShowTrafficLightView) { - setTrafficLightVrVisibility(View.VISIBLE) - } else { - setTrafficLightVrVisibility(View.GONE) - } - - // 控制 远程摄像头图标 展示 - if (HmiBuildConfig.isShowCameraView) { - setCameraViewVisibility(View.VISIBLE) - } else { - setCameraViewVisibility(View.GONE) - } - } - - /** todo----------------------------------------------- **/ - - override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { - CallerLogger.d("$M_HMI$TAG", "recordKey=${recordPanel.key},stat=${recordPanel.stat}") - if (BadCaseConfig.recordKeyList.contains(recordPanel.key)) { //todo InitiativeBadCaseWindow - if (recordPanel.stat == 100 || recordPanel.stat == 101) { - //成功结束录制 - TipToast.shortTip( - "${ - millis2String( - System.currentTimeMillis(), - TimeUtils.getHourMinSecondFormat() - ) - } bag录制成功" - ) - } - if (recordPanel.stat == 200) { - //录制失败 - TipToast.shortTip( - "${ - millis2String( - System.currentTimeMillis(), - TimeUtils.getHourMinSecondFormat() - ) - } bag录制失败" - ) - } - return - } - //在工控机taxi2.3.0版本和Bus2.4.0版本上不支持被动录包,不进行被动录包的弹窗 - BadCaseConfig.dockerVersion?.let { - if (it.contains("taxi") && it.contains("2.3.0")) { - return - } - if (it.contains("bus") && it.contains("2.4.0")) { - return - } - } - //处于非美化模式下弹窗;是地图数据采集任务时即type=2时,不弹窗 - if (!FunctionBuildConfig.isDemoMode && (recordPanel.stat == 100 || recordPanel.stat == 101) && recordPanel.type != 2) { - //只在司机屏生效,乘客屏不生效 - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { //todo 数据中心控制来源 - CallerMsgBoxManager.saveMsgBox( - MsgBoxBean( - MsgBoxType.RECORD, RecordBagMsg( - recordPanel.key, recordPanel.stat, recordPanel.id, - recordPanel.type, recordPanel.filename, recordPanel.note - ) - ) - ) - } - } - if (!FunctionBuildConfig.isDemoMode && recordPanel.type == 2 && ( //todo CallerMapDataCollectorManager - recordPanel.stat == 101 || //工控机采集完成-被动完成 - recordPanel.stat == 100 || //工控机采集完成-主动完成 - recordPanel.stat == 102 || //工控机达到最大采集时长 - recordPanel.stat == 103) //工控机磁盘满了 - ) { - CallerMapDataCollectorManager.finish( - recordPanel.id, recordPanel.stat, "", recordPanel.filename - ?: "", recordPanel.note ?: "" - ) - } - } - - override fun onDestroyView() { - super.onDestroyView() - CallerAutopilotRecordListenerManager.removeListener(TAG) - } - /** * ok * 工控机重启返回结果 @@ -410,9 +284,8 @@ class MoGoHmiFragment : MvpFragment(), DisplayEffectsHelper.getInstance().display() } - /** todo----------------------------------------------- **/ override fun setTrafficLightVrVisibility(visibility: Int) { - mViewTrafficLight?.visibility = visibility + CallerHmiViewControlListenerManager.invokeVisible(TrafficLightView_TAG,visibility) } override fun setToolsViewVisibility(visibility: Int) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ToolsImageView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ToolsImageView.kt index 6d89368329..84400ca732 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ToolsImageView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ToolsImageView.kt @@ -6,6 +6,7 @@ import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.ToolsView_TAG import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.ui.setting.ToolsView.Companion.toolsView class ToolsImageView(context: Context, attrs: AttributeSet?) : androidx.appcompat.widget.AppCompatImageView(context, attrs), IViewControlListener { @@ -15,6 +16,9 @@ class ToolsImageView(context: Context, attrs: AttributeSet?) : setBackgroundResource(R.drawable.module_ext_check) setImageResource(R.drawable.icon_tools_nor) scaleType = ScaleType.CENTER + setOnClickListener{ + toolsView.showToolsFloat(context) + } CallerHmiViewControlListenerManager.addListener(ToolsView_TAG, this) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CameraView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CameraView.kt index 8e90c54e8c..70e5ae0f35 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CameraView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CameraView.kt @@ -4,8 +4,10 @@ import android.content.Context import android.util.AttributeSet import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.CameraView_TAG +import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.hmi.R +import com.mogo.eagle.core.function.hmi.ui.setting.CameraLiveView.Companion.cameraLiveView class CameraView(context: Context, attrs: AttributeSet?) : androidx.appcompat.widget.AppCompatImageView(context, attrs), IViewControlListener { @@ -13,6 +15,19 @@ class CameraView(context: Context, attrs: AttributeSet?) : override fun onAttachedToWindow() { super.onAttachedToWindow() setBackgroundResource(R.drawable.icon_camera_nor) + setOnClickListener { + cameraLiveView.showCameraList( + context, + CallerFuncBizManager.bizProvider.getCameraList + ) { liveStatus -> + if (liveStatus) { + setBackgroundResource(R.drawable.icon_camera_selected) + } else { + setBackgroundResource(R.drawable.icon_camera_nor) + } + } + } + CallerHmiViewControlListenerManager.addListener(CameraView_TAG, this) } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt index 12842094df..36af0aad3d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/SingleTrafficLightView.kt @@ -8,7 +8,10 @@ import android.widget.ImageView import android.widget.TextView import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.config.HmiBuildConfig +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.TrafficLightView_TAG import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler @@ -20,7 +23,7 @@ class SingleTrafficLightView @JvmOverloads constructor( context: Context?, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : IViewTrafficLight(context, attrs, defStyleAttr) { +) : IViewTrafficLight(context, attrs, defStyleAttr), IViewControlListener { private var mLightIconIV: ImageView? = null private var mLightIconBG: ImageView? = null private var mLightTimeTV: GradientTextView? = null @@ -28,17 +31,26 @@ class SingleTrafficLightView @JvmOverloads constructor( private var mLightSourceDivider: View? = null private var mCurrentLightId = 0 - init { - init(context) - } - - private fun init(context: Context?) { + override fun onAttachedToWindow() { + super.onAttachedToWindow() LayoutInflater.from(context).inflate(R.layout.hmi_view_traffic_light, this, true) mLightIconIV = findViewById(R.id.hmi_traffic_light_iv) mLightIconBG = findViewById(R.id.hmi_traffic_light_bg) mLightTimeTV = findViewById(R.id.hmi_traffic_light_time_tv) mLightSourceTV = findViewById(R.id.hmi_traffic_light_source) mLightSourceDivider = findViewById(R.id.hmi_traffic_light_divider) + + CallerHmiViewControlListenerManager.addListener(TrafficLightView_TAG, this) + } + + override fun visible(v: Int) { + super.visible(v) + visibility = v + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerHmiViewControlListenerManager.removeListener(TrafficLightView_TAG) } /** @@ -47,11 +59,11 @@ class SingleTrafficLightView @JvmOverloads constructor( * @param checkLightId 0-都是默认,1-红,2-黄,3-绿 * @param lightSource 1:云端下发;2:自车感知 */ - override fun showWarningTrafficLight(checkLightId: Int,lightSource: Int) { - super.showWarningTrafficLight(checkLightId,lightSource) + override fun showWarningTrafficLight(checkLightId: Int, lightSource: Int) { + super.showWarningTrafficLight(checkLightId, lightSource) mCurrentLightId = checkLightId - if(!HmiBuildConfig.isShowTrafficLightView){ - updateTrafficLightIcon(checkLightId,lightSource) + if (!HmiBuildConfig.isShowTrafficLightView) { + updateTrafficLightIcon(checkLightId, lightSource) } } @@ -70,24 +82,28 @@ class SingleTrafficLightView @JvmOverloads constructor( super.disableCountdown() UiThreadHandler.post { // 小巴车的司机端需要展示红绿灯信号来源 - if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) - && AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) + && AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) + ) { val lp = this.layoutParams as MarginLayoutParams lp.width = context.resources.getDimension(R.dimen.dp_325).toInt() this.layoutParams = lp mLightSourceTV!!.visibility = VISIBLE mLightSourceDivider!!.visibility = VISIBLE mLightTimeTV!!.visibility = GONE - mLightSourceTV!!.setPadding(0,0,75,0) - mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.dp_310).toInt() - }else{ + mLightSourceTV!!.setPadding(0, 0, 75, 0) + mLightIconBG!!.layoutParams.width = + context.resources.getDimension(R.dimen.dp_310).toInt() + } else { val lp = this.layoutParams as MarginLayoutParams - lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_icon_size).toInt() + lp.width = + context.resources.getDimension(R.dimen.hmi_traffic_light_icon_size).toInt() this.layoutParams = lp mLightTimeTV!!.visibility = GONE mLightSourceDivider!!.visibility = View.GONE mLightSourceTV!!.visibility = View.GONE - mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.dp_124).toInt() + mLightIconBG!!.layoutParams.width = + context.resources.getDimension(R.dimen.dp_124).toInt() } } } @@ -176,7 +192,7 @@ class SingleTrafficLightView @JvmOverloads constructor( * @param lightId 0-都是默认,1-红,2-黄,3-绿 * @param lightSource 1:云端下发;2:自车感知 */ - private fun updateTrafficLightIcon(lightId: Int,lightSource: Int) { + private fun updateTrafficLightIcon(lightId: Int, lightSource: Int) { UiThreadHandler.post { when (lightId) { 1 -> { @@ -193,7 +209,7 @@ class SingleTrafficLightView @JvmOverloads constructor( } else -> this@SingleTrafficLightView.visibility = GONE } - when(lightSource){ + when (lightSource) { 1 -> { mLightSourceTV!!.text = "云端下发" } @@ -207,26 +223,31 @@ class SingleTrafficLightView @JvmOverloads constructor( } } - private fun resetView(){ + private fun resetView() { // 小巴车的司机端需要展示红绿灯信号来源 - if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) - && AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){ + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) + && AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) + ) { val lp = this.layoutParams as MarginLayoutParams - lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_bus_layout_width).toInt() + lp.width = + context.resources.getDimension(R.dimen.hmi_traffic_light_bus_layout_width).toInt() this.layoutParams = lp mLightTimeTV!!.visibility = View.VISIBLE mLightSourceDivider!!.visibility = View.VISIBLE mLightSourceTV!!.visibility = View.VISIBLE - mLightSourceTV!!.setPadding(0,0,0,0) - mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.hmi_traffic_light_bus_bg_width).toInt() - }else{ + mLightSourceTV!!.setPadding(0, 0, 0, 0) + mLightIconBG!!.layoutParams.width = + context.resources.getDimension(R.dimen.hmi_traffic_light_bus_bg_width).toInt() + } else { val lp = this.layoutParams as MarginLayoutParams - lp.width = context.resources.getDimension(R.dimen.hmi_traffic_light_layout_width).toInt() + lp.width = + context.resources.getDimension(R.dimen.hmi_traffic_light_layout_width).toInt() this.layoutParams = lp mLightTimeTV!!.visibility = View.VISIBLE mLightSourceDivider!!.visibility = View.GONE mLightSourceTV!!.visibility = View.GONE - mLightIconBG!!.layoutParams.width = context.resources.getDimension(R.dimen.hmi_traffic_light_bg_width).toInt() + mLightIconBG!!.layoutParams.width = + context.resources.getDimension(R.dimen.hmi_traffic_light_bg_width).toInt() } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml index 4755ef046f..b2dd4a6f0a 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/fragment_hmi.xml @@ -6,14 +6,6 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - - - + + + app:layout_constraintTop_toTopOf="parent"/> + + itx.init(it, @@ -64,13 +73,27 @@ class MoGoMapDataCollectProvider : IMoGoMapDataCollectProvider, OnTaskListener, } override fun onDestroy() { - CallerMapLocationListenerManager.removeListener("$M_MAP$TAG", false) CallerLogger.d("$M_MAP$TAG", "--------- onDestroy --------") + CallerMapLocationListenerManager.removeListener(TAG, false) + CallerAutopilotRecordListenerManager.removeListener(TAG) executor.get()?.setOnTaskListener(null) listeners.clear() map.clear() } + override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { + super.onAutopilotRecordResult(recordPanel) + CallerLogger.d("$M_MAP$TAG", "recordKey=${recordPanel.key},stat=${recordPanel.stat}") + if (!FunctionBuildConfig.isDemoMode && recordPanel.type == 2 && ( + recordPanel.stat == 101 || //工控机采集完成-被动完成 + recordPanel.stat == 100 || //工控机采集完成-主动完成 + recordPanel.stat == 102 || //工控机达到最大采集时长 + recordPanel.stat == 103) //工控机磁盘满了 + ) { + finish(recordPanel.id, recordPanel.stat, "", recordPanel.filename ?: "", recordPanel.note ?: "") + } + } + override fun registerOnMapCollectTaskListener(listener: IMoGoMapDataCollectProvider.OnMapCollectCmdListener?) { CallerLogger.d("$M_MAP$TAG", "--------- registerOnMapCollectTaskListener --------") listener ?: return diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt index 1f4090e56a..24fd2fe73e 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/HmiBuildConfig.kt @@ -7,18 +7,6 @@ package com.mogo.eagle.core.data.config */ object HmiBuildConfig { - /** - * 是否展示 自动驾驶 按钮 - */ - @JvmField - var isShowAutopilotStatusView = true - - /** - * 是否展示 切换视角 按钮 - */ - @JvmField - var isShowPerspectiveSwitchView = true - /** * 是否展示 转向灯ui */ @@ -43,12 +31,6 @@ object HmiBuildConfig { @JvmField var isShowTrafficLightView = false - /** - * 是否显示摄像头图标 - */ - @JvmField - var isShowCameraView = true - /** * 是否展示 sn绑定的弹框 */ diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt index 920e2203c0..6de86e6a02 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt @@ -454,9 +454,6 @@ enum class EventTypeEnumNew( ), //------------车内标牌 obu end --------------> - //------------车内标牌 end --------------> - - TYPE_SOCKET_ROAD_CONGESTION( "100071", "交通拥堵", diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewControlListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewControlListener.kt index 5e426155bc..4a1c67310f 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewControlListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewControlListener.kt @@ -10,6 +10,7 @@ interface IViewControlListener { const val PerspectiveSwitchView_TAG = "PerspectiveSwitchView_TAG" const val CameraView_TAG = "CameraView_TAG" const val ToolsView_TAG = "ToolsView_TAG" + const val TrafficLightView_TAG = "TrafficLightView_TAG" } /** --------- View --------- **/