From 5ab6b9e9fb1577e22df05b18b2085cb04753a5fb Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 13 Feb 2023 18:54:12 +0800 Subject: [PATCH] =?UTF-8?q?[m1]=20[1.0.0]=20[=E5=92=8C=E7=A1=AC=E4=BB=B6?= =?UTF-8?q?=E4=BA=A4=E4=BA=922s=E8=B6=85=E6=97=B6=E3=80=81=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E6=A0=B7=E5=BC=8F]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/m1/assets/m1_style.data | Bin 0 -> 89065 bytes .../src/m1/assets/m1_style_extra.data | Bin 0 -> 21038 bytes .../response/BusPassengerRoutesResult.java | 14 +++ .../bus/passenger/model/BusPassengerModel.kt | 103 +++++++++++++++++- ...BusBasePassengerFunctionDevicePresenter.kt | 27 ++++- .../BusPassengerFunctionDevicePresenter.kt | 73 +++++-------- .../BusPassengerFunctionSoftPresenter.kt | 39 +++++++ .../presenter/BusPassengerPresenter.kt | 2 +- .../ui/BusPassengerFunctionSoftFragment.kt | 33 ++---- .../passenger/ui/BusPassengerRouteFragment.kt | 1 + .../src/m1/res/layout/bus_p_fragment.xml | 8 +- 11 files changed, 223 insertions(+), 77 deletions(-) create mode 100644 OCH/mogo-och-bus-passenger/src/m1/assets/m1_style.data create mode 100644 OCH/mogo-och-bus-passenger/src/m1/assets/m1_style_extra.data diff --git a/OCH/mogo-och-bus-passenger/src/m1/assets/m1_style.data b/OCH/mogo-och-bus-passenger/src/m1/assets/m1_style.data new file mode 100644 index 0000000000000000000000000000000000000000..4e4bb6709d314ea403c29089ce8449c5ac1d9dff GIT binary patch literal 89065 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 o*OT^rwm0r?(!R;|C++)kpF literal 0 HcmV?d00001 diff --git a/OCH/mogo-och-bus-passenger/src/m1/assets/m1_style_extra.data b/OCH/mogo-och-bus-passenger/src/m1/assets/m1_style_extra.data new file mode 100644 index 0000000000000000000000000000000000000000..3ce2c92d118914c6e5a667508d4023bce5c72ab6 GIT binary patch literal 21038 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 t(9?-2f-NGT`)-8N6FC{a=2!=L~F literal 0 HcmV?d00001 diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/BusPassengerRoutesResult.java b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/BusPassengerRoutesResult.java index 69bbd34a5d..30d95bdd37 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/BusPassengerRoutesResult.java +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/bean/response/BusPassengerRoutesResult.java @@ -18,6 +18,20 @@ public class BusPassengerRoutesResult { private String runningDur; //运营时间 private long taskTime; //线路时间班次 + //线路轨迹相关字段 + public String csvFileUrl = ""; //轨迹文件下载的cos url,默认“” + public String csvFileMd5 = ""; //轨迹文件md5,默认“” + public String txtFileUrl = ""; //打点文件下载的cos url,默认“” + public String txtFileMd5 = ""; //轨迹文件md5,默认“” + public long contrailSaveTime; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖 + public String carModel = ""; //[optional] 车型号(如红旗H9),默认“”,暂不加入校验逻辑、用于人工排查问题 + public String csvFileUrlDPQP = ""; //轨迹文件下载的cos url,默认“” + public String csvFileMd5DPQP = ""; //轨迹文件md5,默认“” + public String txtFileUrlDPQP = ""; //打点文件下载的cos url,默认“” + public String txtFileMd5DPQP = ""; //轨迹文件md5,默认“” + public long contrailSaveTimeDPQP; //上传轨迹完成时间戳ms:用于MEC本地手动导入轨迹验证时不会被云端轨迹覆盖 + + public List getSites() { return sites; } diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt index b4376da0f7..ffd5e88188 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/model/BusPassengerModel.kt @@ -10,12 +10,16 @@ import com.mogo.commons.AbsMogoApplication import com.mogo.commons.debug.DebugConfig import com.mogo.commons.module.intent.IMogoIntentListener import com.mogo.commons.module.intent.IntentManager +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLonLat import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.map.MogoLocation import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener +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.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager @@ -39,7 +43,9 @@ import com.mogo.och.bus.passenger.net.BusPassengerServiceManager import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager.startLoopAbnormalFactors import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager.stopLoopAbnormalFactors +import com.mogo.och.common.module.manager.OCHAdasAbilityManager import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil +import com.mogo.och.common.module.utils.PinYinUtil import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import system_master.SystemStatusInfo @@ -53,6 +59,7 @@ object BusPassengerModel { private const val TAG = "BusPassengerModel" private const val MSG_QUERY_BUS_P_STATION = 1001 + private const val VEHICLE_TYPE = 10 // 线路所有的轨迹点 private val mRoutePoints: MutableList = ArrayList() @@ -97,7 +104,6 @@ object BusPassengerModel { fun init(){ AbsMogoApplication.getApp().also { this.mContext = it } initListeners() - // TODO: 2022/3/31 // 启动轮询查询司机登录状态 queryDriverOperationStatus() // 轮询获取车辆线路信息 @@ -496,4 +502,99 @@ object BusPassengerModel { BusPassengerModelLoopManager.getInstance().stopQueryDriverLineLoop() } } + + +// private fun initAutopilotControlParameters(leaveIndex: Int): AutopilotControlParameters? { +// var currentStation: BusPassengerStation +// var nextStation: BusPassengerStation +// if (leaveIndex < 0) { +// if (mPreRouteIndex + 1 > mStations.size - 1) { +// CallerLogger.e(SceneConstant.M_BUS + TAG, "行程日志-mismatch condition1.") +// return null +// } +// currentStation = mStations[mPreRouteIndex] +// nextStation = mStations[mPreRouteIndex + 1] +// } else { +// if (leaveIndex + 1 > mStations.size - 1) { +// CallerLogger.e(SceneConstant.M_BUS + TAG, "行程日志-mismatch condition2.") +// return null +// } +// currentStation = mStations[leaveIndex] +// nextStation = mStations[leaveIndex + 1] +// } +// val parameters = AutopilotControlParameters() +// routesResult?.let { +// parameters.routeID = it.lineId +// parameters.routeName = it.name +// parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.name) +// parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.name) +// parameters.startLatLon = AutoPilotLonLat(currentStation.lat, currentStation.lon) +// parameters.endLatLon = AutoPilotLonLat(nextStation.lat, nextStation.lon) +// parameters.vehicleType = VEHICLE_TYPE +// if (parameters.autoPilotLine == null) { +// parameters.autoPilotLine = AutoPilotLine( +// it.lineId.toLong(), +// it.csvFileUrl, it.csvFileMd5, +// it.txtFileUrl, it.txtFileMd5, +// it.contrailSaveTime, it.carModel, +// it.csvFileUrlDPQP, it.csvFileMd5DPQP, +// it.txtFileUrlDPQP, it.txtFileMd5DPQP, +// it.contrailSaveTimeDPQP +// ) +// } +// } +// +// return parameters +// } +// +// /** +// * 开启自动驾驶 +// * +// * @param isRestart +// */ +// private fun startAutopilot(isRestart: Boolean, leaveIndex: Int) { +// if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) { +// ToastUtils.showLong( +// OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason + +// ", 请稍候重试" +// ) +// triggerUnableStartAPReasonEvent() +// return +// } +// triggerStartServiceEvent(isRestart, false) +// val parameters = initAutopilotControlParameters(leaveIndex) +// if (null == parameters) { +// CallerLogger.e(SceneConstant.M_BUS + TAG, "行程日志-AutopilotControlParameters is empty.") +// return +// } +// CallerAutoPilotControlManager.startAutoPilot(parameters) +// CallerLogger.d( +// SceneConstant.M_BUS + TAG, +// "行程日志-开启自动驾驶====" + com.elegant.network.utils.GsonUtil.jsonFromObject(parameters) +// + " startLatLon=" + parameters.startName + ",endLatLon=" + parameters.endName + +// "isRestart = " + isRestart +// ) +// } +// fun triggerUnableStartAPReasonEvent() { +// if (mStations == null || mPreRouteIndex >= mStations.size - 1) { +// return +// } +// val currentStation: BusPassengerStation = mStations.get(mPreRouteIndex) +// val nextStation: BusPassengerStation = mStations.get(mPreRouteIndex + 1) +// BusAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( +// currentStation.getName(), nextStation.getName(), routesResult?.lineId, +// OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason +// ) +// } +// fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) { +// if (mStations == null || mPreRouteIndex >= mStations.size - 1) { +// return +// } +// val currentStation: BusPassengerStation = mStations.get(mPreRouteIndex) +// val nextStation: BusPassengerStation = mStations.get(mPreRouteIndex + 1) +// BusAnalyticsManager.getInstance().triggerStartAutopilotEvent( +// isRestart, send, +// currentStation.getName(), nextStation.getName(), routesResult?.lineId +// ) +// } } \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt index 949bde9277..b0b02a1b8a 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusBasePassengerFunctionDevicePresenter.kt @@ -2,7 +2,30 @@ package com.mogo.och.bus.passenger.presenter import com.mogo.commons.mvp.IView import com.mogo.commons.mvp.Presenter -import com.mogo.och.bus.passenger.ui.BusPassengerFunctionDeviceFragment +import io.reactivex.Observable +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import java.util.concurrent.TimeUnit abstract class BusBasePassengerFunctionDevicePresenter(view: V) : - Presenter(view) \ No newline at end of file + Presenter(view) { + fun disposeSubscribe(subscribe: Disposable?) { + subscribe?.let { + if (!it.isDisposed) { + it.dispose() + } + } + } + + fun createSubscribe(delay: Long=2000, function: () -> Unit): Disposable? { + return Observable.timer(delay, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { + function.invoke() + } + } + + companion object{ + const val DEVICE_ACTION_TIMEOUT=2000 + } +} \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionDevicePresenter.kt b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionDevicePresenter.kt index 7cdde046fa..6bb3556ce7 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionDevicePresenter.kt +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionDevicePresenter.kt @@ -16,80 +16,61 @@ class BusPassengerFunctionDevicePresenter(view: BusPassengerFunctionDeviceFragme BusBasePassengerFunctionDevicePresenter(view), OCHM1LightAirconditionDoorStatusManager.OCHM1LightAirconditionDoorCallback { - private var subscribe: Disposable?=null - private var subscribeDoorStatus: Disposable?=null - companion object{ + private var subscribe: Disposable? = null + private var subscribeDoorStatus: Disposable? = null + + companion object { private const val TAG = "BusPassengerFunctionDevicePresenter" } + override fun onCreate(owner: LifecycleOwner) { super.onCreate(owner) - OCHM1LightAirconditionDoorStatusManager.addListener(TAG,this) + OCHM1LightAirconditionDoorStatusManager.addListener(TAG, this) } override fun onDestroy(owner: LifecycleOwner) { super.onDestroy(owner) OCHM1LightAirconditionDoorStatusManager.removeListener(TAG) + disposeSubscribe(subscribe) + disposeSubscribe(subscribeDoorStatus) } override fun onDoorStatusCallback(isOpen: Boolean) { - if(isOpen){ + if (isOpen) { ToastUtils.showShort("已开启车门") - }else{ + } else { ToastUtils.showShort("已关门车门") } } - fun openDoor(){ - subscribe?.let { - if (!it.isDisposed) { - it.dispose() - } + fun openDoor() { + disposeSubscribe(subscribe) + subscribe = createSubscribe(1000) { + AdasManager.getInstance().sendRoboBusJinlvM1FrontDoorCmd(0) } - subscribe = Observable.timer(1000, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - AdasManager.getInstance().sendRoboBusJinlvM1FrontDoorCmd(0) - } AdasManager.getInstance().sendRoboBusJinlvM1FrontDoorCmd(1) - subscribeDoorStatus?.let { - if (!it.isDisposed) { - it.dispose() + disposeSubscribe(subscribeDoorStatus) + subscribeDoorStatus = createSubscribe { + if (!OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) { + ToastUtils.showShort("车门无法开启,请使用车内物理按钮") } } - subscribeDoorStatus = Observable.timer(2000, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - if (!OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) { - ToastUtils.showShort("车门无法开启,请使用车内物理按钮") - } - } } - fun closeDoor(){ - subscribe?.let { - if (!it.isDisposed) { - it.dispose() - } + fun closeDoor() { + disposeSubscribe(subscribe) + subscribe = createSubscribe(1000) { + AdasManager.getInstance().sendRoboBusJinlvM1FrontDoorCmd(0) } - subscribe = Observable.timer(1000, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - AdasManager.getInstance().sendRoboBusJinlvM1FrontDoorCmd(0) - } AdasManager.getInstance().sendRoboBusJinlvM1FrontDoorCmd(2) - subscribeDoorStatus?.let { - if (!it.isDisposed) { - it.dispose() + disposeSubscribe(subscribeDoorStatus) + subscribeDoorStatus = createSubscribe { + if (OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) { + ToastUtils.showShort("车门无法关闭,请使用车内物理按钮") } } - subscribeDoorStatus = Observable.timer(2000, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - if (OCHM1LightAirconditionDoorStatusManager.doorStatus.isOpen) { - ToastUtils.showShort("车门无法关闭,请使用车内物理按钮") - } - } } + // 靠边停车 fun startStopSide() { when (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state) { diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt index e751066beb..75204caf2d 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt @@ -4,9 +4,11 @@ import androidx.lifecycle.LifecycleOwner import com.mogo.commons.mvp.Presenter import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.bus.passenger.ui.BusPassengerFunctionSoftFragment import com.mogo.och.common.module.manager.OCHM1LightAirconditionDoorStatusManager import com.zhidao.support.adas.high.AdasManager +import io.reactivex.disposables.Disposable class BusPassengerFunctionSoftPresenter(view: BusPassengerFunctionSoftFragment?) : BusBasePassengerFunctionDevicePresenter(view), @@ -15,6 +17,10 @@ class BusPassengerFunctionSoftPresenter(view: BusPassengerFunctionSoftFragment?) private const val TAG = "BusPassengerFunctionSoftPresenter" } + private var subscribeLightTop1: Disposable?=null + private var subscribeLightTop2: Disposable?=null + private var subscribeLightAtmosphere: Disposable?=null + override fun onCreate(owner: LifecycleOwner) { super.onCreate(owner) OCHM1LightAirconditionDoorStatusManager.addListener(TAG, this) @@ -95,26 +101,59 @@ class BusPassengerFunctionSoftPresenter(view: BusPassengerFunctionSoftFragment?) fun setLightData1(leftLight: Boolean){ CallerLogger.d(SceneConstant.M_BUS_P + TAG, "顶灯2:$leftLight") + disposeSubscribe(subscribeLightTop1) if(leftLight){ AdasManager.getInstance().sendRoboBusJinlvM1MainLamp1Cmd(1) + subscribeLightTop1 = createSubscribe{ + if (!OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { + ToastUtils.showShort("操作未生效,请稍后重试吧~") + } + } }else{ AdasManager.getInstance().sendRoboBusJinlvM1MainLamp1Cmd(2) + subscribeLightTop1 = createSubscribe{ + if (OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { + ToastUtils.showShort("操作未生效,请稍后重试吧~") + } + } } } fun setLightData2(rightLight: Boolean){ CallerLogger.d(SceneConstant.M_BUS_P + TAG, "顶灯1:$rightLight") + disposeSubscribe(subscribeLightTop2) if(rightLight){ AdasManager.getInstance().sendRoboBusJinlvM1MainLamp2Cmd(1) + subscribeLightTop2 = createSubscribe{ + if (!OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { + ToastUtils.showShort("操作未生效,请稍后重试吧~") + } + } }else{ AdasManager.getInstance().sendRoboBusJinlvM1MainLamp2Cmd(2) + subscribeLightTop2 = createSubscribe{ + if (OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { + ToastUtils.showShort("操作未生效,请稍后重试吧~") + } + } } } fun setAtmosphereLightData2(atmosphereLight: Boolean){ CallerLogger.d(SceneConstant.M_BUS_P + TAG, "氛围灯:$atmosphereLight") + disposeSubscribe(subscribeLightAtmosphere) if (atmosphereLight) { AdasManager.getInstance().sendRoboBusJinlvM1SmallLampCmd(1) + subscribeLightAtmosphere = createSubscribe{ + if (!OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { + ToastUtils.showShort("操作未生效,请稍后重试吧~") + } + } } else { AdasManager.getInstance().sendRoboBusJinlvM1SmallLampCmd(2) + subscribeLightAtmosphere = createSubscribe{ + if (OCHM1LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { + ToastUtils.showShort("操作未生效,请稍后重试吧~") + } + } } } } \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt index 62df50f569..9ad9fdfb8a 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/presenter/BusPassengerPresenter.kt @@ -69,7 +69,7 @@ class BusPassengerPresenter(view: BusPassengerRouteFragment?) : val beforeTime = Calendar.getInstance() beforeTime.add(Calendar.MINUTE, surplusTime) //到达时间 - val arriveTime = DateTimeUtil.formatCalendarToString(beforeTime, DateTimeUtil.TAXI_HH_mm) + val arriveTime = DateTimeUtil.formatCalendarToString(beforeTime, DateTimeUtil.HH_mm) setDistanceAndTime(dis.toString(),disUnit,surplusTime.toString(),arriveTime) } diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerFunctionSoftFragment.kt b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerFunctionSoftFragment.kt index 10608d4807..680746a882 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerFunctionSoftFragment.kt +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerFunctionSoftFragment.kt @@ -100,23 +100,11 @@ class BusPassengerFunctionSoftFragment : CallerLogger.d(SceneConstant.M_BUS_P + TAG, "调节模式") when (checkedId) { R.id.rb_pattern_heating -> { - if(!rb_pattern_heating.isPressed){ - return@setOnCheckedChangeListener - } SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - if (!tv_aircondition_switch.isChecked) { - return@setOnCheckedChangeListener - } openHeater() } R.id.rb_pattern_automatic->{ - if(!rb_pattern_automatic.isPressed){ - return@setOnCheckedChangeListener - } SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - if (!tv_aircondition_switch.isChecked) { - return@setOnCheckedChangeListener - } openAircondition() } R.id.rb_pattern_refrigeration->{ @@ -124,9 +112,6 @@ class BusPassengerFunctionSoftFragment : return@setOnCheckedChangeListener } SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - if (!tv_aircondition_switch.isChecked) { - return@setOnCheckedChangeListener - } openAircondition() } R.id.rb_pattern_ventilate->{ @@ -134,9 +119,6 @@ class BusPassengerFunctionSoftFragment : return@setOnCheckedChangeListener } SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - if (!tv_aircondition_switch.isChecked) { - return@setOnCheckedChangeListener - } openAircondition() } else -> { @@ -166,9 +148,6 @@ class BusPassengerFunctionSoftFragment : else -> {} } SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - if (!tv_aircondition_switch.isChecked) { - return@setOnCheckedChangeListener - } if (rg_setting_pattern.checkedRadioButtonId == R.id.rb_pattern_heating) {//暖风机 openHeater() } else { @@ -206,9 +185,6 @@ class BusPassengerFunctionSoftFragment : SoundPoolHelper.getSoundPoolHelper() .playSoundWithRedId(context, R.raw.bus_di) } - if (!tv_aircondition_switch.isChecked) { - return@setOnScrollStopListener - } openAircondition() } @@ -268,6 +244,9 @@ class BusPassengerFunctionSoftFragment : R.id.rb_wind_speed_high -> windSpeedCmd = 3 // 3档 else -> {} } + if (!tv_aircondition_switch.isChecked) { + return + } mPresenter?.openAndSetAircondition(modeCmd, windSpeedCmd, temperatureCmd) } @@ -329,6 +308,9 @@ class BusPassengerFunctionSoftFragment : private fun closeHeater() { CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风") heaterAirEnable(true) + if (!tv_aircondition_switch.isChecked) { + return + } mPresenter?.closeHeader() } @@ -348,6 +330,9 @@ class BusPassengerFunctionSoftFragment : private fun openHeater() { CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风") heaterAirEnable(false) + if (!tv_aircondition_switch.isChecked) { + return + } closeAircondition()//关闭空调 when (rg_setting_windspeed.checkedRadioButtonId) { R.id.rb_wind_speed_low -> { diff --git a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.kt b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.kt index a0f96fb8d7..43519e473c 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.kt +++ b/OCH/mogo-och-bus-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.kt @@ -51,6 +51,7 @@ class BusPassengerRouteFragment : ToggleDebugView.toggleDebugView.toggle(requireContext()) true } + omvOverMap.hideResetView() } private fun openSettingPage(tab:String) { diff --git a/OCH/mogo-och-bus-passenger/src/m1/res/layout/bus_p_fragment.xml b/OCH/mogo-och-bus-passenger/src/m1/res/layout/bus_p_fragment.xml index 35d7fe68b6..25a2792236 100644 --- a/OCH/mogo-och-bus-passenger/src/m1/res/layout/bus_p_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/m1/res/layout/bus_p_fragment.xml @@ -14,6 +14,8 @@ app:layout_constraintBottom_toBottomOf="parent"/>