From 70ae305978c00b8697e8fa0c79b88989eece2b99 Mon Sep 17 00:00:00 2001 From: renwj Date: Mon, 18 Dec 2023 15:48:27 +0800 Subject: [PATCH] =?UTF-8?q?[6.2.6][=E5=B0=8F=E6=99=BA=E5=BD=A2=E8=B1=A1]?= =?UTF-8?q?=20=E6=B7=BB=E5=8A=A0v2n=E5=B0=8F=E6=99=BA=E5=BD=A2=E8=B1=A1?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/function/hmi/ui/MoGoHmiProvider.kt | 17 +++++++++ .../hmi/xiaozhi/XiaoZhiStateManager.kt | 35 +++++++++++++++++++ .../api/hmi/warning/IMoGoHmiProvider.kt | 17 +++++++++ .../api/hmi/xiaozhi/IXiaoZhiStateManager.kt | 15 ++++++++ .../function/api/hmi/xiaozhi/event/Event.kt | 6 ++++ .../listener/OnXiaoZhiStateChangeListener.kt | 9 +++++ .../function/api/hmi/xiaozhi/state/State.kt | 8 +++++ .../function/call/hmi/CallerHmiManager.kt | 23 ++++++++++++ 8 files changed, 130 insertions(+) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/xiaozhi/XiaoZhiStateManager.kt create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/IXiaoZhiStateManager.kt create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/event/Event.kt create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/listener/OnXiaoZhiStateChangeListener.kt create mode 100644 core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/state/State.kt diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt index f677890be3..3c01dda4d9 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiProvider.kt @@ -23,6 +23,9 @@ import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.map.Infrastructure 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.api.hmi.xiaozhi.event.Event +import com.mogo.eagle.core.function.api.hmi.xiaozhi.listener.OnXiaoZhiStateChangeListener +import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.call.v2x.CallerTurnLightListenerManager @@ -40,6 +43,7 @@ import com.mogo.eagle.core.function.hmi.ui.tools.ToBindingCarDialog import com.mogo.eagle.core.function.hmi.ui.tools.UpgradeAppDialog import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView +import com.mogo.eagle.core.function.hmi.xiaozhi.XiaoZhiStateManager import com.mogo.eagle.core.utilcode.floating.MoGoPopWindow import com.mogo.eagle.core.utilcode.kotlin.safeCancel import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -77,6 +81,8 @@ class MoGoHmiProvider : IMoGoHmiProvider { private val isPlayingTts by lazy { AtomicBoolean(false) } + private val xiaozhi by lazy { XiaoZhiStateManager() } + override fun init(context: Context?) { this.context = context @@ -381,4 +387,15 @@ class MoGoHmiProvider : IMoGoHmiProvider { MogoStatusManager.getInstance().setTaxiUnmanedDriverLineRoutingVerifyMode(TAG, isMode) } + override fun registerXiaoZhiStatusChangeListener(listener: OnXiaoZhiStateChangeListener) { + xiaozhi.addListener(listener) + } + + override fun unRegisterXiaoZhiStatusChangedListener(listener: OnXiaoZhiStateChangeListener) { + xiaozhi.removeListener(listener) + } + + override fun notifyXiaoZhiStatusChanged(event: Event, state: State) { + xiaozhi.notify(event, state) + } } \ 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/xiaozhi/XiaoZhiStateManager.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/xiaozhi/XiaoZhiStateManager.kt new file mode 100644 index 0000000000..a01bdfbbe7 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/xiaozhi/XiaoZhiStateManager.kt @@ -0,0 +1,35 @@ +package com.mogo.eagle.core.function.hmi.xiaozhi + +import android.content.Context +import com.mogo.eagle.core.function.api.hmi.xiaozhi.IXiaoZhiStateManager +import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.Event +import com.mogo.eagle.core.function.api.hmi.xiaozhi.listener.OnXiaoZhiStateChangeListener +import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State +import java.util.concurrent.CopyOnWriteArrayList + +internal class XiaoZhiStateManager: IXiaoZhiStateManager { + + private val listeners by lazy { CopyOnWriteArrayList() } + + override fun init(context: Context?) {} + + override fun addListener(listener: OnXiaoZhiStateChangeListener) { + if (listeners.contains(listener)) { + return + } + listeners.add(listener) + } + + override fun removeListener(listener: OnXiaoZhiStateChangeListener) { + if (!listeners.contains(listener)) { + return + } + listeners.remove(listener) + } + + override fun notify(event: Event, state: State) { + listeners.forEach { + it.onChanged(event, state) + } + } +} \ 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/IMoGoHmiProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt index 62b9dced0e..fc5e2a7874 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/warning/IMoGoHmiProvider.kt @@ -8,6 +8,9 @@ import com.mogo.eagle.core.data.enums.WarningDirectionEnum import com.mogo.eagle.core.data.map.Infrastructure import com.mogo.eagle.core.data.biz.notice.NoticeNormalData import com.mogo.eagle.core.data.biz.notice.NoticeTrafficStylePushData +import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.Event +import com.mogo.eagle.core.function.api.hmi.xiaozhi.listener.OnXiaoZhiStateChangeListener +import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State /** * @author xiaoyuzhou @@ -200,4 +203,18 @@ interface IMoGoHmiProvider :IProvider{ */ fun setTaxiUnmanedDriverLineRoutingVerifyMode(isMode: Boolean) + /** + * 添加小智形象展示的状态监听 + */ + fun registerXiaoZhiStatusChangeListener(listener: OnXiaoZhiStateChangeListener) + + /** + * 移除小智形象展示的状态监听 + */ + fun unRegisterXiaoZhiStatusChangedListener(listener: OnXiaoZhiStateChangeListener) + + /** + * 通知小智形象要变化了 + */ + fun notifyXiaoZhiStatusChanged(event: Event, state: State) } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/IXiaoZhiStateManager.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/IXiaoZhiStateManager.kt new file mode 100644 index 0000000000..7c203a5d54 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/IXiaoZhiStateManager.kt @@ -0,0 +1,15 @@ +package com.mogo.eagle.core.function.api.hmi.xiaozhi + +import com.alibaba.android.arouter.facade.template.IProvider +import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.Event +import com.mogo.eagle.core.function.api.hmi.xiaozhi.listener.OnXiaoZhiStateChangeListener +import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State + +interface IXiaoZhiStateManager : IProvider { + + fun addListener(listener: OnXiaoZhiStateChangeListener) + + fun removeListener(listener: OnXiaoZhiStateChangeListener) + + fun notify(event: Event, state: State) +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/event/Event.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/event/Event.kt new file mode 100644 index 0000000000..5052fd4a8e --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/event/Event.kt @@ -0,0 +1,6 @@ +package com.mogo.eagle.core.function.api.hmi.xiaozhi.event + +enum class Event { + + V2N +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/listener/OnXiaoZhiStateChangeListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/listener/OnXiaoZhiStateChangeListener.kt new file mode 100644 index 0000000000..97ae556a32 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/listener/OnXiaoZhiStateChangeListener.kt @@ -0,0 +1,9 @@ +package com.mogo.eagle.core.function.api.hmi.xiaozhi.listener + +import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.Event +import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State + +interface OnXiaoZhiStateChangeListener { + + fun onChanged(event: Event, state: State) +} \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/state/State.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/state/State.kt new file mode 100644 index 0000000000..022a0375e2 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/hmi/xiaozhi/state/State.kt @@ -0,0 +1,8 @@ +package com.mogo.eagle.core.function.api.hmi.xiaozhi.state + +enum class State { + + START, + DOING, + STOP +} \ 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 c72f51addc..7270a55fda 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 @@ -13,6 +13,9 @@ import com.mogo.eagle.core.data.enums.WarningDirectionEnum.ALERT_WARNING_NON import com.mogo.eagle.core.data.map.Infrastructure 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.api.hmi.xiaozhi.event.Event +import com.mogo.eagle.core.function.api.hmi.xiaozhi.listener.OnXiaoZhiStateChangeListener +import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State /** * @author xiaoyuzhou @@ -294,4 +297,24 @@ object CallerHmiManager { hmiProviderApi?.setTaxiUnmanedDriverLineRoutingVerifyMode(isMode) } + /** + * 添加小智形象展示的状态监听 + */ + fun registerXiaoZhiStatusChangeListener(listener: OnXiaoZhiStateChangeListener) { + hmiProviderApi?.registerXiaoZhiStatusChangeListener(listener) + } + + /** + * 移除小智形象展示的状态监听 + */ + fun unRegisterXiaoZhiStatusChangedListener(listener: OnXiaoZhiStateChangeListener) { + hmiProviderApi?.unRegisterXiaoZhiStatusChangedListener(listener) + } + + /** + * 通知小智形象要变化了 + */ + fun notifyXiaoZhiStatusChanged(event: Event, state: State) { + hmiProviderApi?.notifyXiaoZhiStatusChanged(event, state) + } } \ No newline at end of file