diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java index 5233b3699e..06b227fd4f 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BaseBusTabFragment.java @@ -22,7 +22,6 @@ import androidx.constraintlayout.widget.Group; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; -import com.mogo.eagle.core.data.config.HmiBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; @@ -30,7 +29,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListener import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; -import com.mogo.eagle.core.function.hmi.ui.setting.SOPSettingView; import com.mogo.eagle.core.function.hmi.ui.widget.TrafficDataView; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener; @@ -189,9 +187,7 @@ public abstract class BaseBusTabFragment if (mBadcaseBtn != null) { CallerDevaToolsManager.INSTANCE.initBadCase(mBadcaseBtn); - if (!HmiBuildConfig.isShowBadCaseView) { - CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); - } + CallerAutopilotRecordListenerManager.INSTANCE.addListener(TAG, this); } mAICollectBtn = findViewById(R.id.module_mogo_och_ai_collet_rl); @@ -230,9 +226,7 @@ public abstract class BaseBusTabFragment @Override public void onDestroyView() { super.onDestroyView(); - if (!HmiBuildConfig.isShowBadCaseView) { - CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG); - } + CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG); EventBus.getDefault().unregister(this); } 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 f071115360..ac540cf7e9 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,14 +3,14 @@ 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.autopilot.CallerAutoPilotManager -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager 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.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView import com.mogo.och.bus.R import kotlinx.android.synthetic.main.fragment_hmi.* @@ -35,41 +35,35 @@ class OchNoopFragment : MvpFragment(), override fun initViews() { + + //设置StatusBar初始状态 + CallerHmiViewControlListenerManager.updateStatusBarRightView( + StatusBarView.TAG, + FunctionBuildConfig.isDemoMode, + "demoMode", + DemoModeView(requireContext()) + ) + ivCameraIcon?.setOnClickListener { - cameraLiveView.showCameraList(context, CallerFuncBizManager.bizProvider.getCameraList){ liveStatus -> - if(liveStatus){ + cameraLiveView.showCameraList( + context, + CallerFuncBizManager.bizProvider.getCameraList + ) { liveStatus -> + if (liveStatus) { ivCameraIcon.setBackgroundResource(R.drawable.icon_camera_selected) - }else{ + } else { ivCameraIcon.setBackgroundResource(R.drawable.icon_camera_nor) } } } - ivToolsIcon?.setOnClickListener { + ivToolsView?.setOnClickListener { toolsView.showToolsFloat(context) } - //美化模式隐藏开关 - viewDemoModeSwitch.setOnClickListener { - //只在司机端设置美化模式开关功能 - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - //单次查询,是否有行程信息(订单进行中时点击不生效),autopilotControlParameters为null代表不处于自动驾驶状态下 - if (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().autopilotControlParameters == null) { - FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode - context?.let { - CallerHmiManager.updateStatusBarLeftView( - FunctionBuildConfig.isDemoMode, - "demoMode", - DemoModeView(it) - ) - } - CallerAutoPilotManager.setDemoMode(FunctionBuildConfig.isDemoMode) - if (!FunctionBuildConfig.isDemoMode) { - //关闭美化模式时,通知工控机 - CallerAutoPilotManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode) - } - } - } + viewShowDebugView.setOnLongClickListener { + ToggleDebugView.toggleDebugView.toggle(requireContext()) + true } cbMsgBoxDriver.setOnCheckedChangeListener { _, isChecked -> @@ -99,16 +93,6 @@ class OchNoopFragment : MvpFragment(), } } - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - cbMsgBoxDriver.visibility = View.VISIBLE - viewDriverMsgBoxBubble.visibility = View.VISIBLE - } - if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) && - AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) - ) { - cbMsgBoxPassenger.visibility = View.VISIBLE - viewPassengerMsgBoxBubble.visibility = View.VISIBLE - } } 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 ffdf7313df..2638954937 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 @@ -39,14 +39,15 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + - @@ -101,7 +101,8 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" /> - + - @@ -134,7 +132,7 @@ android:layout_marginBottom="40dp" android:src="@drawable/bad_case_selector" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/ivToolsIcon" /> + app:layout_constraintStart_toEndOf="@id/ivToolsView" /> @@ -187,7 +185,7 @@ android:layout_marginEnd="25dp" android:background="@drawable/selector_msg_box" android:button="@null" - android:visibility="gone" + android:visibility="visible" app:layout_constraintRight_toLeftOf="@id/viewLimitingVelocity" app:layout_constraintTop_toBottomOf="@+id/ivCameraIcon" /> @@ -244,7 +242,7 @@ android:layout_width="864px" android:layout_height="wrap_content" android:layout_marginEnd="40dp" - android:visibility="gone" + android:visibility="visible" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/cbMsgBoxDriver" /> @@ -288,6 +286,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + { -// if (tapPositionView != null) { -// tapPositionView.updateWithGear(gear); -// } -// }); -// } - - @Override - public void onAutopilotDataException(long timestamp) { + /** + * 车辆转向灯 + * @param lightSwitch + */ + @Override + public void onAutopilotLightSwitchData(@org.jetbrains.annotations.Nullable Chassis.LightSwitch lightSwitch) { + //转向灯状态 0是正常 1是左转 2是右转 + if (lightSwitch != null) { + CallerLogger.INSTANCE.d(TAG, "车辆转向灯:" + lightSwitch.toString()); + if (lightSwitch.getNumber()==1){ + sweeperTurnSignal.showLeftSignal(); + }else if(lightSwitch.getNumber()==2){ + sweeperTurnSignal.showRightSignal(); + }else{ + sweeperTurnSignal.showDirection(); + } } + } -// @Override -// public void onAutopilotAcc(float carAcc) { -// -// } -// -// @Override -// public void onAutopilotBrake(float brake) { -// CallerLogger.INSTANCE.d(TAG, "刹车:" + brake); -// } -// -// @Override -// public void onAutopilotThrottle(float throttle) { -// CallerLogger.INSTANCE.d(TAG, "油门:" + throttle); -// } + /** + * 刹车灯 + * @param brakeLight + */ + @Override + public void onAutopilotBrakeLightData(boolean brakeLight) { + CallerLogger.INSTANCE.d(TAG, "刹车灯:" + brakeLight); + } + + /** + * 方向盘转向角 左+右- + * @param steering + */ + @Override + public void onAutopilotSteeringData(float steering) { + CallerLogger.INSTANCE.d(TAG, "steering原始值====" + steering); + if (Math.abs(steering) < 1) { + steering = 0; + } + CallerLogger.INSTANCE.d(TAG, "steering忽略小数点后====" + (int) steering); + } + + /** + * 档位 + * @param gear + */ + @Override + public void onAutopilotGearData(@NotNull Chassis.GearPosition gear) { + CallerLogger.INSTANCE.d(TAG, "司机屏档位" + gear.toString()); + ThreadUtils.runOnUiThread(() -> { + if (tapPositionView != null) { + tapPositionView.updateWithGear(gear); + } + }); + } - }; /** * 限速监听 */ @@ -158,7 +151,7 @@ public class SweeperTrafficDataView extends ConstraintLayout { @Override public void onLimitingVelocityChange(int limitingVelocity) { //设置限速 - sweeperLimitingVelocity.updateLimitingSpeed(limitingVelocity, 0); //此处小兵合并下 + sweeperLimitingVelocity.updateLimitingSpeed(limitingVelocity, 0); } }; /** @@ -172,4 +165,5 @@ public class SweeperTrafficDataView extends ConstraintLayout { speedImage.setBackgroundResource(newSpeed > 60 ? R.drawable.sweeper_traffic_data_speed_warning :R.drawable.sweeper_bg_traffic_data_speed); } } + } 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 ea122b5a6f..1400bb2866 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 @@ -49,7 +49,7 @@ import java.lang.ref.WeakReference; * @author tongchenfei */ public class TaxiPassengerBaseFragment extends MvpFragment - implements IMogoMapListener, TaxiPassengerTaxiView, ITPClickStartAutopilotCallback, IMoGoHmiViewProxy.IViewNotificationProvider { + implements IMogoMapListener, TaxiPassengerTaxiView, ITPClickStartAutopilotCallback{ static final String TAG = "TaxiPassengerBaseFragment"; @@ -91,8 +91,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment() { if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) || AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) { //控制HMI展示元素 将不用手动调用setXXXXXViewVisibility - HmiBuildConfig.isShowSpeedView = false HmiBuildConfig.isShowAutopilotStatusView = false HmiBuildConfig.isShowPerspectiveSwitchView = false - HmiBuildConfig.isShowToolsView = false - HmiBuildConfig.isShowBadCaseView = false - HmiBuildConfig.isShowUpgradeTipsView = false } if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) { 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 1553ac9c9b..bf4df25490 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 @@ -35,18 +35,21 @@ import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData import com.mogo.eagle.core.data.report.ReportEntity import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotRecordListener import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy -import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy.IViewNotificationProvider +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.AutoPilotStatusView_TAG +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.CameraView_TAG +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.IViewLimitingVelocity -import com.mogo.eagle.core.function.api.hmi.view.IViewNotification import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight import com.mogo.eagle.core.function.api.hmi.warning.IMoGoHmiProvider import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager @@ -66,9 +69,7 @@ import com.mogo.eagle.core.function.hmi.ui.setting.IPCReportWindow import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView.Companion.toggleDebugView import com.mogo.eagle.core.function.hmi.ui.setting.ToolsView.Companion.toolsView import com.mogo.eagle.core.function.hmi.ui.tools.AdUpgradeDialog -import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView -import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView -import com.mogo.eagle.core.function.hmi.ui.widget.V2XNotificationView +import com.mogo.eagle.core.function.hmi.ui.widget.* import com.mogo.eagle.core.function.main.DisplayEffectsHelper import com.mogo.eagle.core.utilcode.kotlin.safeCancel import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -102,26 +103,19 @@ class MoGoHmiFragment : MvpFragment(), IMoGoHmiProvider, IMoGoHmiViewProxy, MoGoHmiContract.View, - IMoGoAutopilotRecordListener, - IViewNotificationProvider { + IMoGoAutopilotRecordListener { companion object { private const val TAG = "MoGoHmiFragment" } - //StatusView - private var statusBarView: StatusBarView? = null - // HMI 视图控件代理 - // 红绿灯 View代理 + // todo 需要统一数据源 红绿灯 View代理 private var mViewTrafficLight: IViewTrafficLight? = null - // 限速 View代理 + // todo 需要统一数据源 限速 View代理 private var mViewLimitingVelocity: IViewLimitingVelocity? = null - // V2X预警弹窗 View 代理 - private var mViewNotificationProvider: IViewNotificationProvider? = null - private var lastSpeakJob: Job? = null private var lastShowV2XJob: Job? = null @@ -130,18 +124,9 @@ class MoGoHmiFragment : MvpFragment(), override fun initViews() { initViewShowWithConfig() - // 同步AppInfo Config信息 - CallerDevaToolsManager.syncConfig() //todo arrow 页面初始化 放到合适位置 - //todo 抽象fragment能力 放入baseHmi - val decorView = requireActivity().window.decorView as FrameLayout - statusBarView = decorView.findViewWithTag("status_bar") as StatusBarView? //设置StatusBar初始状态 - if (FunctionBuildConfig.isDemoMode) { - statusBarView?.updateRightView(true, "demoMode", DemoModeView(requireContext())) - } else { - statusBarView?.updateRightView(false, "demoMode", DemoModeView(requireContext())) - } + CallerHmiViewControlListenerManager.updateStatusBarRightView(StatusBarView.TAG,FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(requireContext())) ivCameraIcon?.setOnClickListener { cameraLiveView.showCameraList( @@ -156,38 +141,12 @@ class MoGoHmiFragment : MvpFragment(), } } - ivToolsIcon?.setOnClickListener { - toolsView.showToolsFloat(requireContext()) - } - viewShowDebugView.setOnLongClickListener { toggleDebugView.toggle(requireContext()) true } - //美化模式隐藏开关 - viewDemoModeSwitch.setOnClickListener { - //只在司机端设置美化模式开关功能 - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - //单次查询,是否有行程信息(订单进行中时点击不生效),autopilotControlParameters为null代表不处于自动驾驶状态下 - if (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().autopilotControlParameters == null) { - FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode - context?.let { - CallerHmiManager.updateStatusBarLeftView( - FunctionBuildConfig.isDemoMode, - "demoMode", - DemoModeView(it) - ) - } - CallerAutoPilotManager.setDemoMode(FunctionBuildConfig.isDemoMode) - if (!FunctionBuildConfig.isDemoMode) { - //关闭美化模式时,通知工控机 - CallerAutoPilotManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode) - } - } - } - } - + //todo 新超,封装至消息盒子 cbMsgBoxDriver.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { viewDriverMsgBoxList.visibility = View.VISIBLE @@ -202,6 +161,7 @@ class MoGoHmiFragment : MvpFragment(), } } + //todo 新超,封装至消息盒子 cbMsgBoxPassenger.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { viewPassengerMsgBoxList.visibility = View.VISIBLE @@ -215,6 +175,7 @@ class MoGoHmiFragment : MvpFragment(), } } + //todo 加载端自己控制 --- 新超 本期我们设置到bus,taxi,sweep Fragment if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { cbMsgBoxDriver.visibility = View.VISIBLE viewDriverMsgBoxBubble.visibility = View.VISIBLE @@ -227,6 +188,24 @@ class MoGoHmiFragment : MvpFragment(), } } + // todo 新超 + override fun updateDriverMsgBoxTipView(show: Boolean) { + if (show) { + MsgBoxTipView.visibility = View.VISIBLE + } else { + MsgBoxTipView.visibility = View.GONE + } + } + + // todo 新超 + override fun updatePassengerMsgBoxTipView(show: Boolean) { + if (show) { + MsgBoxPTipView.visibility = View.VISIBLE + } else { + MsgBoxPTipView.visibility = View.GONE + } + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) CallerAutopilotRecordListenerManager.addListener(TAG, this) @@ -234,15 +213,62 @@ class MoGoHmiFragment : MvpFragment(), // 首次初始化使用默认视图 setProxyTrafficLightView(viewTrafficLightVr) setProxyLimitingSpeedView(viewLimitingVelocity) - setViewNotificationProvider(this) } - override fun getNotificationView(): IViewNotification? = - context?.let { V2XNotificationView(it) } - override fun onAutopilotRecordResult(recordPanel: RecordPanelOuterClass.RecordPanel) { //todo 数据中心 + /** todo ----------------------------------------------**/ + /** + * 设置 红绿灯 代理View + */ + override fun setProxyTrafficLightView(view: IViewTrafficLight) { + mViewTrafficLight = view + } + + /** + * 设置 限速 代理View + */ + override fun setProxyLimitingSpeedView(view: IViewLimitingVelocity) { + 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)) { + if (BadCaseConfig.recordKeyList.contains(recordPanel.key)) { //todo InitiativeBadCaseWindow if (recordPanel.stat == 100 || recordPanel.stat == 101) { //成功结束录制 TipToast.shortTip( @@ -279,7 +305,7 @@ class MoGoHmiFragment : MvpFragment(), //处于非美化模式下弹窗;是地图数据采集任务时即type=2时,不弹窗 if (!FunctionBuildConfig.isDemoMode && (recordPanel.stat == 100 || recordPanel.stat == 101) && recordPanel.type != 2) { //只在司机屏生效,乘客屏不生效 - if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { //todo 数据中心控制来源 CallerMsgBoxManager.saveMsgBox( MsgBoxBean( MsgBoxType.RECORD, RecordBagMsg( @@ -290,7 +316,7 @@ class MoGoHmiFragment : MvpFragment(), ) } } - if (!FunctionBuildConfig.isDemoMode && recordPanel.type == 2 && ( + if (!FunctionBuildConfig.isDemoMode && recordPanel.type == 2 && ( //todo CallerMapDataCollectorManager recordPanel.stat == 101 || //工控机采集完成-被动完成 recordPanel.stat == 100 || //工控机采集完成-主动完成 recordPanel.stat == 102 || //工控机达到最大采集时长 @@ -310,7 +336,7 @@ class MoGoHmiFragment : MvpFragment(), /** * ok - * 工控机重启返回结果 todo 确认数据源 + * 工控机重启返回结果 * @param code * @param msg */ @@ -352,121 +378,26 @@ class MoGoHmiFragment : MvpFragment(), } } - /** todo----------------------------------------------- **/ - override fun setViewNotificationProvider(provider: IViewNotificationProvider) { - mViewNotificationProvider = provider - } - override fun setStatusBarDarkOrLight(light: Boolean) { - statusBarView?.setStatusBarDarkOrLight(light) + CallerHmiViewControlListenerManager.setStatusBarDarkOrLight(StatusBarView.TAG,light) } override fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { - statusBarView?.updateRightView(insert, tag, viewGroup) + CallerHmiViewControlListenerManager.updateStatusBarRightView(StatusBarView.TAG,insert, tag, viewGroup) } override fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) { - statusBarView?.updateLeftView(insert, tag, viewGroup) + CallerHmiViewControlListenerManager.updateStatusBarLeftView(StatusBarView.TAG,insert, tag, viewGroup) } override fun updateStatusBarDownloadView(insert: Boolean, tag: String, progress: Int) { - statusBarView?.updateProgressView(insert, tag, progress) + CallerHmiViewControlListenerManager.updateStatusBarDownloadView(StatusBarView.TAG,insert, tag, progress) } override fun updateMfStatus(tag: String, status: Boolean) { - statusBarView?.updateMfStatus(tag, status) + CallerHmiViewControlListenerManager.updateMfStatus(StatusBarView.TAG,tag, status) } - override fun updateDriverMsgBoxTipView(show: Boolean) { - if (show) { - MsgBoxTipView.visibility = View.VISIBLE - } else { - MsgBoxTipView.visibility = View.GONE - } - } - - override fun updatePassengerMsgBoxTipView(show: Boolean) { - if (show) { - MsgBoxPTipView.visibility = View.VISIBLE - } else { - MsgBoxPTipView.visibility = View.GONE - } - } - - /** - * 设置 红绿灯 代理View - */ - override fun setProxyTrafficLightView(view: IViewTrafficLight) { - mViewTrafficLight = view - } - - /** - * 设置 限速 代理View - */ - override fun setProxyLimitingSpeedView(view: IViewLimitingVelocity) { - mViewLimitingVelocity = view - } - - /** - * 根据配置文件初始化视图显示 - */ - private fun initViewShowWithConfig() { - // 控制 速度 展示 - if (HmiBuildConfig.isShowSpeedView) { - setSpeedChartViewVisibility(View.VISIBLE) - } else { - setSpeedChartViewVisibility(View.GONE) - } - - // 控制 自动驾驶状态 展示 - if (HmiBuildConfig.isShowAutopilotStatusView) { - setAutopilotStatusViewVisibility(View.VISIBLE) - } else { - setAutopilotStatusViewVisibility(View.GONE) - } - - // 控制 切换视角 展示 - if (HmiBuildConfig.isShowPerspectiveSwitchView) { - setPerspectiveSwitchViewVisibility(View.VISIBLE) - } else { - setPerspectiveSwitchViewVisibility(View.GONE) - } - - // 控制 切换视角 展示 - if (HmiBuildConfig.isShowToolsView) { - setToolsViewVisibility(View.VISIBLE) - } else { - setToolsViewVisibility(View.GONE) - } - - // 控制 BadCase 按钮展示 - if (HmiBuildConfig.isShowBadCaseView) { - ivBadCaseTools.visibility = View.VISIBLE - ivAiCollectTools.visibility = View.VISIBLE - CallerDevaToolsManager.initBadCase(ivBadCaseTools) //todo 新超 封装在hmi view - CallerDevaToolsManager.initAiCollect(ivAiCollectTools) //todo 新超 封装在hmi view - } else { - ivBadCaseTools.visibility = View.GONE - ivAiCollectTools.visibility = 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 getLayoutId(): Int { return R.layout.fragment_hmi } @@ -484,28 +415,28 @@ class MoGoHmiFragment : MvpFragment(), } /** todo----------------------------------------------- **/ - override fun setSpeedChartViewVisibility(visibility: Int) { - viewSpeedChart?.visibility = visibility - } - override fun setTrafficLightVrVisibility(visibility: Int) { mViewTrafficLight?.visibility = visibility } + override fun setToolsViewVisibility(visibility: Int) { + CallerHmiViewControlListenerManager.invokeVisible(ToolsView_TAG,visibility) + } + + override fun setSpeedChartViewVisibility(visibility: Int) { + CallerHmiViewControlListenerManager.invokeVisible(SpeedPanelView_TAG,visibility) + } + override fun setAutopilotStatusViewVisibility(visibility: Int) { - viewAutopilotStatus?.visibility = visibility + CallerHmiViewControlListenerManager.invokeVisible(AutoPilotStatusView_TAG,visibility) } override fun setPerspectiveSwitchViewVisibility(visibility: Int) { - viewPerspectiveSwitch?.visibility = visibility - } - - override fun setToolsViewVisibility(visibility: Int) { - ivToolsIcon?.visibility = visibility + CallerHmiViewControlListenerManager.invokeVisible(PerspectiveSwitchView_TAG,visibility) } override fun setCameraViewVisibility(visibility: Int) { - ivCameraIcon?.visibility = visibility + CallerHmiViewControlListenerManager.invokeVisible(CameraView_TAG, visibility) } /** todo----------------------------------------------- **/ @@ -1043,7 +974,6 @@ class MoGoHmiFragment : MvpFragment(), } } ?.commitAllowingStateLoss() -// context?.let { CallerDevaToolsManager.showStatusBar(it, statusBarContainer) } } override fun onDestroy() { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/switch/DemoModeHiddenSwitch.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/switch/DemoModeHiddenSwitch.kt new file mode 100644 index 0000000000..ff65be7e7a --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/switch/DemoModeHiddenSwitch.kt @@ -0,0 +1,39 @@ +package com.mogo.eagle.core.function.hmi.ui.switch + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils + +class DemoModeHiddenSwitch(context: Context?, attrs: AttributeSet?) : View(context, attrs) { + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + setOnClickListener { + //只在司机端设置美化模式开关功能 + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + //单次查询,是否有行程信息(订单进行中时点击不生效),autopilotControlParameters为null代表不处于自动驾驶状态下 + if (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().autopilotControlParameters == null) { + FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode + context?.let { + CallerHmiManager.updateStatusBarLeftView( + FunctionBuildConfig.isDemoMode, + "demoMode", + DemoModeView(it) + ) + } + CallerAutoPilotManager.setDemoMode(FunctionBuildConfig.isDemoMode) + if (!FunctionBuildConfig.isDemoMode) { + //关闭美化模式时,通知工控机 + CallerAutoPilotManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode) + } + } + } + } + } +} \ 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/tools/AutoPilotAndCheckView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt index 3de065ef78..77e12619af 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt @@ -37,7 +37,7 @@ import kotlin.system.exitProcess * @author ChenFufeng * 设置自动驾驶速度和检测页入口 */ -class AutoPilotAndCheckView @JvmOverloads constructor( +internal class AutoPilotAndCheckView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 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 new file mode 100644 index 0000000000..6d89368329 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/ToolsImageView.kt @@ -0,0 +1,31 @@ +package com.mogo.eagle.core.function.hmi.ui.tools + +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.ToolsView_TAG +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.hmi.R + +class ToolsImageView(context: Context, attrs: AttributeSet?) : + androidx.appcompat.widget.AppCompatImageView(context, attrs), IViewControlListener { + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + setBackgroundResource(R.drawable.module_ext_check) + setImageResource(R.drawable.icon_tools_nor) + scaleType = ScaleType.CENTER + + CallerHmiViewControlListenerManager.addListener(ToolsView_TAG, this) + } + + override fun visible(v: Int) { + super.visible(v) + visibility = v + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerHmiViewControlListenerManager.removeListener(ToolsView_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/widget/AutoPilotStatusView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt index 03546930cc..e6c453db80 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/AutoPilotStatusView.kt @@ -8,11 +8,14 @@ import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.AutoPilotStatusView_TAG import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lat import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getCurWgs84Lon import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI @@ -25,18 +28,21 @@ import kotlinx.android.synthetic.main.view_autopilot_status.view.* * @date 2021/9/22 3:59 下午 * 自动驾驶状态按钮 */ -class AutoPilotStatusView @JvmOverloads constructor( +class AutoPilotStatusView constructor( context: Context, attrs: AttributeSet ) : ConstraintLayout(context, attrs), View.OnClickListener, - IMoGoAutopilotStatusListener { + IMoGoAutopilotStatusListener, IViewControlListener { - private val TAG = "AutopilotStatusView" + companion object { + const val TAG = "AutopilotStatusView" + } private var mAutopilotStatus: Int = 0 - init { + override fun onAttachedToWindow() { + super.onAttachedToWindow() initView(context) } @@ -51,18 +57,22 @@ class AutoPilotStatusView @JvmOverloads constructor( setOnClickListener(this) // 自动驾驶状态监听 CallerAutoPilotStatusListenerManager.addListener(TAG, this) + CallerHmiViewControlListenerManager.addListener(AutoPilotStatusView_TAG, this) CallerLogger.d("$M_HMI$TAG", "autopilotStatus: $mAutopilotStatus") setAutoPilotStatus(mAutopilotStatus) } + override fun visible(v: Int) { + super.visible(v) + visibility = v + } + override fun onClick(v: View?) { when (mAutopilotStatus) { 0 -> {// 不可自动驾驶,adas与工控机没有链接,或工控机异常 CallerLogger.e("$M_HMI$TAG", "不可自动驾驶,adas与工控机没有链接,或工控机异常,请检查") ToastUtils.showShort("不可自动驾驶,adas与工控机没有链接,或工控机异常,请检查") - // TODO 这里临时触发自动驾驶能力,测试功过这里删除 - //CallerHmiListenerManager.invokeCheckAutoPilotBtnListener(true) } 1 -> {// 可自动驾驶,目前处于人工干预状态 CallerHmiListenerManager.invokeCheckAutoPilotBtnListener(true) @@ -85,7 +95,7 @@ class AutoPilotStatusView @JvmOverloads constructor( currentAutopilot.endName = "HYJC" currentAutopilot.isSpeakVoice = false currentAutopilot.startLatLon = - AutopilotControlParameters.AutoPilotLonLat(getCurWgs84Lat(),getCurWgs84Lon()) + AutopilotControlParameters.AutoPilotLonLat(getCurWgs84Lat(), getCurWgs84Lon()) currentAutopilot.endLatLon = AutopilotControlParameters.AutoPilotLonLat(26.819716071924688, 112.57715442110867) currentAutopilot.vehicleType = 10 @@ -126,4 +136,10 @@ class AutoPilotStatusView @JvmOverloads constructor( setAutoPilotStatus(autoPilotStatusInfo.state) } + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerAutoPilotStatusListenerManager.removeListener(TAG) + CallerHmiViewControlListenerManager.removeListener(AutoPilotStatusView_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/widget/CameraView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CameraView.kt new file mode 100644 index 0000000000..8e90c54e8c --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/CameraView.kt @@ -0,0 +1,28 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +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.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.hmi.R + +class CameraView(context: Context, attrs: AttributeSet?) : + androidx.appcompat.widget.AppCompatImageView(context, attrs), IViewControlListener { + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + setBackgroundResource(R.drawable.icon_camera_nor) + CallerHmiViewControlListenerManager.addListener(CameraView_TAG, this) + } + + override fun visible(v: Int) { + super.visible(v) + visibility = v + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerHmiViewControlListenerManager.removeListener(CameraView_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/widget/PerspectiveSwitchView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/PerspectiveSwitchView.kt index 020a0b32d0..55e04f82ec 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/PerspectiveSwitchView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/PerspectiveSwitchView.kt @@ -5,6 +5,9 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.view.View import android.widget.FrameLayout +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.PerspectiveSwitchView_TAG +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController import com.mogo.eagle.core.function.hmi.R import com.mogo.map.uicontroller.VisualAngleMode @@ -19,12 +22,20 @@ class PerspectiveSwitchView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : FrameLayout(context, attrs, defStyleAttr), View.OnClickListener { +) : FrameLayout(context, attrs, defStyleAttr), View.OnClickListener, IViewControlListener{ - init { + override fun onAttachedToWindow() { + super.onAttachedToWindow() LayoutInflater.from(context).inflate(R.layout.view_perspective_switch, this, true) setBackgroundResource(R.drawable.module_switch_map_bg) setOnClickListener(this) + + CallerHmiViewControlListenerManager.addListener(PerspectiveSwitchView_TAG,this) + } + + override fun visible(v: Int) { + super.visible(v) + visibility = v } override fun onClick(v: View?) { @@ -41,4 +52,10 @@ class PerspectiveSwitchView @JvmOverloads constructor( } } } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerHmiViewControlListenerManager.removeListener(PerspectiveSwitchView_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/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 8f10f9e037..3d5b7cac37 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 @@ -6,8 +6,11 @@ import android.util.AttributeSet import android.view.Gravity import android.widget.FrameLayout import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener.Companion.SpeedPanelView_TAG import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ20ListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.UiThreadHandler @@ -22,7 +25,7 @@ class SpeedPanelView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : FrameLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener { +) : FrameLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener,IViewControlListener { companion object { const val TAG = "SpeedPanelView" @@ -54,7 +57,10 @@ class SpeedPanelView @JvmOverloads constructor( private var timerTask: TimerTask? = null override fun onAttachedToWindow() { - super.onAttachedToWindow() // 注册位置回调 + super.onAttachedToWindow() + // 注册view控制显示隐藏监听 + CallerHmiViewControlListenerManager.addListener(SpeedPanelView_TAG,this) + // 注册位置回调 CallerChassisLocationGCJ20ListenerManager.addListener(TAG, this) // 开启定时查询速度 timerTask?.cancel() @@ -83,9 +89,15 @@ class SpeedPanelView @JvmOverloads constructor( } } + override fun visible(v: Int) { + super.visible(v) + visibility = v + } + override fun onDetachedFromWindow() { super.onDetachedFromWindow() // 解除注册 + CallerHmiViewControlListenerManager.removeListener(SpeedPanelView_TAG) CallerChassisLocationGCJ20ListenerManager.removeListener(TAG) try { timerTask?.cancel() diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt index ae89a8489b..42079aa30b 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/StatusBarView.kt @@ -1,18 +1,19 @@ package com.mogo.eagle.core.function.hmi.ui.widget +import android.annotation.SuppressLint import android.content.Context import android.util.AttributeSet -import android.util.Log -import android.view.* -import android.widget.* +import android.view.LayoutInflater +import android.view.ViewGroup +import android.widget.LinearLayout import com.mogo.eagle.core.data.mofang.MfConstants +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener -import com.mogo.eagle.core.function.call.devatools.* +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.setting.CallerSkinModeListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr -import com.mogo.eagle.core.utilcode.util.BarUtils -import com.mogo.eagle.core.utilcode.util.ScreenUtils import kotlinx.android.synthetic.main.view_status_bar.view.* import java.util.concurrent.CopyOnWriteArrayList @@ -20,7 +21,7 @@ class StatusBarView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : LinearLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener { +) : LinearLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener, IViewControlListener { companion object { const val TAG = "StatusBarView" @@ -37,17 +38,19 @@ class StatusBarView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() viewStatusBarRight.addView(BatteryGroupView(this.context)) - - //将状态窗口中的状态移到状态栏上 - CallerDevaToolsManager.showStatusBar(context, status_container) - - // 添加换肤监听 - CallerSkinModeListenerManager.addListener(TAG, this) - - var isBluetoothConnect = SharedPrefsMgr.getInstance(context).getBoolean(MfConstants.BLUETOOTH_STATUS, false) + val isBluetoothConnect = + SharedPrefsMgr.getInstance(context).getBoolean(MfConstants.BLUETOOTH_STATUS, false) if (isBluetoothConnect) { updateMfStatus("MoFangManager", true) } + + //添加view控制 + CallerHmiViewControlListenerManager.addListener(TAG,this) + // 添加换肤监听 + CallerSkinModeListenerManager.addListener(TAG, this) + //将状态窗口中的状态移到状态栏上 + CallerDevaToolsManager.showStatusBar(context, status_container) + } override fun onSkinModeChange(skinMode: Int) { @@ -57,15 +60,13 @@ class StatusBarView @JvmOverloads constructor( } } - fun setStatusBarDarkOrLight(light: Boolean) { - if (light) { - setTextColor(resources.getColor(R.color.color_2C2E30)) - } else { - setTextColor(resources.getColor(R.color.color_FFFFFF)) - } + override fun setStatusBarDarkOrLight(light: Boolean) = if (light) { + setTextColor(resources.getColor(R.color.color_2C2E30)) + } else { + setTextColor(resources.getColor(R.color.color_FFFFFF)) } - fun updateRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + override fun updateStatusBarRightView(insert: Boolean, tag: String, viewGroup: ViewGroup) { if (insert) { rightViewList.add(0, tag) viewStatusBarRight.addView(viewGroup, 0) @@ -79,7 +80,7 @@ class StatusBarView @JvmOverloads constructor( } } - fun updateLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) { + override fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) { if (insert) { leftViewList.add(0, tag) viewStatusBarLeft.addView(viewGroup, 0) @@ -93,7 +94,8 @@ class StatusBarView @JvmOverloads constructor( } } - fun updateProgressView(insert: Boolean, tag: String, progress: Int) { + @SuppressLint("SetTextI18n") + override fun updateStatusBarDownloadView(insert: Boolean, tag: String, progress: Int) { if (insert) { viewProgressTv.visibility = VISIBLE viewProgressTv.text = "$progress%" @@ -102,7 +104,7 @@ class StatusBarView @JvmOverloads constructor( } } - fun updateMfStatus(tag: String, status: Boolean) { + override fun updateMfStatus(tag: String, status: Boolean) { if (status) { viewMofangStatus.setImageResource(R.drawable.icon_bluetooth_p) } else { @@ -117,6 +119,7 @@ class StatusBarView @JvmOverloads constructor( override fun onDetachedFromWindow() { super.onDetachedFromWindow() + CallerHmiViewControlListenerManager.removeListener(TAG) CallerSkinModeListenerManager.removeListener(TAG) CallerDevaToolsManager.hideStatusBar() } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java index a2356977c8..236a908598 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.java @@ -39,6 +39,7 @@ import com.mogo.eagle.core.data.config.HdMapBuildConfig; import com.mogo.eagle.core.data.constants.MoGoFragmentPaths; 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.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; import com.mogo.eagle.core.function.hmi.R; import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView; @@ -137,7 +138,7 @@ public class MainActivity extends MvpActivity implement View statusBarView = decorView.findViewWithTag("status_bar"); if (statusBarView == null) { - statusBarView = new StatusBarView(this); + statusBarView = getStatusBarView(); statusBarView.setTag("status_bar"); } FrameLayout.LayoutParams statusBarLP = @@ -147,6 +148,14 @@ public class MainActivity extends MvpActivity implement decorView.addView(statusBarView, statusBarLP); } + /** + * 修改statusBar 重写实现,需要继承 StatusBarView,xml中基础系统控件不要修改其id,拿来即用 + * @return StatusBarView + */ + protected StatusBarView getStatusBarView(){ + return new StatusBarView(this); + } + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -163,6 +172,9 @@ public class MainActivity extends MvpActivity implement DisplayEffectsHelper.getInstance().init(clSpecialEffect); mPresenter.checkPermission(this); + + // 同步AppInfo Config信息 + CallerDevaToolsManager.INSTANCE.syncConfig(); } private void calculateStartTime() { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java index 1424238667..075c51f3b5 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java @@ -213,13 +213,13 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_V2X_OBU_MOGO, "IMoGoObuProvider")); // BIZ MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_FUNC_BIZ, "IMoGoNoticeProvider")); - // 车聊聊,IM + // todo 后置 车聊聊,IM MogoModulePaths.addModuleFunctionServer(new MogoModule(ChatConsts.CHAT_PROVIDER_PATH, ChatConsts.CHAT_MODULE_NAME)); // V2X 模块 MogoModulePaths.addBaseModule(new MogoModule(MogoServicePaths.PATH_V2X_MODULE, "V2XProvider")); - // 司机身份专属模块 + // 司机身份专属 if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { - // 地图数据收集模块 + // todo 后置 地图数据收集模块 MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_MAP_DATA_COLLECT_PROVIDER, "MoGoMapDataCollector")); } CallerLogger.INSTANCE.i(M_HMI + TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms"); 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 652f98f0f9..4755ef046f 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 @@ -28,26 +28,15 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="72dp"> - - + - - - - - - - - - + - - - - @@ -102,7 +79,8 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" /> - + - - - - - - - - - - @@ -260,7 +190,7 @@ android:layout_width="864px" android:layout_height="wrap_content" android:layout_marginEnd="40dp" - android:visibility="gone" + android:visibility="visible" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/cbMsgBoxDriver" /> @@ -304,6 +234,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + () { + + /** + * 触发 view 显示隐藏 + * @param v 显示/隐藏状态 + */ + fun invokeVisible(tag: String, v: Int) { + M_LISTENERS[tag]?.visible(v) + } + + fun setStatusBarDarkOrLight(tag: String, light: Boolean) { + M_LISTENERS[tag]?.setStatusBarDarkOrLight(light) + } + + fun updateStatusBarRightView( + tag: String, + insert: Boolean, + viewTag: String, + viewGroup: ViewGroup + ) { + M_LISTENERS[tag]?.updateStatusBarRightView(insert, tag, viewGroup) + } + + fun updateStatusBarLeftView( + tag: String, + insert: Boolean, + viewTag: String, + viewGroup: ViewGroup + ) { + M_LISTENERS[tag]?.updateStatusBarLeftView(insert, tag, viewGroup) + } + + fun updateStatusBarDownloadView(tag: String, insert: Boolean, viewTag: String, progress: Int) { + M_LISTENERS[tag]?.updateStatusBarDownloadView(insert, tag, progress) + } + + fun updateMfStatus(tag: String, viewTag: String, status: Boolean) { + M_LISTENERS[tag]?.updateMfStatus(viewTag, status) + } + +} \ No newline at end of file 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 7268dcf889..36ffa13fce 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 @@ -20,8 +20,8 @@ public class HostConst { public static final String CMDB_HOST = "http://eagle-mis.zhidaozhixing.com/eagleEye-mis/cmdbapi/"; - public static final String HOST_DEV = "https://eagle-qa.zhidaozhixing.com"; - public static final String HOST_RELEASE = "https://eagle-mis.zhidaozhixing.com"; + public static final String HOST_DEV = "http://eagle-qa.zhidaozhixing.com"; + public static final String HOST_RELEASE = "http://eagle-mis.zhidaozhixing.com"; public static final String HOST_EAGLE_QA = "http://eagle-dns-qa.zhidaozhixing.com/";