From 610b42344978e0a81d80093b68ca869b57e224d9 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 20 Sep 2023 11:49:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?[6.1.0]=20[charter]=20[=E5=8C=85=E8=BD=A6?= =?UTF-8?q?=E6=8E=89=E5=A4=B4=E6=8F=90=E7=A4=BA+=E6=B3=A8=E9=87=8A]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/charter/manager/CharterTrajectoryManager.kt | 12 +++++++++++- .../charter/passenger/model/CharterPassengerModel.kt | 9 +++++++++ .../charter/passenger/ui/itinerary/ItineraryView.kt | 3 +++ .../charter/passenger/ui/orderinfo/OrderInfoView.kt | 3 +++ .../passenger/ui/selectline/SelectLineView.kt | 3 +++ .../passenger/ui/softcontrol/SoftControlView.kt | 3 +++ .../src/main/res/layout/m1_main_fragment.xml | 10 +++++++++- 7 files changed, 41 insertions(+), 2 deletions(-) diff --git a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt index 0d13cced28..125fa0cf16 100644 --- a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt +++ b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/manager/CharterTrajectoryManager.kt @@ -87,7 +87,17 @@ object CharterTrajectoryManager { // 5. 轨迹管理_轨迹下载超时 d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载超时") // ToastUtils.showShort("轨迹下载超时"); - } else if ("ISSM_FUNC_AUTO_PILOT_READY" == guardianInfo.getCode()) { + } else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) { + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OPERATION, + OperationMsg( + System.currentTimeMillis(), "请尽快操作车辆至适当位置掉头!", -1 + ) + ) + ) + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot) + } else if ("EMAP_ATTITUDE_INIT_FAILED" == guardianInfo.getCode()) { // 收到ssm的自动驾驶变为ready,再次下发轨迹下载.解决:域控重启,或者102域控启动太早,107节点初始化未完成导致的轨迹未进行下载。 d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() ssm ready,再次发起下载") syncTrajectoryInfo(get().getBusOrderResult()?.lineId!!, diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt index ab2d27edf2..4af2a9cfb8 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/model/CharterPassengerModel.kt @@ -53,6 +53,7 @@ import io.reactivex.Observable import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import mogo.telematics.pad.MessagePad +import mogo_msg.MogoReportMsg import java.util.* import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.TimeUnit @@ -197,6 +198,14 @@ object CharterPassengerModel { d(M_BUS_P + TAG, "底盘给到站信息") arriveDest() } + override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { + super.onAutopilotGuardian(guardianInfo) + guardianInfo?.let { + if (it.code=="IMAP_TRA_LOADED") { + ToastCharterUtils.showToastShort("请等待车辆完成掉头后再出发吧~") + } + } + } } /** diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryView.kt index 26238e72e9..e362613f11 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/itinerary/ItineraryView.kt @@ -13,6 +13,9 @@ import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_distance_surplus import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_distance_unit import kotlinx.android.synthetic.main.m1_itinerary_info.view.tv_speed +/** + * 速度、剩余时间、剩余距离和到达时间 + */ class ItineraryView : ConstraintLayout, ItineraryViewModel.ItineraryViewCallback { private val TAG = "ItineraryView" diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/orderinfo/OrderInfoView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/orderinfo/OrderInfoView.kt index 78b4af73ff..a9816bf408 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/orderinfo/OrderInfoView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/orderinfo/OrderInfoView.kt @@ -19,6 +19,9 @@ import kotlinx.android.synthetic.main.m1_devices_fragment.view.actv_order_times import kotlinx.android.synthetic.main.m1_devices_fragment.view.cl_order_info import kotlinx.android.synthetic.main.m1_devices_fragment.view.cl_order_info_endorder_comfit +/** + * 剩余时间和结束订单入口 + */ class OrderInfoView : ConstraintLayout, OrderInfoViewModel.ItineraryViewCallback { private val TAG = "OrderInfoView" diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/selectline/SelectLineView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/selectline/SelectLineView.kt index d9fa7178c1..5620c12797 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/selectline/SelectLineView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/selectline/SelectLineView.kt @@ -41,6 +41,9 @@ import kotlinx.android.synthetic.main.m1_order_loading.view.iv_loading_wait_ent import me.jessyan.autosize.utils.AutoSizeUtils import org.greenrobot.eventbus.EventBus +/** + * 选择线路 + */ class SelectLineView : ConstraintLayout, SelectLineViewModel.SelectLineViewCallback { private val TAG = "OrderInfoView" diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlView.kt index c071ba0680..46acd5e9fe 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/charter/passenger/ui/softcontrol/SoftControlView.kt @@ -72,6 +72,9 @@ import kotlinx.android.synthetic.main.m1_soft_fragment.view.tv_temperature_title import me.jessyan.autosize.utils.AutoSizeUtils import java.util.concurrent.TimeUnit +/** + * 空调、暖风机、声音控制 + */ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallback { private val TAG = "OrderInfoView" diff --git a/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml b/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml index 3515c4025c..61b135e866 100644 --- a/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml +++ b/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml @@ -90,12 +90,14 @@ app:layout_constraintEnd_toEndOf="@+id/viewBusPM1MsgBoxButton" app:layout_constraintTop_toBottomOf="@+id/viewBusPM1MsgBoxButton" /> + + + + + - + + + + Date: Wed, 20 Sep 2023 11:52:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?[6.1.0][Opt=E6=96=B0=E5=A2=9E=E5=B9=B3?= =?UTF-8?q?=E8=A1=8C=E9=A9=BE=E9=A9=B6=E8=AF=B7=E6=B1=82=E4=B8=AD=E5=8A=A8?= =?UTF-8?q?=E7=94=BB=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmi/ui/widget/ParallelDriveView.kt | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt index 0d5c9d93b4..79b85ef6d7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/ParallelDriveView.kt @@ -1,16 +1,18 @@ package com.mogo.eagle.core.function.hmi.ui.widget +import android.animation.ObjectAnimator +import android.animation.ValueAnimator import android.annotation.SuppressLint import android.content.Context import android.graphics.Color import android.util.AttributeSet import android.view.LayoutInflater +import android.view.animation.LinearInterpolator import android.widget.ImageView import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.voice.AIAssist -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotActionsListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoParallelDrivingActionsListener import com.mogo.eagle.core.function.api.autopilot.IMoGoParallelDrivingStatusListener @@ -22,7 +24,6 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.zhjt.mogo.adas.data.bean.UnableLaunchReason -import com.zhjt.mogo.adas.data.bean.UnableLaunchReason.SourceType import mogo.yycp.paralleldriving.protocol.ParallelDrivingRequest.ParallelRequest import mogo.yycp.paralleldriving.protocol.ParallelTaskProcessNoticeOuterClass @@ -50,6 +51,7 @@ class ParallelDriveView @JvmOverloads constructor( //1:ready, 2:自动驾驶中, 7:平行驾驶中 @Volatile private var autopilotState: Int = 1 + @Volatile private var isAutoDriving: Boolean = false @@ -60,6 +62,7 @@ class ParallelDriveView @JvmOverloads constructor( private lateinit var statusIcon: ImageView private lateinit var statusTitle: TextView private var listener: ClickEventListener? = null + private var animator: ObjectAnimator? = null init { LayoutInflater.from(context).inflate(R.layout.view_parallel_drive, this, true) @@ -115,11 +118,13 @@ class ParallelDriveView @JvmOverloads constructor( }, ThreadUtils.MODE.QUEUE) } } + 2 -> { if (this.autopilotState != state) { isAutoDriving = true } } + else -> { if (this.autopilotState != state) { isAutoDriving = false @@ -161,30 +166,37 @@ class ParallelDriveView @JvmOverloads constructor( state = SYNCHRONIZING updateUI(SYNCHRONIZING) } + "EXCEPTION_EXIT_SYNC" -> {// 同步异常结束 state = ONE_EXCEPTION updateUI(ONE_EXCEPTION) } + "TASK_REJECTED" -> {// 任务已被拒绝 state = FAILURE updateUI(FAILURE) AIAssist.getInstance(context).speakTTSVoice("请求已被拒绝") } + "PARALLEL_EXCEPTION_MANUAL_DRIVING" -> {// 异常请人工驾驶 state = TWO_EXCEPTION updateUI(TWO_EXCEPTION) } + "EXCEPTION_EXIT_PARALLEL_DRIVING" -> {// 平行驾驶异常结束 state = ONE_EXCEPTION updateUI(ONE_EXCEPTION) } + "EXIT_SYNC" -> {// 同步结束 checkAvailableAndUpdateUI() } + "UNABLE_TAKEOVER" -> {// 无法接管 state = ONE_EXCEPTION updateUI(ONE_EXCEPTION) } + "VEHICLE_IN_TROUBLE_PARALLEL_REQUESTED" -> {// 车辆遇困请求平行驾驶 state = AD_REQUESTING updateUI(AD_REQUESTING) @@ -198,6 +210,7 @@ class ParallelDriveView @JvmOverloads constructor( private fun updateUI(state: Int) { when (state) { 0 -> { + stopRotateAnimation() rootLayout.isEnabled = true rootLayout.alpha = 1f statusIcon.background = @@ -215,6 +228,7 @@ class ParallelDriveView @JvmOverloads constructor( resources.getDrawable(R.drawable.icon_para_requesting, null) statusTitle.setTextColor(Color.parseColor("#FFFFFF")) statusIcon.alpha = 1f + startRotateAnimation() statusTitle.text = context.getString(R.string.parallel_drive_requesting) rootLayout.background = resources.getDrawable(R.drawable.bg_auto_pilot, null) } @@ -226,11 +240,13 @@ class ParallelDriveView @JvmOverloads constructor( resources.getDrawable(R.drawable.icon_para_requesting, null) statusTitle.setTextColor(Color.parseColor("#FFFFFF")) statusIcon.alpha = 1f + startRotateAnimation() statusTitle.text = context.getString(R.string.parallel_drive_requesting) rootLayout.background = resources.getDrawable(R.drawable.bg_auto_pilot, null) } SYNCHRONIZING -> { + stopRotateAnimation() rootLayout.isEnabled = false rootLayout.alpha = 1f statusIcon.background = @@ -242,6 +258,7 @@ class ParallelDriveView @JvmOverloads constructor( } PARALLEL_DRIVING -> { + stopRotateAnimation() rootLayout.isEnabled = false rootLayout.alpha = 1f statusIcon.background = @@ -254,6 +271,7 @@ class ParallelDriveView @JvmOverloads constructor( } FAILURE -> { + stopRotateAnimation() rootLayout.isEnabled = false rootLayout.alpha = 1f rootLayout.postDelayed({ @@ -268,6 +286,7 @@ class ParallelDriveView @JvmOverloads constructor( } ONE_EXCEPTION -> { + stopRotateAnimation() rootLayout.isEnabled = false rootLayout.alpha = 1f rootLayout.postDelayed({ @@ -282,6 +301,7 @@ class ParallelDriveView @JvmOverloads constructor( } TWO_EXCEPTION -> { + stopRotateAnimation() rootLayout.isEnabled = false rootLayout.alpha = 1f rootLayout.postDelayed({ @@ -296,6 +316,7 @@ class ParallelDriveView @JvmOverloads constructor( } UNAVAILABLE -> { + stopRotateAnimation() rootLayout.isEnabled = false rootLayout.alpha = 0.4f statusIcon.background = @@ -351,6 +372,27 @@ class ParallelDriveView @JvmOverloads constructor( } } + @SuppressLint("Recycle") + private fun startRotateAnimation() { + if (animator == null) { + animator = ObjectAnimator.ofFloat(statusIcon, "rotation", 0f, 360f).apply { + duration = 1500 + repeatMode = ValueAnimator.RESTART + repeatCount = ValueAnimator.INFINITE + interpolator = LinearInterpolator() + } + } + animator?.start() + } + + private fun stopRotateAnimation() { + animator?.let { + if (it.isRunning) { + it.cancel() + } + } + } + override fun onDetachedFromWindow() { super.onDetachedFromWindow() CallerAutoPilotStatusListenerManager.removeListener(TAG)