diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/LanSocketManagerJava.java b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/LanSocketManagerJava.java index 45539ae9ba..96637fb332 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/LanSocketManagerJava.java +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/socket/lan/LanSocketManagerJava.java @@ -94,4 +94,8 @@ public class LanSocketManagerJava implements IReceivedMsgListener { public void onFusionColor(boolean fusionColor) { } + + @Override + public void onB2DemoMode(boolean isB2DemoMode) { + } } diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/autopilot/status/StatusView.kt b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/autopilot/status/StatusView.kt index d298340199..833399171f 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/autopilot/status/StatusView.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/b2/com/mogo/och/shuttle/weaknet/passenger/ui/line/autopilot/status/StatusView.kt @@ -4,12 +4,18 @@ import android.content.Context import android.util.AttributeSet import androidx.appcompat.widget.AppCompatTextView import androidx.core.content.ContextCompat +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.shuttle.weaknet.passenger.R import com.mogo.och.shuttle.weaknet.passenger.callback.ICommonCallback import com.mogo.och.shuttle.weaknet.passenger.model.CommonModel -class StatusView : AppCompatTextView, ICommonCallback { +class StatusView : AppCompatTextView, ICommonCallback, IReceivedMsgListener { private val TAG = "ItineraryView" @@ -17,31 +23,94 @@ class StatusView : AppCompatTextView, ICommonCallback { constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) - constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super( + context, + attributeSet, + defStyleAttr + ) + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerTelematicListenerManager.addListener(TAG, this) + CommonModel.setRouteLineInfoCallback(TAG, this) + updateAutoIconState(0) + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerTelematicListenerManager.removeListener(TAG) + CommonModel.setRouteLineInfoCallback(TAG, null) + } private fun initView() { } - override fun onVisibilityAggregated(isVisible: Boolean) { - super.onVisibilityAggregated(isVisible) - if(isVisible){ - CommonModel.setRouteLineInfoCallback(TAG,this) - }else{ - CommonModel.setRouteLineInfoCallback(TAG,null) + + override fun onB2DemoMode(isB2DemoMode: Boolean) { + super.onB2DemoMode(isB2DemoMode) + updateAutoIconState(1) + } + + //美化模式状态变更回调 + override fun onDemoMode(isDemoMode: Boolean) { + super.onDemoMode(isDemoMode) + updateAutoIconState(2) + } + + override fun updateInOrderStatus(inOrder: Boolean) { + super.updateInOrderStatus(inOrder) + updateAutoIconState(3) + } + + //自动驾驶状态变更 + override fun updateAutoStatus(state: Int) { + updateAutoIconState(4) + } + + private fun getStateIcon(source: Int): Int { + // 平行驾驶状态下 + val sourceStr = when (source) { + 0 -> "View初始化" + 1 -> "B2美化模式状态变更" + 2 -> "美化模式状态变更" + 3 -> "订单状态变更" + 4 -> "自动驾驶状态变更" + else -> "错误" + } + val autopilotState = CallerAutoPilotStatusListenerManager.getState() + CallerLogger.i( + TAG, + "数据刷新来源=$sourceStr 自动驾驶状态=${autopilotState} 订单状态=${CommonModel.inOrder} 美化模式状态=${FunctionBuildConfig.isDemoMode} B2美化模式状态=${FunctionBuildConfig.isB2DemoMode} " + ) + if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING == autopilotState) { + return R.drawable.m2_status_parallel + } + + // 处理非平行驾驶状态的情况 + return when { + // 无订单的情况 + !CommonModel.inOrder -> { + R.drawable.m2_status_basic + } + // 有订单,且美化状态和b2美化状态任意开着 + CommonModel.inOrder && (FunctionBuildConfig.isDemoMode || FunctionBuildConfig.isB2DemoMode) -> { + R.drawable.m2_status_order_auto + } + // 有订单,且美化状态和b2美化状态都关着 + CommonModel.inOrder && !FunctionBuildConfig.isDemoMode && !FunctionBuildConfig.isB2DemoMode -> { + if (autopilotState == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) R.drawable.m2_status_order_auto else R.drawable.m2_status_basic + } + // 覆盖所有可能的情况 + else -> R.drawable.m2_status_basic } } - override fun updateAutoStatus(isAutoPilot: Boolean) { + private fun updateAutoIconState(source: Int) { BizLoopManager.runInMainThread { context?.let { - if (isAutoPilot) { - setTextColor(ContextCompat.getColor(it, R.color.common_FFFFFF)) - background = ContextCompat.getDrawable(it, R.drawable.m2_autopilot_status_in) - } else { - setTextColor(ContextCompat.getColor(it, R.color.common_284F7E)) - background = ContextCompat.getDrawable(it, R.drawable.m2_autopilot_status_out) - } + setTextColor(ContextCompat.getColor(it, R.color.common_FFFFFF)) + background = ContextCompat.getDrawable(it, getStateIcon(source)) } } } diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java index e0b6371ea9..d67aa4ca25 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/callback/ICommonCallback.java @@ -20,6 +20,8 @@ public interface ICommonCallback { */ default void updateAutoStatus(boolean isOpen){} + default void updateAutoStatus(int state){} + default void updateInOrderStatus(boolean inOrder){} default void updateLineStations(List stations){} default void clearCustomPolyline(){} diff --git a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt index 213727373d..3d2b106e1d 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt +++ b/OCH/shuttle/passenger_weaknet/src/main/java/com/mogo/och/shuttle/weaknet/passenger/model/CommonModel.kt @@ -53,7 +53,7 @@ object CommonModel { private val TAG: String = SceneConstant.M_BUS_P+CommonModel::class.java.simpleName var mContext: Context? = null - + var inOrder = false private var mCommonCallbackList = mutableMapOf() @@ -140,12 +140,12 @@ object CommonModel { override fun onAutopilotStatusResponse(state: Int) { d(TAG, "onAutopilotStatusResponse ===== $state") + mCommonCallbackList.forEach { + it.value.updateAutoStatus(state) + } if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != state){ //美化模式下且行程中 - if (FunctionBuildConfig.isDemoMode && - mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1 - && isGoingToNextStation - ){ + if (FunctionBuildConfig.isDemoMode && inOrder()) { mCommonCallbackList.forEach { it.value.updateAutoStatus(true) } @@ -232,6 +232,21 @@ object CommonModel { mCommonCallbackList.forEach { it.value.showNoTaskView(true) } + dispatchInOrder() + } + + private fun dispatchInOrder() { + val newValue = inOrder() + if (inOrder != newValue) { + inOrder = newValue + mCommonCallbackList.forEach { + it.value.updateInOrderStatus(newValue) + } + } + } + + private fun inOrder(): Boolean { + return mNextStationIndex >= 0 && mNextStationIndex <= mStations.size - 1 && isGoingToNextStation } @@ -278,6 +293,7 @@ object CommonModel { val endStation = mStations[i + 1] startStationVideo(endStation) setTrajectoryStation(startStation, endStation, result.lineId) + dispatchInOrder() return } else if (!station.isLeaving) { if (i == stations.size - 1) { @@ -288,6 +304,7 @@ object CommonModel { mCommonCallbackList.forEach { it.value.updateStationsInfo(stations, i, true) } + dispatchInOrder() return } } diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_autopilot_status_in.png b/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_autopilot_status_in.png deleted file mode 100644 index 15717e08b4..0000000000 Binary files a/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_autopilot_status_in.png and /dev/null differ diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_status_basic.png b/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_status_basic.png new file mode 100644 index 0000000000..15b1644451 Binary files /dev/null and b/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_status_basic.png differ diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_status_order_auto.png b/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_status_order_auto.png new file mode 100644 index 0000000000..129dbfa442 Binary files /dev/null and b/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_status_order_auto.png differ diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_status_parallel.png b/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_status_parallel.png new file mode 100644 index 0000000000..45f4ea8ef3 Binary files /dev/null and b/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_status_parallel.png differ diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_autopilot_status_out.png b/OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_turn_light_bg.png similarity index 100% rename from OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_autopilot_status_out.png rename to OCH/shuttle/passenger_weaknet/src/main/res/b2/drawable-nodpi/m2_turn_light_bg.png diff --git a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_autopilot.xml b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_autopilot.xml index ac7fa74f8f..9759a732ea 100644 --- a/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_autopilot.xml +++ b/OCH/shuttle/passenger_weaknet/src/main/res/b2/layout/m2_autopilot.xml @@ -24,10 +24,10 @@ { - CallerTelematicListenerManager.invokeReceivedMsg( - TelematicConstant.CONTROL_B2_PRETTIFY_SWITCH, - it.body - ) + val value = when (String(it.body)) { + "1" -> true + else -> false + } + CallerTelematicListenerManager.dispatchB2DemoMode(value) } TelematicConstant.SHOW_TRAFFIC_LIGHT -> { diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt index fa4cff15a6..5822ca5562 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/config/FunctionBuildConfig.kt @@ -25,6 +25,14 @@ object FunctionBuildConfig { @JvmField var isDemoMode = false + /** + * B2专用美化模式状态 + * 目前仅用于自动驾驶状态UI变更 + */ + @Volatile + @JvmField + var isB2DemoMode = false + /** * 6.2.6版本增加接管提醒开关 * 控制掉自驾、接管类的消息是否展示(包括系统信息接管提醒、fm紧急停车提醒、平行驾驶接管提醒) diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IReceivedMsgListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IReceivedMsgListener.kt index be29500fef..91057ea4ad 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IReceivedMsgListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/telematic/IReceivedMsgListener.kt @@ -7,5 +7,7 @@ interface IReceivedMsgListener { fun onDemoMode(isDemoMode: Boolean) {} + fun onB2DemoMode(isB2DemoMode: Boolean) {} + fun onFusionColor(fusionColor: Boolean){} } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicListenerManager.kt index 8c224788ce..f0286a9a97 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/telematic/CallerTelematicListenerManager.kt @@ -58,6 +58,21 @@ object CallerTelematicListenerManager: CallerBase() { } } + fun dispatchB2DemoMode(isB2DemoMode: Boolean) { + if (isB2DemoMode != FunctionBuildConfig.isB2DemoMode) { + FunctionBuildConfig.isB2DemoMode = isB2DemoMode + M_LISTENERS.forEach { + val listener = it.value + try { + listener.onB2DemoMode(isB2DemoMode) + } catch (e: Exception) { + e.printStackTrace() + Log.e(TAG, "转发B2美化模式出现异常:${e.message}") + } + } + } + } + fun dispatchFusionColor(fusionColor: Boolean) { if (fusionColor != FunctionBuildConfig.isFusionColor) { // FunctionBuildConfig.isFusionColor = fusionColor