From c5c800beb6a67d5da33349f555c2e3cdc6ecb1e2 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Sun, 14 May 2023 23:49:54 +0800 Subject: [PATCH] =?UTF-8?q?[charter]=20[3.2.0]=20[tts=20=E6=9F=A5=E6=BC=8F?= =?UTF-8?q?=E8=A1=A5=E7=BC=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IBusPassengerADASStatusCallback.java | 20 ------- ...harterPassengerAutoStatusChangeCallback.kt | 11 ++++ .../constant/CharterPassengerConst.kt | 1 + .../passenger/model/CharterPassengerModel.kt | 53 +++++++++++++++---- .../BusPassengerFunctionSoftPresenter.kt | 17 +++--- .../presenter/BusPassengerPresenter.kt | 13 +++-- ...CharterPassengerNoviceGuidancePresenter.kt | 15 ++++++ .../dialogfragment/NoviceGuidanceFragment.kt | 8 +++ .../fragment/M1OrderLineFragment.kt | 4 +- .../passenger/ui/view/bottom/impl/GoView.kt | 38 ++++++++++++- .../passenger/view/statusbar/StatusBarView.kt | 33 +++++++++++- .../src/main/res/layout/m1_main_fragment.xml | 9 +--- .../res/layout/m1_statusview_datetime.xml | 10 +++- .../src/main/res/values/strings.xml | 3 +- .../src/main/res/values/strings.xml | 2 +- 15 files changed, 175 insertions(+), 62 deletions(-) delete mode 100644 OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java create mode 100644 OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ICharterPassengerAutoStatusChangeCallback.kt diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java deleted file mode 100644 index 4dbf53010c..0000000000 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/IBusPassengerADASStatusCallback.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.mogo.och.bus.passenger.callback; - -/** - * Created on 2022/3/31 - * - * Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等) - */ -public interface IBusPassengerADASStatusCallback { - // 自动驾驶触发的已到达目的地:暂未用到 - void onAutopilotArriveEnd(); - - // 自动驾驶可用状态 - void onAutopilotEnable(); - - // 自动驾驶不可用状态 - void onAutopilotDisable(); - - // 自动驾驶运行中 - void onAutopilotRunning(); -} diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ICharterPassengerAutoStatusChangeCallback.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ICharterPassengerAutoStatusChangeCallback.kt new file mode 100644 index 0000000000..6adf63cc21 --- /dev/null +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/callback/ICharterPassengerAutoStatusChangeCallback.kt @@ -0,0 +1,11 @@ +package com.mogo.och.bus.passenger.callback + +/** + * Created on 2022/3/31 + * + * Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等) + */ +interface ICharterPassengerAutoStatusChangeCallback { + // 自动驾驶状态发生改变 + fun onAutoStatusChange(newState: Int) +} \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/CharterPassengerConst.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/CharterPassengerConst.kt index 7e77495a46..09d15e054f 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/CharterPassengerConst.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/constant/CharterPassengerConst.kt @@ -23,6 +23,7 @@ class CharterPassengerConst { // 到达起始点围栏 const val ARRIVE_AT_START_STATION_DISTANCE = 15 //围栏由20m改为50m 再次改为15m + const val ARRIVE_SOON_AT_START_STATION_DISTANCE = 100 //100米提示 const val MIN_DISTANCE_STATION = 30 //站点选择小于30m 不能选 } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt index 54dfe96bf8..be2c6a2f49 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/model/CharterPassengerModel.kt @@ -6,6 +6,7 @@ import android.net.ConnectivityManager import com.mogo.commons.AbsMogoApplication import com.mogo.commons.module.intent.IMogoIntentListener import com.mogo.commons.module.intent.IntentManager +import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine @@ -46,12 +47,13 @@ import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.PinYinUtil import com.mogo.och.common.module.voice.VoiceManager +import com.mogo.och.common.module.voice.VoiceNotice +import com.mogo.tts.base.LangTtsEntity +import com.mogo.tts.base.LanguageType import io.reactivex.Observable import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import mogo.telematics.pad.MessagePad -import mogo_msg.MogoReportMsg -import system_master.SystemStatusInfo import java.util.* import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.TimeUnit @@ -74,7 +76,7 @@ object CharterPassengerModel { private var mContext: Context = AbsMogoApplication.getApp() //Model->Presenter:自动驾驶状态相关 - var mADASStatusCallback: IBusPassengerADASStatusCallback? = null + var mAutoStatusChnageListener = ConcurrentHashMap() // 定位监听 private val mControllerStatusCallbackMap = @@ -109,6 +111,7 @@ object CharterPassengerModel { private var broadcastList : MutableMap = HashMap() // 到站仅一次 private val endKey = "arrivedLine" + private val ending100Key = "arrivingLine" private val min5Speak = "min5Speak" private var carTypeChageListener: IOrderChangeCallback?=null @@ -156,6 +159,14 @@ object CharterPassengerModel { } mControllerStatusCallbackMap[tag] = callback } + fun setAutoStatusCallback(tag: String, callback: ICharterPassengerAutoStatusChangeCallback?) { + if (tag.isBlank()) return + if (callback == null) { + mAutoStatusChnageListener.remove(tag) + return + } + mAutoStatusChnageListener[tag] = callback + } /** * 启动轮询查询司机登录状态 @@ -210,8 +221,6 @@ object CharterPassengerModel { // 自动驾驶状态监听 private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener = object : IMoGoAutopilotStatusListener { - override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {} - override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {} override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { val state = autoPilotStatusInfo.state when (state) { @@ -221,17 +230,17 @@ object CharterPassengerModel { IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {} else -> {} } - mPreAutoStatus = state + if(mPreAutoStatus!=state){ + mPreAutoStatus = state + mAutoStatusChnageListener.forEach { + it.value.onAutoStatusChange(state) + } + } } - - override fun onAutopilotSNRequest() {} override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) { - mADASStatusCallback?.onAutopilotArriveEnd() CallerLogger.d(SceneConstant.M_BUS_P + TAG,"底盘给到站信息") arriveDest() } - - override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {} } /** @@ -428,6 +437,10 @@ object CharterPassengerModel { CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于15米到站1") arriveDest() } + if (calculateLineDistance < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE) { + CallerLogger.d(SceneConstant.M_BUS_P + TAG,"小于100米到站") + arriveDestSoon() + } } } // 启动时间校准 @@ -677,6 +690,10 @@ object CharterPassengerModel { "---lastSumLength: " + lastSumLength + "----lastTime : " + lastTime + " thread = " + Thread.currentThread().name ) + if (lastSumLength < CharterPassengerConst.ARRIVE_SOON_AT_START_STATION_DISTANCE) { + CallerLogger.d(M_BUS_P + TAG,"小于100米到站2") + arriveDestSoon() + } if (lastSumLength < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE) { CallerLogger.d(M_BUS_P + TAG,"小于15米到站2") arriveDest() @@ -895,6 +912,20 @@ object CharterPassengerModel { } + @Synchronized + fun arriveDestSoon() { + orderInfo?.let { order -> + order.siteId?.let { siteId -> + if (order.arriveStatus == OrderInfoResponse.ARRIVING) { + if (broadcastList["${siteId}$ending100Key"] == null || broadcastList["${siteId}$ending100Key"] == false) { + val string = mContext.getString(com.mogo.och.common.module.R.string.arrived_station_zh) + VoiceNotice.showNotice(string,) + } + } + } + } + } + fun cleanbroadcastListInfo(){ broadcastList.clear() } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt index f04d7e5362..0cc96db153 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt @@ -12,6 +12,7 @@ import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStat import com.mogo.och.common.module.manager.devicemanage.data.AirconditionStatus import com.mogo.och.common.module.manager.devicemanage.data.HeaterStatue import com.mogo.och.common.module.manager.devicemanage.data.LightStatus +import com.mogo.och.common.module.voice.VoiceNotice import io.reactivex.disposables.Disposable class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : @@ -145,7 +146,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&& LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&& LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) { - ToastUtils.showShort("空调操作未生效,请稍后重试吧~") + ToastUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -155,7 +156,7 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : disposeSubscribe(airconditionDisposable) airconditionDisposable = createSubscribe(10000){ if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) { - ToastUtils.showShort("空调操作未生效,请稍后重试吧~") + ToastUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -192,14 +193,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1) subscribeLightTop1 = createSubscribe{ if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + ToastUtils.showShort("控制系统繁忙,请稍后再试") } } }else{ CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2) subscribeLightTop1 = createSubscribe{ if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + ToastUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -211,14 +212,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1) subscribeLightTop2 = createSubscribe{ if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + ToastUtils.showShort("控制系统繁忙,请稍后再试") } } }else{ CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2) subscribeLightTop2 = createSubscribe{ if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + ToastUtils.showShort("控制系统繁忙,请稍后再试") } } } @@ -230,14 +231,14 @@ class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1) subscribeLightAtmosphere = createSubscribe{ if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + ToastUtils.showShort("控制系统繁忙,请稍后再试") } } } else { CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2) subscribeLightAtmosphere = createSubscribe{ if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { - ToastUtils.showShort("操作未生效,请稍后重试吧~") + ToastUtils.showShort("控制系统繁忙,请稍后再试") } } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt index 43d67fdb28..344722d26f 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt @@ -10,6 +10,7 @@ import com.mogo.commons.voice.AIAssist import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.function.view.SiteMarkerBean import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -51,7 +52,7 @@ class BusPassengerPresenter(view: MainFragment?) : companion object { private const val TAG = "BusPassengerPresenter" - private const val KEY4SHOWNOVICEGUIDANCE = "showNoviceGuidanceOrderNor" + const val KEY4SHOWNOVICEGUIDANCE = "showNoviceGuidanceOrderNor" } override fun onCreate(owner: LifecycleOwner) { @@ -145,6 +146,7 @@ class BusPassengerPresenter(view: MainFragment?) : clearShowNoviceGuidanceSharedPrefs() } OrderStatusEnum.OrderNoLine -> { + CallerOrderListenerManager.invokeOrderRemoval(); showNoviceGuidance() } OrderStatusEnum.OrdersWithLine -> {} @@ -183,17 +185,14 @@ class BusPassengerPresenter(view: MainFragment?) : val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() currentOrderInfo?.orderNo?.let {order-> val stringSet = SharedPrefs.getInstance(context).getStringSet(KEY4SHOWNOVICEGUIDANCE) - fun setData2SP(){ - val orderNoSet = mutableSetOf(order) - SharedPrefs.getInstance(context).putStringSet(KEY4SHOWNOVICEGUIDANCE, orderNoSet) - } + if(stringSet==null){ - setData2SP() + }else{ if (stringSet.contains(order)) { return }else{ - setData2SP() + } } UiThreadHandler.post({ diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt index 8e6ebfd796..3ac0059024 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt @@ -5,12 +5,16 @@ import com.mogo.och.bus.passenger.model.CharterPassengerModel import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment import com.mogo.och.common.module.utils.DateTimeUtil +import com.mogo.och.common.module.utils.RxUtils +import io.reactivex.disposables.Disposable class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) : BusBasePassengerFunctionDevicePresenter(view) { companion object{ private const val TAG = "BusPassengerFunctionPresenter" } + + var createSubscribe: Disposable?=null override fun onCreate(owner: LifecycleOwner) { super.onCreate(owner) } @@ -33,5 +37,16 @@ class CharterPassengerNoviceGuidancePresenter(view: NoviceGuidanceFragment?) : override fun onDestroy(owner: LifecycleOwner) { super.onDestroy(owner) + createSubscribe?.let { + if (!it.isDisposed) { + it.dispose() + } + } + } + + fun exitDialogFragment() { + createSubscribe = RxUtils.createSubscribe(15_000) { + mView?.dismissAllowingStateLoss() + } } } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt index 0dd1d472f9..7011aa4a80 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/NoviceGuidanceFragment.kt @@ -16,6 +16,8 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P import com.mogo.eagle.core.utilcode.util.* import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.model.CharterPassengerModel +import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter import com.mogo.och.bus.passenger.presenter.CharterPassengerNoviceGuidancePresenter import com.mogo.och.bus.passenger.ui.MainFragment import com.mogo.och.common.module.voice.VoiceNotice @@ -122,6 +124,11 @@ class NoviceGuidanceFragment : } v_next_page_notice.setOnClickListener { setTargetVisable(complierGuidance = true) + val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() + currentOrderInfo?.orderNo?.let { order -> + val orderNoSet = mutableSetOf(order) + SharedPrefs.getInstance(requireContext()).putStringSet(BusPassengerPresenter.KEY4SHOWNOVICEGUIDANCE, orderNoSet) + } if (m1_novice_guidance_complier_tts) { val m1NoviceGuidanceStopSiteTts = AbsMogoApplication.getApp().getString(R.string.m1_novice_guidance_complier_tts) @@ -193,6 +200,7 @@ class NoviceGuidanceFragment : group_complete_guidance.visibility = View.VISIBLE actv_click_go_explore.text = "点我进入主页" pageStatus = PageStatus.EndPage + mPresenter?.exitDialogFragment() } } else { diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt index ccf4c418cf..1e5ce2e39c 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/fragment/M1OrderLineFragment.kt @@ -145,7 +145,7 @@ class M1OrderLineFragment : aciv_driver_refuse_group.visibility = View.GONE g_loading_group.visibility = View.GONE g_lines_sites_data.visibility = View.GONE - RxUtils.createSubscribe { + RxUtils.createSubscribe(3_000) { dismiss?.closeDialog() } } @@ -154,7 +154,7 @@ class M1OrderLineFragment : aciv_driver_refuse_group.visibility = View.VISIBLE g_loading_group.visibility = View.GONE g_lines_sites_data.visibility = View.GONE - RxUtils.createSubscribe { + RxUtils.createSubscribe(3_000) { showSelectData() } } diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoView.kt index 94e43674ed..474338a954 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/ui/view/bottom/impl/GoView.kt @@ -15,10 +15,13 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ import com.mogo.eagle.core.utilcode.util.ActivityUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.bus.passenger.R +import com.mogo.och.bus.passenger.callback.ICharterPassengerAutoStatusChangeCallback import com.mogo.och.bus.passenger.model.CharterPassengerModel import com.mogo.och.bus.passenger.ui.view.bottom.BottomClickView import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager +import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.utils.SoundPoolHelper +import io.reactivex.disposables.Disposable import kotlinx.android.synthetic.main.m1_bottom_bar.view.* class GoView @JvmOverloads constructor( @@ -29,6 +32,8 @@ class GoView @JvmOverloads constructor( var applyClickListener: BottomClickView.ApplyClickLintener?=null + var startAutoTimeOut: Disposable?=null + companion object{ private const val TAG = "GoView" } @@ -77,7 +82,7 @@ class GoView @JvmOverloads constructor( ToastUtils.showShort("启动自动驾驶中") CallerAutoPilotControlManager.sendPlanningCmd(2) CharterPassengerModel.startAutopilot() - CharterPassengerModel.leaveStation() + onceRegisterAutoStatus() CharterPassengerModel.sendTripInfo() } IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { @@ -92,4 +97,35 @@ class GoView @JvmOverloads constructor( } SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getActivityByContext(context), R.raw.bus_di) } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + startAutoTimeOut?.let { + if (!it.isDisposed) { + it.dispose() + } + } + } + + private fun onceRegisterAutoStatus() { + CharterPassengerModel.setAutoStatusCallback(TAG,null) + CharterPassengerModel.setAutoStatusCallback(TAG,object :ICharterPassengerAutoStatusChangeCallback{ + override fun onAutoStatusChange(newState: Int) { + if(newState==IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){ + CharterPassengerModel.leaveStation() + } + CharterPassengerModel.setAutoStatusCallback(TAG,null) + } + }) + startAutoTimeOut?.let { + if (!it.isDisposed) { + it.dispose() + } + } + startAutoTimeOut = RxUtils.createSubscribe(20_000) { + val string = AbsMogoApplication.getApp().getString(R.string.m1_start_auto_fail) + ToastUtils.showLong(string) + CharterPassengerModel.setAutoStatusCallback(TAG,null) + } + } } \ No newline at end of file diff --git a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt index b8539ff1da..cffab65a45 100644 --- a/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt +++ b/OCH/mogo-och-charter-passenger/src/main/java/com/mogo/och/bus/passenger/view/statusbar/StatusBarView.kt @@ -9,10 +9,13 @@ import android.view.ViewGroup import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import chassis.ChassisStatesOuterClass +import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoBatteryManagementSystemListener import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener import com.mogo.eagle.core.function.api.setting.IMoGoSkinModeChangeListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerBatteryManagementSystemListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager @@ -22,6 +25,7 @@ import com.mogo.eagle.core.utilcode.util.ClickUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.event.DebugView +import com.mogo.och.bus.passenger.model.CharterPassengerModel import kotlinx.android.synthetic.main.m1_statusview_datetime.view.* import me.jessyan.autosize.utils.AutoSizeUtils import org.greenrobot.eventbus.EventBus @@ -31,7 +35,7 @@ class StatusBarView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener, IViewControlListener, IMoGoBatteryManagementSystemListener { +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoSkinModeChangeListener, IViewControlListener, IMoGoBatteryManagementSystemListener, IMoGoAutopilotStatusListener { companion object { const val TAG = "StatusBarView" @@ -76,6 +80,8 @@ class StatusBarView @JvmOverloads constructor( CallerBatteryManagementSystemListenerManager.addListener(TAG,this) + CallerAutoPilotStatusListenerManager.addListener(TAG, this) + updateStatusBarRightView(FunctionBuildConfig.isDemoMode, "demoMode", DemoModeView(this.context)) bizz_view.setOnClickListener { continuousClick(bizz) } @@ -84,6 +90,27 @@ class StatusBarView @JvmOverloads constructor( progress.progress = 50 tv_power_cos.text = "50%" + + val state = CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state + setAutoPilotSatusInfo(state) + } + + private fun setAutoPilotSatusInfo(state: Int) { + when (state) { + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> { + actv_auto_status.text = "安全接管中" + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> { + actv_auto_status.text = "安全接管中" + } + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { + actv_auto_status.text = "自动驾驶中" + } + IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { + actv_auto_status.text = "远程代驾中" + } + else -> {} + } } override fun onSkinModeChange(skinMode: Int) { @@ -93,6 +120,10 @@ class StatusBarView @JvmOverloads constructor( } } + override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) { + setAutoPilotSatusInfo(autoPilotStatusInfo.state) + } + override fun updateStatusBarLeftView(insert: Boolean, tag: String, viewGroup: ViewGroup) { } diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml index 2ee99c9946..792d811673 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_main_fragment.xml @@ -39,14 +39,6 @@ android:layout_width="@dimen/dp_148" android:layout_height="@dimen/dp_150"/> - - diff --git a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_statusview_datetime.xml b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_statusview_datetime.xml index 92b577616c..69cbbc6e28 100644 --- a/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_statusview_datetime.xml +++ b/OCH/mogo-och-charter-passenger/src/main/res/layout/m1_statusview_datetime.xml @@ -7,10 +7,18 @@ tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout" tools:ignore="MissingDefaultResource"> + + 太棒了!您已完成乘车指南,更多功能欢迎探索~蘑菇小助手预祝您旅途愉快 先关闭车门再启动吧~ - - + 自驾系统繁忙,稍后再试试吧~ diff --git a/OCH/mogo-och-common-module/src/main/res/values/strings.xml b/OCH/mogo-och-common-module/src/main/res/values/strings.xml index 5aed40ce2e..132b2e8eb1 100644 --- a/OCH/mogo-och-common-module/src/main/res/values/strings.xml +++ b/OCH/mogo-och-common-module/src/main/res/values/strings.xml @@ -23,7 +23,7 @@ The next station is %1$s 전방에서 역에 도착하는 %1$s - 距离包车结束剩余5分钟,请您合理安排游玩时间 + 5分钟后包车就要结束了,稍后小助手会自动为您寻找停车点 There are 5 minutes left from the end of chartering. Please arrange your time reasonably 전세버스 종료 후 5분 남았습니다. 여행 시간을 합리적으로 안배해 주십시오