From 5189e68eb1e42cf5756932eaa755be3cc2edf7d3 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 30 Apr 2025 16:42:07 +0800 Subject: [PATCH] =?UTF-8?q?[8.0.0]=E5=85=A8=E6=81=AF=E8=B7=AF=E5=8F=A3?= =?UTF-8?q?=E6=8E=A2=E6=9F=A5=E8=BF=9BMogoMind?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../unmanned/passenger/ui/aiview/AiView.kt | 5 + .../ui/aiview/RoadCrossRoamViewModel.kt | 73 +++++++++++++ .../ui/aiview/adapter/AIMessageAdapter.kt | 2 + .../ui/aiview/adapter/AIMessageViewHolder.kt | 66 ++++++++++++ .../ui/aiview/bean/AssistantMessage.kt | 6 ++ .../res/drawable-nodpi/icon_cover_line.png | Bin 0 -> 25197 bytes .../res/layout/item_ai_road_cross_roam.xml | 96 ++++++++++++++++++ .../res/layout/taxt_u_p_base_fragment.xml | 21 ---- 8 files changed, 248 insertions(+), 21 deletions(-) create mode 100644 OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/RoadCrossRoamViewModel.kt create mode 100644 OCH/taxi/unmanned-passenger/src/main/res/drawable-nodpi/icon_cover_line.png create mode 100644 OCH/taxi/unmanned-passenger/src/main/res/layout/item_ai_road_cross_roam.xml diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/AiView.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/AiView.kt index 12620386eb..f1f18053bd 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/AiView.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/AiView.kt @@ -49,6 +49,7 @@ class AiView @JvmOverloads constructor( private var viewModel:AIViewModel?=null private var pncActionsModel:PNCActionsViewModel ?= null private var roadV2NEventModel:RoadV2NEventViewModel ?= null + private var roadCrossRoamModel:RoadCrossRoamViewModel ?= null private var aiAnimator: BigFrameAnimatorContainer?=null private var aiAnimatorBg: BigFrameAnimatorContainer?=null @@ -230,6 +231,10 @@ class AiView @JvmOverloads constructor( ViewModelProvider(it)[RoadV2NEventViewModel::class.java] } roadV2NEventModel?.init() + roadCrossRoamModel = findViewTreeViewModelStoreOwner()?.let{ + ViewModelProvider(it)[RoadCrossRoamViewModel::class.java] + } + roadCrossRoamModel?.init(context) } private fun startListInfo(){ diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/RoadCrossRoamViewModel.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/RoadCrossRoamViewModel.kt new file mode 100644 index 0000000000..c7f836ed4d --- /dev/null +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/RoadCrossRoamViewModel.kt @@ -0,0 +1,73 @@ +package com.mogo.och.unmanned.passenger.ui.aiview + +import android.content.Context +import android.view.View +import androidx.lifecycle.ViewModel +import com.mogo.commons.voice.AIAssist +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.api.map.road.IMoGoMapRoadListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerServicesEventManager +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager +import com.mogo.eagle.core.function.call.map.CallerMapIdentifyManager +import com.mogo.eagle.core.function.call.map.CallerMapRoadListenerManager +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.unmanned.passenger.ui.aiview.bean.AIMessage + +class RoadCrossRoamViewModel: ViewModel(), IMoGoMapRoadListener { + + companion object{ + const val TAG = "RoadCrossRoamViewModel" + } + + private lateinit var mContext: Context + + fun init(context: Context){ + CallerMapRoadListenerManager.addListener(TAG, this) + mContext = context + } + + override fun onCrossDevice(trigger: Boolean) { + super.onCrossDevice(trigger) + if(trigger){ + show() + } + } + + private fun show(){ + // 没有路线不做提示 + if (CallerAutoPilotStatusListenerManager.getLineId() == 0L) { + CallerLogger.d(TAG, "没有路线不做提示") + return + } + // 处于漫游模式下不做处理 + if (CallerMapIdentifyManager.roam.second) { + if (CallerMapIdentifyManager.roam.first != TAG) { + ToastUtils.showLong("正在漫游中,不展示路口漫游") + } + CallerLogger.d(TAG, "正在漫游中,不展示路口漫游") + return + } + // 首页被遮挡不做提示 + if (!CallerHmiViewControlListenerManager.getMainPageVisible()) { + CallerLogger.d(TAG, "attachView return , mainPageVisible is false") + return + } + // 没有路侧设备,不做处理 + CallerLogger.d(TAG, "命中,attachView") + val cross = CallerMapRoadListenerManager.getCrossEndInfo() + if (cross.isNullOrEmpty()) { + CallerLogger.d(TAG, "未触发,路口ID:$cross") + return + } + if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ + val disStr = "为您提供路口全息影像,助力出行" + AIAssist.getInstance(mContext).speakTTSVoiceWithLevel(disStr, AIAssist.NEW_LEVEL_2) + } + CallerServicesEventManager.updateServicesNum(CallerServicesEventManager.ServiceType.ROAD) + AIMessageManager.post(AIMessage.RoadCrossRoam(System.currentTimeMillis().toString(),"")) + } + +} \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageAdapter.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageAdapter.kt index dc897f88ec..5655944627 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageAdapter.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageAdapter.kt @@ -22,6 +22,7 @@ class AIMessageAdapter : ListAdapter(MessageDiffCa AIMessage.TYPE_QA -> QAViewHolder(inflater.inflate(R.layout.item_ai_msg_qa, parent, false)) AIMessage.TYPE_PNC_ACTION -> PNCActionViewHolder(inflater.inflate(R.layout.item_ai_pnc_action,parent,false)) AIMessage.TYPE_ROAD_V2N -> RoadV2NEventViewHolder(inflater.inflate(R.layout.item_ai_road_v2n_event,parent,false)) + AIMessage.TYPE_ROAD_CROSS ->RoadCrossRoamViewHolder(inflater.inflate(R.layout.item_ai_road_cross_roam,parent,false)) else -> throw IllegalArgumentException("Invalid view type") } } @@ -36,6 +37,7 @@ class AIMessageAdapter : ListAdapter(MessageDiffCa is AIMessage.Warning -> AIMessage.TYPE_WARNING is AIMessage.PNCAction -> AIMessage.TYPE_PNC_ACTION is AIMessage.RoadV2NEvent -> AIMessage.TYPE_ROAD_V2N + is AIMessage.RoadCrossRoam -> AIMessage.TYPE_ROAD_CROSS else -> AIMessage.TYPE_EVENT } } diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageViewHolder.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageViewHolder.kt index 6fabe4cc6e..ccd78303db 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageViewHolder.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/adapter/AIMessageViewHolder.kt @@ -1,11 +1,15 @@ package com.mogo.och.unmanned.passenger.ui.aiview.adapter import android.animation.ObjectAnimator +import android.animation.ValueAnimator +import android.content.Context +import android.graphics.Rect import android.text.TextUtils import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.animation.LinearInterpolator import android.widget.FrameLayout import android.widget.ImageView import android.widget.LinearLayout @@ -14,12 +18,15 @@ import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.core.graphics.toColorInt +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.data.v2x.RoadV2NEventType import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager import com.mogo.eagle.core.function.hmi.ui.v2n.RoadV2NEventLivePlayView +import com.mogo.eagle.core.function.view.MapRoamView +import com.mogo.eagle.core.function.view.RoadCrossRoamListAdapter import com.mogo.eagle.core.utilcode.mogo.glide.GlideImageLoader import com.mogo.eagle.core.utilcode.mogo.imageloader.MogoImageView import com.mogo.eagle.core.utilcode.util.DateTimeUtils @@ -235,7 +242,66 @@ class RoadV2NEventViewHolder(binding: View) : MessageViewHolder(binding){ } +class RoadCrossRoamViewHolder(binding: View) : MessageViewHolder(binding){ + private var ivZhiRoadRoamSet: ImageView = binding.findViewById(R.id.ivZhiRoadRoamSet) + private var ivZhiRoadRoamView: ImageView = binding.findViewById(R.id.ivZhiRoadRoamView) + private var tvRoadRoamTitle: TextView = binding.findViewById(R.id.tvRoadRoamTitle) + private var mapRoamView: MapRoamView = binding.findViewById(R.id.mapRoamView) + private var clScanningBg: ConstraintLayout = binding.findViewById(R.id.clScanningBg) + private var ivCoverRoam: ImageView = binding.findViewById(R.id.ivCoverRoam) + private var lvRoadCrossRoamTip: RecyclerView = binding.findViewById(R.id.lvRoadCrossRoamTip) + + override fun bind(item: AIMessage, onItemClickListener: OnItemClickListener?) { + if(item is AIMessage.RoadCrossRoam){ + lvRoadCrossRoamTip.layoutManager = NoScrollLayoutManager(itemView.context) + lvRoadCrossRoamTip.addItemDecoration(object : RecyclerView.ItemDecoration() { + override fun getItemOffsets( + outRect: Rect, + view: View, + parent: RecyclerView, + state: RecyclerView.State + ) { + super.getItemOffsets(outRect, view, parent, state) + outRect.bottom = 24 + } + }) + mapRoamView.openRoam() + lvRoadCrossRoamTip.adapter = RoadCrossRoamListAdapter(itemView.context, true) + // 创建横向移动的动画 + val animator = + ObjectAnimator.ofFloat( + ivCoverRoam, + "translationX", + -120f, + 540f + ) + animator.duration = 1500 // 设置动画持续时间,单位为毫秒 + animator.repeatCount = 6 + animator.repeatMode = ValueAnimator.RESTART // 设置动画来回移动 + animator.start() + val rotationAnim = ObjectAnimator.ofFloat(ivZhiRoadRoamView, "rotation", 0f, 360f) + rotationAnim.repeatCount = 9 + rotationAnim.repeatMode = ValueAnimator.RESTART + rotationAnim.duration = 1000 + rotationAnim.interpolator = LinearInterpolator() + rotationAnim.start() + tvRoadRoamTitle.setTextColor(itemView.context.getColor(R.color.color_131415)) + + } + } + +} + +private class NoScrollLayoutManager(context: Context?) : LinearLayoutManager(context) { + override fun canScrollVertically(): Boolean { + return false + } + + override fun canScrollHorizontally(): Boolean { + return false + } +} fun interface OnItemClickListener { fun onItemClick(item: AIMessage, position: Int) diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/bean/AssistantMessage.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/bean/AssistantMessage.kt index 3c24dedc4c..d1ec4be663 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/bean/AssistantMessage.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/bean/AssistantMessage.kt @@ -23,6 +23,7 @@ sealed class AIMessage( const val TYPE_WARNING = 5 const val TYPE_PNC_ACTION = 6 const val TYPE_ROAD_V2N = 7 + const val TYPE_ROAD_CROSS = 8 } data class Scan( @@ -148,4 +149,9 @@ sealed class AIMessage( var lat: Double, //事件坐标-纬度 ):AIMessage(id,title,tts) + data class RoadCrossRoam( + override val id: String, + override val title: String + ): AIMessage(id,title) + } \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/res/drawable-nodpi/icon_cover_line.png b/OCH/taxi/unmanned-passenger/src/main/res/drawable-nodpi/icon_cover_line.png new file mode 100644 index 0000000000000000000000000000000000000000..206f9c8d9e57e16093cdae65209f348bbc275ee8 GIT binary patch literal 25197 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 LQj)9`*AM(3z{<4} literal 0 HcmV?d00001 diff --git a/OCH/taxi/unmanned-passenger/src/main/res/layout/item_ai_road_cross_roam.xml b/OCH/taxi/unmanned-passenger/src/main/res/layout/item_ai_road_cross_roam.xml new file mode 100644 index 0000000000..d6ca80b3a9 --- /dev/null +++ b/OCH/taxi/unmanned-passenger/src/main/res/layout/item_ai_road_cross_roam.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/res/layout/taxt_u_p_base_fragment.xml b/OCH/taxi/unmanned-passenger/src/main/res/layout/taxt_u_p_base_fragment.xml index 486a23ac03..46f75fa938 100644 --- a/OCH/taxi/unmanned-passenger/src/main/res/layout/taxt_u_p_base_fragment.xml +++ b/OCH/taxi/unmanned-passenger/src/main/res/layout/taxt_u_p_base_fragment.xml @@ -74,27 +74,6 @@ app:fusionLightUser="passenger" /> - - - - - -