From a206a241b0ab5791f85417ef1c33bacc75e8d6a4 Mon Sep 17 00:00:00 2001 From: donghongyu Date: Wed, 16 Mar 2022 11:28:48 +0800 Subject: [PATCH] =?UTF-8?q?[Change]=20=E5=A2=9E=E5=8A=A0CallerHmiManager.I?= =?UTF-8?q?NSTANCE.setLimitingSpeedView(view)=E8=AE=BE=E7=BD=AEHMI?= =?UTF-8?q?=E4=B8=AD=E9=80=9F=E5=BA=A6=E7=9A=84=E4=BB=A3=E7=90=86View?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: donghongyu --- .../core/function/hmi/ui/MoGoHmiFragment.kt | 54 +++++++++++-------- .../hmi/ui/widget/LimitingVelocityView.kt | 27 ++++++++++ .../src/main/res/layout/fragment_hmi.xml | 6 +-- .../res/layout/view_limiting_speed_vr.xml | 22 ++++++++ .../function/main/MainMoGoApplication.java | 40 ++++++-------- .../function/api/hmi/IMoGoHmiViewProxy.kt | 23 ++++++++ .../api/hmi/view/IViewLimitingVelocity.kt | 18 +++++++ .../api/hmi/warning/IMoGoWaringProvider.kt | 8 +-- .../function/call/hmi/CallerHmiManager.kt | 12 ++++- 9 files changed, 153 insertions(+), 57 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_limiting_speed_vr.xml create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/IMoGoHmiViewProxy.kt create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewLimitingVelocity.kt 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 42819b6d13..1b62396d61 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 @@ -15,18 +15,18 @@ import com.mogo.eagle.core.data.autopilot.AdUpgradeStateHelper import com.mogo.eagle.core.data.camera.CameraEntity import com.mogo.eagle.core.data.config.HmiBuildConfig import com.mogo.eagle.core.data.constants.MoGoFragmentPaths -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.notice.NoticeNormalData import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotIdentifyListener +import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy +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.IMoGoWaringProvider import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager import com.mogo.eagle.core.function.call.check.CallerCheckManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager import com.mogo.eagle.core.function.call.monitor.CallerMonitorManager import com.mogo.eagle.core.function.hmi.R @@ -40,6 +40,8 @@ import com.mogo.eagle.core.function.hmi.ui.notice.NoticeNormalBannerView import com.mogo.eagle.core.function.hmi.ui.setting.DebugSettingView import com.mogo.eagle.core.function.hmi.ui.tools.AutoPilotAndCheckView import com.mogo.eagle.core.function.hmi.ui.widget.V2XNotificationView +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.Utils @@ -56,8 +58,10 @@ import java.util.* */ @Route(path = MoGoFragmentPaths.PATH_FRAGMENT_HMI) class MoGoHmiFragment : MvpFragment(), - IMoGoWaringProvider, - MoGoWarningContract.View, IMoGoAutopilotIdentifyListener { + IMoGoWaringProvider, + IMoGoHmiViewProxy, + MoGoWarningContract.View, + IMoGoAutopilotIdentifyListener { private val TAG = "MoGoHmiFragment" // DebugSettingView @@ -83,8 +87,10 @@ class MoGoHmiFragment : MvpFragment private var upgradeTipsView: (() -> View)? = null // HMI 视图控件代理 - // 红绿灯View代理 - private var mViewTrafficLightVr: IViewTrafficLight? = null + // 红绿灯 View代理 + private var mViewTrafficLight: IViewTrafficLight? = null + // 限速 View代理 + private var mViewLimitingVelocity: IViewLimitingVelocity? = null override fun vipIdentification(visible: Boolean) { @@ -132,7 +138,9 @@ class MoGoHmiFragment : MvpFragment activity?.let { CarcorderPreviewView.show(it) } }, 1000)*/ + // 首次初始化使用默认视图 setProxyTrafficLightView(viewTrafficLightVr) + setLimitingSpeedView(viewLimitingVelocity) } @OptIn(ExperimentalCoroutinesApi::class) @@ -181,7 +189,11 @@ class MoGoHmiFragment : MvpFragment } override fun setProxyTrafficLightView(view: IViewTrafficLight) { - mViewTrafficLightVr = view + mViewTrafficLight = view + } + + override fun setLimitingSpeedView(view: IViewLimitingVelocity) { + mViewLimitingVelocity = view } private fun showToolsFloat() { @@ -315,7 +327,7 @@ class MoGoHmiFragment : MvpFragment } override fun setTrafficLightVrVisibility(visibility: Int) { - mViewTrafficLightVr?.visibility = visibility + mViewTrafficLight?.visibility = visibility } override fun setAutopilotStatusViewVisibility(visibility: Int) { @@ -483,30 +495,30 @@ class MoGoHmiFragment : MvpFragment * @param checkLightId 0-都是默认不亮起,1-红,2-黄,3-绿 */ override fun showWarningTrafficLight(checkLightId: Int) { - mViewTrafficLightVr?.showWarningTrafficLight(checkLightId) + mViewTrafficLight?.showWarningTrafficLight(checkLightId) } override fun isWarningTrafficLightShow(): Boolean { - return mViewTrafficLightVr?.visibility == View.VISIBLE + return mViewTrafficLight?.visibility == View.VISIBLE } /** * 关闭红绿灯预警展示,并重制灯态 */ override fun disableWarningTrafficLight() { - mViewTrafficLightVr?.disableWarningTrafficLight() + mViewTrafficLight?.disableWarningTrafficLight() } override fun changeCountdownRed(redNum: Int) { - mViewTrafficLightVr?.changeCountdownRed(redNum) + mViewTrafficLight?.changeCountdownRed(redNum) } override fun changeCountdownYellow(yellowNum: Int) { - mViewTrafficLightVr?.changeCountdownYellow(yellowNum) + mViewTrafficLight?.changeCountdownYellow(yellowNum) } override fun changeCountdownGreen(greenNum: Int) { - mViewTrafficLightVr?.changeCountdownGreen(greenNum) + mViewTrafficLight?.changeCountdownGreen(greenNum) } /** @@ -515,7 +527,7 @@ class MoGoHmiFragment : MvpFragment * @param greenNum 绿灯倒计时 */ override fun changeCountdownTrafficLightNum(readNum: Int, yellowNum: Int, greenNum: Int) { - mViewTrafficLightVr?.changeCountdownTrafficLightNum(readNum, yellowNum, greenNum) + mViewTrafficLight?.changeCountdownTrafficLightNum(readNum, yellowNum, greenNum) } /** @@ -523,11 +535,11 @@ class MoGoHmiFragment : MvpFragment */ override fun showLimitingVelocity(limitingSpeed: Int) { if (limitingSpeed > 0) { - tvLimitingVelocity?.visibility = View.VISIBLE - tvLimitingVelocity?.text = "$limitingSpeed" + mViewLimitingVelocity?.visibility = View.VISIBLE + mViewLimitingVelocity?.updateLimitingSpeed(limitingSpeed) } else { - tvLimitingVelocity?.visibility = View.INVISIBLE - tvLimitingVelocity?.text = "0" + mViewLimitingVelocity?.visibility = View.INVISIBLE + mViewLimitingVelocity?.updateLimitingSpeed(0) } } @@ -535,8 +547,8 @@ class MoGoHmiFragment : MvpFragment * 控制关闭限速标志及内容 */ override fun disableLimitingVelocity() { - tvLimitingVelocity?.visibility = View.GONE - tvLimitingVelocity?.text = "0" + mViewLimitingVelocity?.visibility = View.GONE + mViewLimitingVelocity?.updateLimitingSpeed(0) } /** diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt new file mode 100644 index 0000000000..b1c509d6f2 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/LimitingVelocityView.kt @@ -0,0 +1,27 @@ +package com.mogo.eagle.core.function.hmi.ui.widget + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import com.mogo.eagle.core.function.api.hmi.view.IViewLimitingVelocity +import com.mogo.eagle.core.function.hmi.R +import kotlinx.android.synthetic.main.view_limiting_speed_vr.view.* + +/** + * 限速控件 + */ +class LimitingVelocityView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : IViewLimitingVelocity(context, attrs, defStyleAttr) { + + init { + LayoutInflater.from(context).inflate(R.layout.view_limiting_speed_vr, this, true) + } + + override fun updateLimitingSpeed(limitingSpeed: Int) { + super.updateLimitingSpeed(limitingSpeed) + tvLimitingVelocity.text = "$limitingSpeed" + } +} \ No newline at end of file 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 436fb26470..33fb48ffc0 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 @@ -63,7 +63,7 @@ android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" - tools:visibility="gone" /> + tools:visibility="visible" /> @@ -135,8 +135,8 @@ app:layout_constraintTop_toTopOf="parent" tools:visibility="visible" /> - + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-main/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java b/core/function-impl/mogo-core-function-main/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java index 7b3f6d6a64..af127c1e6b 100644 --- a/core/function-impl/mogo-core-function-main/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java +++ b/core/function-impl/mogo-core-function-main/src/main/java/com/mogo/eagle/core/function/main/MainMoGoApplication.java @@ -21,9 +21,10 @@ import com.mogo.eagle.core.data.constants.MoGoConfig; import com.mogo.eagle.core.data.constants.MogoServicePaths; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.api.chat.biz.ChatConsts; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.function.notice.PushUIConstants; +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils; +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.ProcessUtils; import com.mogo.map.MapApiPath; @@ -214,7 +215,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { e.printStackTrace(); httpDnsSimpleLocation = new HttpDnsSimpleLocation("010", 1, 1); } - CallerLogger.INSTANCE.d(M_MAIN+TAG, "使用缓存GPS信息:" + httpDnsSimpleLocation); + CallerLogger.INSTANCE.d(M_MAIN + TAG, "使用缓存GPS信息:" + httpDnsSimpleLocation); } return httpDnsSimpleLocation; }); @@ -224,7 +225,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { new IMoGoTokenCallback() { @Override public void onTokenGot(String token, String sn) { - CallerLogger.INSTANCE.d(M_MAIN+TAG, "onTokenGot "); + CallerLogger.INSTANCE.d(M_MAIN + TAG, "onTokenGot "); // 异步初始化NetConfig asyncInit(); // HttpDns ttl回调 --- socketTTL @@ -235,7 +236,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { @Override public void onError(int code, String msg) { - CallerLogger.INSTANCE.d(M_MAIN+TAG, "初始化MogoAiCloudSdk failed ,reason : " + msg + " , 未能开启长链服务和初始化Modules服务"); + CallerLogger.INSTANCE.d(M_MAIN + TAG, "初始化MogoAiCloudSdk failed ,reason : " + msg + " , 未能开启长链服务和初始化Modules服务"); } } ); @@ -263,26 +264,26 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { } private void startSocketService() { - CallerLogger.INSTANCE.d(M_MAIN+TAG, "startSocketService"); + CallerLogger.INSTANCE.d(M_MAIN + TAG, "startSocketService"); IMogoServiceApis apis = MogoApisHandler.getInstance().getApis(); // 关闭长链服务 apis.getSocketManagerApi(getApplicationContext()).destroy(); apis.getSocketManagerApi(this).registerLifecycleListener(10020, new IMogoLifecycleListener() { @Override public void onConnectFailure() { - CallerLogger.INSTANCE.d(M_MAIN+TAG, "socket-onConnectFailure"); + CallerLogger.INSTANCE.d(M_MAIN + TAG, "socket-onConnectFailure"); DebugConfig.setDownloadSnapshot(false); } @Override public void onConnectSuccess() { - CallerLogger.INSTANCE.d(M_MAIN+TAG, "socket-onConnectSuccess"); + CallerLogger.INSTANCE.d(M_MAIN + TAG, "socket-onConnectSuccess"); DebugConfig.setDownloadSnapshot(true); } @Override public void onConnectLost() { - CallerLogger.INSTANCE.d(M_MAIN+TAG, "socket-onConnectLost"); + CallerLogger.INSTANCE.d(M_MAIN + TAG, "socket-onConnectLost"); DebugConfig.setDownloadSnapshot(false); } }); @@ -297,7 +298,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { } private void initModules() { - CallerLogger.INSTANCE.d(M_MAIN+TAG, "initModules"); + CallerLogger.INSTANCE.d(M_MAIN + TAG, "initModules"); //mogo deva tools MogoModulePaths.addModule(new MogoModule(MogoServicePaths.PATH_DEVA_TOOLS, "IMoGoDevaToolsProvider")); // 初始化 bugly 升级 @@ -328,21 +329,10 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { // 推送模块 MogoModulePaths.addModule(new MogoModule(PushUIConstants.PATH, "PUSH_UI")); - - /* - * 不同身份加载的特殊模块 - */ - switch (FunctionBuildConfig.appIdentityMode) { - // 司机身份专属模块 - case 0x00: - // 地图数据收集模块 - MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_MAP_DATA_COLLECT_PROVIDER, "MoGoMapDataCollector")); - break; - case 0x01: - - break; - default: - break; + // 司机身份专属模块 + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + // 地图数据收集模块 + MogoModulePaths.addModuleFunctionServer(new MogoModule(MogoServicePaths.PATH_MAP_DATA_COLLECT_PROVIDER, "MoGoMapDataCollector")); } if (!DebugConfig.isLauncher()) { @@ -350,7 +340,7 @@ public abstract class MainMoGoApplication extends AbsMogoApplication { .getInstance().initManager(this); } - CallerLogger.INSTANCE.i(M_MAIN+TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms"); + CallerLogger.INSTANCE.i(M_MAIN + TAG, "App launch timer cost " + (System.currentTimeMillis() - start) + "ms"); } @Override diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/IMoGoHmiViewProxy.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/IMoGoHmiViewProxy.kt new file mode 100644 index 0000000000..5dc0f46e49 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/IMoGoHmiViewProxy.kt @@ -0,0 +1,23 @@ +package com.mogo.eagle.core.function.api.hmi + +import com.mogo.eagle.core.function.api.hmi.view.IViewLimitingVelocity +import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight + +/** + * 设置HMI中控件代理接口 + */ +interface IMoGoHmiViewProxy { + + + /** + * 设置 红绿灯 代理View + * @param view + */ + fun setProxyTrafficLightView(view: IViewTrafficLight) + + /** + * 设置 限速 代理View + * @param view + */ + fun setLimitingSpeedView(view: IViewLimitingVelocity) +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewLimitingVelocity.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewLimitingVelocity.kt new file mode 100644 index 0000000000..aef782d2d6 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/view/IViewLimitingVelocity.kt @@ -0,0 +1,18 @@ +package com.mogo.eagle.core.function.api.hmi.view + +import android.content.Context +import android.util.AttributeSet +import android.widget.LinearLayout + +/** + * 定义限速View具备的接口 + */ +abstract class IViewLimitingVelocity(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : + LinearLayout(context, attrs, defStyleAttr) { + + /** + * 更新限速数据 + * @param limitingSpeed 限速值,单位:km/h + */ + open fun updateLimitingSpeed(limitingSpeed: Int) {} +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt index 0fcc25b4ef..8c8191ed56 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoWaringProvider.kt @@ -4,13 +4,14 @@ import android.view.View import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.notice.NoticeNormalData import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData +import com.mogo.eagle.core.function.api.hmi.IMoGoHmiViewProxy import com.mogo.eagle.core.function.api.hmi.view.IViewTrafficLight /** * @author xiaoyuzhou * @date 2021/8/2 7:36 下午 */ -interface IMoGoWaringProvider { +interface IMoGoWaringProvider : IMoGoHmiViewProxy { /** * 隐藏 脉速表 @@ -213,9 +214,4 @@ interface IMoGoWaringProvider { fun showBadCaseFloat(tag: String = "BadCaseFloat", floatView: View): () -> Unit - /** - * 设置红绿灯代理View - * @param view - */ - fun setProxyTrafficLightView(view: IViewTrafficLight) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt index 2104ebd2b2..bb44e7872c 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/hmi/CallerHmiManager.kt @@ -6,6 +6,7 @@ import com.mogo.eagle.core.data.constants.MoGoFragmentPaths import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.notice.NoticeNormalData import com.mogo.eagle.core.data.notice.NoticeTrafficStylePushData +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.IMoGoWaringProvider import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener @@ -289,13 +290,20 @@ object CallerHmiManager : CallerBase() { return waringProviderApi?.showBadCaseFloat(tag, floatView) } - /** - * 设置红绿灯代理View + * 设置 红绿灯 代理View * @param view */ fun setProxyTrafficLightView(view: IViewTrafficLight) { waringProviderApi?.setProxyTrafficLightView(view) } + /** + * 设置 限速 代理View + * @param view + */ + fun setLimitingSpeedView(view: IViewLimitingVelocity) { + waringProviderApi?.setLimitingSpeedView(view) + } + } \ No newline at end of file