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 40c9647688..8a87dae3aa 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 @@ -1,14 +1,21 @@ package com.magic.mogo.och.charter.manager +import com.magic.mogo.och.charter.R import com.magic.mogo.och.charter.constant.CharterConst import com.magic.mogo.och.charter.model.DriverM1Model.Companion.get import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters.AutoPilotLine +import com.mogo.eagle.core.data.msgbox.MsgBoxBean +import com.mogo.eagle.core.data.msgbox.MsgBoxType +import com.mogo.eagle.core.data.msgbox.OperationMsg import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.sendTrajectoryDownloadReq +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.ActivityUtils import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.och.common.module.biz.constant.LoginStatusManager +import com.mogo.och.common.module.utils.SoundPoolHelper import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -80,6 +87,16 @@ object CharterTrajectoryManager { // 5. 轨迹管理_轨迹下载超时 d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() 轨迹下载超时") // ToastUtils.showShort("轨迹下载超时"); + } else if ("IMAP_TRA_LOADED" == guardianInfo.getCode()) { + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OPERATION, + OperationMsg( + System.currentTimeMillis(), "请尽快操作车辆至适当位置掉头!", -1 + ) + ) + ) + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot) } else if ("ISSM_FUNC_AUTO_PILOT_READY" == guardianInfo.getCode()) { // 收到ssm的自动驾驶变为ready,再次下发轨迹下载.解决:域控重启,或者102域控启动太早,107节点初始化未完成导致的轨迹未进行下载。 d(SceneConstant.M_CHARTER_D + TAG, "onAutopilotGuardian() ssm ready,再次发起下载") diff --git a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt index ab9161791e..0348fab89c 100644 --- a/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt +++ b/OCH/charter/driver/src/driverm1/java/com/magic/mogo/och/charter/model/DriverM1Model.kt @@ -23,12 +23,16 @@ 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.map.MogoLocation +import com.mogo.eagle.core.data.msgbox.MsgBoxBean +import com.mogo.eagle.core.data.msgbox.MsgBoxType +import com.mogo.eagle.core.data.msgbox.OperationMsg import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.startAutoPilot 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.msgbox.CallerMsgBoxManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.sendMsgToAllClients import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -76,8 +80,8 @@ class DriverM1Model { // 运营类型 private val VEHICLE_TYPE : Int = 10 - private var mControllerStatusCallback //Model->Presenter:VR mode等 - : IDriverM1ControllerStatusCallback? = null + //Model->Presenter:VR mode等 + private var mControllerStatusCallback: IDriverM1ControllerStatusCallback? = null private var mOrderCallback: DriverM1OrderCallback? = null @@ -110,7 +114,7 @@ class DriverM1Model { fun init(context: Context) { mContext = context // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10,mMapLocationListener) + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 10, mMapLocationListener) //开启自驾后 异常信息返回 OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener) @@ -118,18 +122,20 @@ class DriverM1Model { // 监听运营信息 registerSocketMessageListener( OCHSocketMessageManager.msgMonitorType, - mOnSystemMessageListener) + mOnSystemMessageListener + ) //监听开门 registerSocketMessageListener( OCHSocketMessageManager.msgOperateDoorType, - mOnDoorMessageListener) + mOnDoorMessageListener + ) //监听订单结束 registerSocketMessageListener( OCHSocketMessageManager.msgOrderClosedType, - mOnOrderClosedMessageListener) - + mOnOrderClosedMessageListener + ) //监听核销乘客 - registerSocketMessageListener( //监听核销乘客 + registerSocketMessageListener( OCHSocketMessageManager.msgWriteOffPassengerType, mWriteOffPassengerOnMessageListener ) @@ -149,45 +155,7 @@ class DriverM1Model { // 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃 // The exception could not be delivered to the consumer because it has already canceled/disposed // the flow or the excTeption has nowhere to go to begin with - RxJavaPlugins.setErrorHandler(object : Consumer { - override fun accept(e: Throwable?) { - var e = e - if (e is UndeliverableException) { - e = e.cause!! - d(SceneConstant.M_CHARTER_D + TAG, "UndeliverableException") - } - if (e is IOException) { // - // fine, irrelevant network problem or API that throws on cancellation - d(SceneConstant.M_CHARTER_D + TAG, "IOException") - return - } - if (e is InterruptedException) { - // fine, some blocking code was interrupted by a dispose call - d(SceneConstant.M_CHARTER_D + TAG, "InterruptedException") - return - } - if (e is NullPointerException || e is IllegalArgumentException) { - // that's likely a bug in the application - d(SceneConstant.M_CHARTER_D + TAG, "NullPointerException or IllegalArgumentException") - Thread.currentThread().uncaughtExceptionHandler.uncaughtException( - Thread.currentThread(), - e - ) - return - } - if (e is IllegalStateException) { - // that's a bug in RxJava or in a custom operator - d(SceneConstant.M_CHARTER_D + TAG, "IllegalStateException") - Thread.currentThread().uncaughtExceptionHandler.uncaughtException( - Thread.currentThread(), - e - ) - return - } - d(SceneConstant.M_CHARTER_D + TAG, "Undeliverable exception") - } - - }) + RxUtils.errCatch() } fun setChangeDestCallback(callback: ChangeDestCallback?){ @@ -267,18 +235,18 @@ class DriverM1Model { private fun showChangerDestCommitDialog(changeDestMsg: ChangeDestMsg) { if (!TextUtils.isEmpty(changeDestMsg.destSiteName) && !TextUtils.isEmpty(changeDestMsg.lineName)){ - if (changeDestMsg.lineId == currentChangeDestMsg?.lineId){//同一条路线切换站点不需要再确认 + //if (changeDestMsg.lineId == currentChangeDestMsg?.lineId){//同一条路线切换站点不需要再确认 currentChangeDestMsg = changeDestMsg changeDest() return - } + //} 不用司机端确认直接保存 - currentChangeDestMsg = changeDestMsg +// currentChangeDestMsg = changeDestMsg - UiThreadHandler.post{ - mChangeDestCallback?.showCommitDialog("确认路线站点", - "请确认是否前往 "+ changeDestMsg.lineName+ changeDestMsg.destSiteName + " 站点") - } +// UiThreadHandler.post{ +// mChangeDestCallback?.showCommitDialog("确认路线站点", +// "请确认是否前往 "+ changeDestMsg.lineName+ changeDestMsg.destSiteName + " 站点") +// } } } @@ -819,6 +787,17 @@ class DriverM1Model { CallerAutoPilotControlManager.cancelAutoPilot() queryCurrentServiceStatus() sendCommitMsgToClient(true,writeVersion) + CallerMsgBoxManager.saveMsgBox( + MsgBoxBean( + MsgBoxType.OPERATION, + OperationMsg( + System.currentTimeMillis(), + "即将前往路线${currentChangeDestMsg!!.lineName}、站点${currentChangeDestMsg!!.destSiteName};如需掉头请尽快操作车辆至适当位置!", + -1 + ) + ) + ) + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(ActivityUtils.getTopActivity(), R.raw.startautopilot) } } diff --git a/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml b/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml index 08318efc67..6a13691666 100644 --- a/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml +++ b/OCH/charter/driver/src/main/res/layout/charter_base_fragment.xml @@ -159,16 +159,6 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - - () - // 定位监听 - private val mControllerStatusCallbackMap = - ConcurrentHashMap() - - // 当前位置坐标 - private var mLocationGCJ02: MogoLocation? = null - // 订单信息 有订单有线路结束订单 @Volatile private var orderInfo: OrderInfoResponse.OrderInfo? = null @@ -135,7 +128,6 @@ object CharterPassengerModel { private fun releaseListeners() { CallerAutoPilotStatusListenerManager.removeListener(mGoAutopilotStatusListener) - CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) CallerPlanningRottingListenerManager.removeListener(moGoAutopilotPlanningListener) } @@ -145,8 +137,6 @@ object CharterPassengerModel { .registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener) // 自动驾驶状态变化监听 CallerAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener) - // 定位监听 - CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 4, mMapLocationListener) // 自动驾驶路线规划接口 返回自动驾驶轨迹 CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener) // 登录状态监听 @@ -154,14 +144,6 @@ object CharterPassengerModel { } // region 设置业务回调 - fun setControllerStatusCallback(tag: String, callback: IBusPassengerControllerStatusCallback?) { - if (tag.isBlank()) return - if (callback == null) { - mControllerStatusCallbackMap.remove(tag) - return - } - mControllerStatusCallbackMap[tag] = callback - } fun setAutoStatusCallback(tag: String, callback: ICharterPassengerAutoStatusChangeCallback?) { if (tag.isBlank()) return @@ -201,18 +183,6 @@ object CharterPassengerModel { // endregion // region 设置外部回调 - // 定位监听 - private val mMapLocationListener: IMoGoChassisLocationGCJ02Listener = - object : IMoGoChassisLocationGCJ02Listener { - override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { - if (null == mogoLocation) return - mLocationGCJ02 = mogoLocation - for (callback in mControllerStatusCallbackMap.values) { - callback.onCarLocationChanged(mogoLocation) - } - } - } - // 自动驾驶状态监听 private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener = object : IMoGoAutopilotStatusListener { @@ -222,6 +192,15 @@ object CharterPassengerModel { } } + override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { + super.onAutopilotGuardian(guardianInfo) + guardianInfo?.let { + if (it.code=="IMAP_TRA_LOADED") { + ToastCharterUtils.showShort("请等待车辆完成掉头后再出发吧~") + } + } + } + override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) { d(M_BUS_P + TAG, "底盘给到站信息") arriveDest() @@ -387,17 +366,11 @@ object CharterPassengerModel { d(M_BUS_P + TAG, "设置车模") } if (this.orderInfo?.siteId != orderData.siteId) { - val coordinateConverterWgsToGcj = - CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj( - mContext, - order.wgs84Lon!!, - order.wgs84Lat!! - ) this.carTypeChageListener?.setEndStationCallBack( order.siteId, order.siteName, - coordinateConverterWgsToGcj.longitude, - coordinateConverterWgsToGcj.latitude + order.gcj02Lon!!, + order.gcj02Lat!! ) } this.orderInfo?.orderNo?.let { @@ -422,19 +395,13 @@ object CharterPassengerModel { this.orderInfo = orderData } //计算终点距离 - mLocationGCJ02?.let { currentInfo -> + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { currentInfo -> // 两点之间的距离 - val coordinateConverterWgsToGcj = - CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj( - mContext, - order.wgs84Lon!!, - order.wgs84Lat!! - ) val calculateLineDistance = CoordinateUtils.calculateLineDistance( currentInfo.longitude, currentInfo.latitude, - coordinateConverterWgsToGcj.longitude, - coordinateConverterWgsToGcj.latitude + order.gcj02Lon!!, + order.gcj02Lat!! ) // 小于15m到站 if (calculateLineDistance < CharterPassengerConst.ARRIVE_AT_START_STATION_DISTANCE && calculateLineDistance > 0) { @@ -520,7 +487,7 @@ object CharterPassengerModel { if (data.orderNo != null && data.orderNo.isNotEmpty()) {// 订单进行中 return } - // 结束路距计算 + // 结束路距计算 订单结束了 endCalculateDistanceLoop() // 停止时间校准 endCalibrationLoop() @@ -673,7 +640,7 @@ object CharterPassengerModel { */ private fun calculateDistance() { //mLocation gcj坐标 - mLocationGCJ02?.let { + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { orderInfo?.let { order -> d(M_BUS_P + "calculateDistance", "订单信息:$order") if (order.siteId == null || order.siteId == 0L || @@ -691,15 +658,9 @@ object CharterPassengerModel { } // 启动轨迹计算 var lastSumLength = 0f - val orderLonLat = - CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj( - mContext, - order.wgs84Lon!!, - order.wgs84Lat!! - ) val mogoLocation = MogoLocation() - mogoLocation.longitude = orderLonLat.longitude - mogoLocation.latitude = orderLonLat.latitude + mogoLocation.longitude = order.gcj02Lon!! + mogoLocation.latitude = order.gcj02Lat!! lastSumLength = CoordinateUtils.calculateLineDistance( it.longitude, @@ -785,7 +746,7 @@ object CharterPassengerModel { var distanceMap: MutableMap = TreeMap() // 计算所有点的距离 data.forEachIndexed { index, siteInfo -> - mLocationGCJ02?.let { currentInfo -> + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { currentInfo -> // 两点之间的距离 val calculateLineDistance = CoordinateUtils.calculateLineDistance( currentInfo.longitude, @@ -833,7 +794,7 @@ object CharterPassengerModel { if (middle == 0) { return Pair(1, false) } - mLocationGCJ02?.let { + CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { // 仅计算 距离最近的站点middle 附近5个坐标的夹角 // middle middle-1 // middle middle+1 @@ -987,7 +948,7 @@ object CharterPassengerModel { cleanRoutePoints() // 到站结束自驾 CallerAutoPilotControlManager.cancelAutoPilot() - // 结束路距计算 + // 结束路距计算 到达目的站点 endCalculateDistanceLoop() // 到站置距离位0 invokeStationDistanceListener(-1, -1) @@ -1037,7 +998,7 @@ object CharterPassengerModel { } // 到站结束自驾 CallerAutoPilotControlManager.cancelAutoPilot() - // 停止路距计算 + // 停止路距计算 选择新的站点后 endCalculateDistanceLoop() // 到站置距离位0 invokeStationDistanceListener(-1, -1) @@ -1104,9 +1065,6 @@ object CharterPassengerModel { if (!checkCurrentOCHOrder()) { e(M_BUS_P + TAG, "no order or order is empty.") return null - } - mLocationGCJ02?.let { - } val parameters = AutopilotControlParameters() orderInfo?.let { orderInfo -> diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt deleted file mode 100644 index c21f7a0707..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionOrderPresenter.kt +++ /dev/null @@ -1,385 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import androidx.lifecycle.LifecycleOwner -import com.elegant.utils.UiThreadHandler -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.autopilot.CallerChassisLocationGCJ02ListenerManager -import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager -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.GsonUtils -import com.mogo.och.bus.passenger.utils.ToastCharterUtils -import com.mogo.och.common.module.manager.loopmanager.LoopInfo -import com.mogo.och.bus.passenger.bean.event.EventLineSites -import com.mogo.och.bus.passenger.bean.response.LineInfoListResponse -import com.mogo.och.bus.passenger.bean.response.LineInfoResponse -import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener -import com.mogo.och.bus.passenger.model.OrderStatusEnum -import com.mogo.och.common.module.manager.loopmanager.BizLoopManager -import com.mogo.och.bus.passenger.net.BusPassengerServiceManager -import com.mogo.och.bus.passenger.ui.selectline.M1OrderLineFragment -import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg -import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg -import com.mogo.och.common.module.bean.dpmsg.DPMsgType -import com.mogo.och.common.module.bean.dpmsg.LineSite -import com.mogo.och.common.module.biz.constant.OchCommonConst -import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.manager.StopSideStatusManager -import com.mogo.och.common.module.utils.RxUtils -import io.reactivex.disposables.Disposable -import org.greenrobot.eventbus.EventBus - -class BusPassengerFunctionOrderPresenter(view: M1OrderLineFragment?) : - BusBasePassengerFunctionDevicePresenter(view), IOrderStatusChangeListener { - - companion object{ - const val TAGLINELOOP = "LineSiteViewLineLoop" - const val TAG = "BusPassengerFunctionOrderPresenter" - } - - // 成功提交给后台得线路 - private var checkLine: LineInfoResponse.LineInfo? = null - - // 成功提交给后台得终点站点 - private var checkSite: SiteInfoResponse.SiteInfo? = null - - // 下一个站点 - private var currentSite: SiteInfoResponse.SiteInfo? = null - - // 向司机端端提交的临时线路 - private var tempCheckLine: LineInfoResponse.LineInfo? = null - - // 向司机端临时提交的终点站点 - private var tempCheckSite: SiteInfoResponse.SiteInfo? = null - - private var subscribeSelectSite: Disposable? = null - - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - CharterPassengerModel.setStatusChangeListener(TAG,this) - CallerTelematicListenerManager.addListener(TAG, msgReceived) - val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus() - needRunUI(currentOrderStatus) - extracted() - } - - private fun extracted() { - val currentOrderStatus = CharterPassengerModel.getCurrentOrderStatus() - if (currentOrderStatus == OrderStatusEnum.OrderNoLine || currentOrderStatus == OrderStatusEnum.OrdersWithLine) { - val hasSetLineAndSite = CharterPassengerModel.hasSetLineAndSite() - if (hasSetLineAndSite != null) {// 已经设置了线路和站点 - checkLine = hasSetLineAndSite.first - checkSite = hasSetLineAndSite.second - } - mView?.setEnableSiteStatus(false) - queryLineList() - } - } - - /** - * 重置数据 - */ - fun resetData() { - tempCheckLine = null - tempCheckSite = null - if(checkLine==null){// 没有提交线路 - queryLineList() - mView?.setEnableSiteStatus(true) - }else{ - checkLine?.let { - mView?.setEnableSiteStatus(false) - mView?.lineAdapterSubmit(it) - querySitesByLineId(it) - } - } - } - - private fun querySitesByLineId(checkLine: LineInfoResponse.LineInfo) { - context?.let { - BusPassengerServiceManager.queryLineSiteList( - context, - checkLine.lineId.toString(), - object : OchCommonServiceCallback { - override fun onSuccess(data: SiteInfoResponse?) { - if (data?.data == null) return - val siteInfos = data.data - EventBus.getDefault().post(EventLineSites(checkLine,siteInfos,false)) - if (siteInfos.isNotEmpty()) { - // 计算当前站点是那个 - val calculateCurrentSite = - CharterPassengerModel.calculateCurrentSite(siteInfos) - val first = calculateCurrentSite.first// 可用站点 - if(first<0){ - // 所有站点不可用 - currentSite = siteInfos[siteInfos.size-1] - currentSite!!.isNear = calculateCurrentSite.second - mView?.siteAdapterEnableIndex(siteInfos.size-1) - }else{ - // - val index = if(first==0) { - 0 - }else if (first <= siteInfos.size-1) { - first-1 - } else { - siteInfos.size - 1 - } - currentSite = siteInfos[index] - currentSite!!.isNear = calculateCurrentSite.second - mView?.siteAdapterEnableIndex(index) - } - siteInfos.forEach { - if (it.siteId == checkSite?.siteId) { - it.isCheck = true - return@forEach - } - } - } - mView?.siteAdapterSetData(siteInfos) - } - - override fun onFail(code: Int, msg: String?) { - ToastCharterUtils.showShort("查询站点失败") - mView?.setVisableByTrun(showNetError = true) - } - - override fun onError() { - super.onError() - ToastCharterUtils.showShort("查询站点失败") - mView?.setVisableByTrun(showNetError = true) - } - }) - } - } - - private fun queryLineList() { - mView?.setVisableByTrun(showLoading = true) - context?.let { - BusPassengerServiceManager.queryLineList(it, object : - OchCommonServiceCallback { - override fun onSuccess(data: LineInfoListResponse?) { - if (data?.data == null) return - mView?.setVisableByTrun(showBiz = true) - mView?.lineAdapterSetData(data.data,checkLine) - } - - override fun onFail(code: Int, msg: String) { - ToastCharterUtils.showShort("查询线路失败") - mView?.setVisableByTrun(showNetError = true) - } - - override fun onError() { - super.onError() - mView?.setVisableByTrun(showNetError = true) - } - }) - } - } - - override fun onResume(owner: LifecycleOwner) { - super.onResume(owner) - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - CallerLogger.d(M_BUS_P + TAG, "onDestroy") - RxUtils.disposeSubscribe(subscribeSelectSite) - BizLoopManager.removeLoopFunction(TAGLINELOOP) - CharterPassengerModel.setStatusChangeListener(TAG,null) - CallerTelematicListenerManager.removeListener(TAG) - } - - /** - * 接收司机屏反馈信息 - */ - private val msgReceived = object : IReceivedMsgListener { - override fun onReceivedMsg(type: Int, byteArray: ByteArray) { - UiThreadHandler.post { - if (type == OchCommonConst.BUSINESS_STRING) { - val msg = GsonUtils.fromJson( - String(byteArray), - BaseDPMsg::class.java - ) as BaseDPMsg - if (msg.type == DPMsgType.TYPE_CHANGE_DEST.type) { - val msg = GsonUtils.fromJson( - String(byteArray), - ChangeDestMsg::class.java - ) as ChangeDestMsg - CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "接受数据:切换站点${msg}") - if (msg.isConfirmed) { - if(msg.arriveStatus==2){ - return@post - } - ToastCharterUtils.showShort("站点确定") - mView?.setEnableSiteStatus(true) - checkLine = tempCheckLine - checkSite = tempCheckSite - tempCheckLine = null - tempCheckSite = null - checkLine?.let { - mView?.lineAdapterSubmit(it) - } - mView?.hideDataDriverAgree() - CharterPassengerModel.cleanbroadcastListInfo(checkSite) - CharterPassengerModel.queryOrder() - } else { - ToastCharterUtils.showShort("司机端拒绝请重新选择") - mView?.hideDataDriverRefuse() - } - RxUtils.disposeSubscribe(subscribeSelectSite) - BizLoopManager.removeLoopFunction(TAGLINELOOP) - } - } - } - } - } - - fun changeSites(siteList: MutableList){ - if (!CallerTelematicManager.getClientConnStatus()) { - ToastCharterUtils.showLong("乘客屏无法连接司机屏请联系安全员") - return - } - val sentDataSite: MutableList = mutableListOf() - siteList.forEach { - sentDataSite.add(it.copy2Mas()) - } - - tempCheckSite?.let { siteInfo -> - val orderNo = CharterPassengerModel.getCurrentOrderInfo()?.orderNo ?: "" - val msg = ChangeDestMsg( - orderNo, - siteInfo.lineId!!.toInt(), - siteInfo.lineName!!, - currentSite!!.siteId!!.toInt(), - currentSite!!.siteName!!, - siteInfo.siteId!!.toInt(), - siteInfo.siteName!!, - false, - 1, - 0, - sentDataSite - ) - CallerTelematicManager.sendMsgToServer( - OchCommonConst.BUSINESS_STRING, - GsonUtils.toJson(msg).toByteArray() - ) - CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "发送数据:切换站点${msg}") - } - mView?.hideDataWaitDriverMsg() - // 启动查看和司机端链接 - BizLoopManager.setLoopFunction( - TAGLINELOOP, - LoopInfo(3, ::checkServerStatus) - ) - - RxUtils.disposeSubscribe(subscribeSelectSite) - subscribeSelectSite = RxUtils.createSubscribe(120_000){ - ToastCharterUtils.showShort("请联系安全员确认") - mView?.hideDataDriverRefuse() - } - } - private fun checkServerStatus() { - if (!CallerTelematicManager.getClientConnStatus()) { - ToastCharterUtils.showShort("断开和司机端连接、请联系安全员") - BizLoopManager.removeLoopFunction(TAGLINELOOP) - mView?.hideDataDriverRefuse() - CallerLogger.d(M_BUS_P + TAG, "endAni666") - } - } - - override fun onStatusChange(currentStatus: OrderStatusEnum) { - UiThreadHandler.post { - needRunUI(currentStatus) - } - } - - private fun needRunUI(currentStatus: OrderStatusEnum){ - when (currentStatus) { - OrderStatusEnum.OrderNoLine -> { - mView?.setVisableByTrun(showBiz = true) - extracted() - } - OrderStatusEnum.OrdersWithLine ->{ - mView?.setVisableByTrun(showBiz = true) - } - else ->{ - mView?.setVisableByTrun(showNorOrder = true) - } - } - } - - fun canSwitchLine():Boolean { - val gnssSpeed = - CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed - if (gnssSpeed < 0.5) { - when (CallerAutoPilotStatusListenerManager.getState()) { - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶 - return true - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {// - return true - } - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> { - // 自动驾驶中 - return when (StopSideStatusManager.stopSiteStatus) { - StopSideStatusManager.Status.EndingSuccess -> { - true - } - else ->{ - ToastCharterUtils.showShort("自动驾驶中无法切换线路") - false - } - } - } - IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> { - ToastCharterUtils.showShort("因车辆正在平行驾驶中无法切换线路") - return false - } - else -> {} - } - } else { - ToastCharterUtils.showShort("请停车后再修改目的地~") - return false - } - return true - } - - fun checkLineClick(lineInfo: LineInfoResponse.LineInfo) { - checkLine4View() - tempCheckLine = lineInfo - querySitesByLineId(lineInfo) - } - - private fun checkLine4View(){ - tempCheckSite = null - mView?.setEnableSiteStatus(false) - } - - fun checkSiteClick(siteInfo: SiteInfoResponse.SiteInfo?) { - tempCheckSite = siteInfo - if(checkSite!=null){ - checkSite?.let { - if (it.siteId == siteInfo?.siteId) {// 站点相同 隐藏所有提交按钮 - mView?.setEnableSiteStatus(false) - } else { - if(it.lineId == siteInfo?.lineId){// 线路相同显示单独提交 - mView?.setEnableSiteStatus(true) - }else{ - if(siteInfo==null){//没有选站点隐藏所有提交 - mView?.setEnableSiteStatus(false) - }else { - mView?.setEnableSiteStatus(true) - } - } - } - } - }else{ - mView?.setEnableSiteStatus(true) - } - } - -} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionPresenter.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionPresenter.kt deleted file mode 100644 index a1668f7b62..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionPresenter.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import androidx.lifecycle.LifecycleOwner -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment - -class BusPassengerFunctionPresenter(view: M1ContainFragment?) : - BusBasePassengerFunctionDevicePresenter(view) { - companion object{ - private const val TAG = "BusPassengerFunctionPresenter" - } - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - } - - fun haveOrder(): Boolean { - return CharterPassengerModel.hasOrder() - } -} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt deleted file mode 100644 index 02c063dd99..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionSoftPresenter.kt +++ /dev/null @@ -1,245 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import androidx.lifecycle.LifecycleOwner -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager -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.UiThreadHandler -import com.mogo.och.bus.passenger.ui.softcontrol.M1SoftFragment -import com.mogo.och.bus.passenger.utils.ToastCharterUtils -import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorCallback -import com.mogo.och.common.module.manager.devicemanage.LightAirconditionDoorStatusManager -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 io.reactivex.disposables.Disposable - -class BusPassengerFunctionSoftPresenter(view: M1SoftFragment?) : - BusBasePassengerFunctionDevicePresenter(view), - LightAirconditionDoorCallback { - companion object { - private const val TAG = "BusPassengerFunctionSoftPresenter" - } - - private var subscribeLightTop1: Disposable?=null - private var subscribeLightTop2: Disposable?=null - private var subscribeLightAtmosphere: Disposable?=null - - private var airconditionDisposable: Disposable?=null - private var heaterDisposable: Disposable?=null - - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - LightAirconditionDoorStatusManager.addListener(TAG, this) - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - LightAirconditionDoorStatusManager.removeListener(TAG) - } - - /** - * 空调状态变化 - */ - override fun onAirconditionStatusCallback(heaterIsOpen: Boolean, airconditionStatus: AirconditionStatus, isFirst: Boolean) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, - "回写--空调开关:${LightAirconditionDoorStatusManager.airconditionStatus.isOpen}、" + - "空调温度:${LightAirconditionDoorStatusManager.airconditionStatus.temperature}" + - "空调模式:${LightAirconditionDoorStatusManager.airconditionStatus.pattert}" + - "空调风速:${LightAirconditionDoorStatusManager.airconditionStatus.windSpeed}") - UiThreadHandler.post { - if(airconditionStatus.isOpen){ - mView?.setAirconditionHeaterView( - airconditionStatus.isOpen, - heaterIsOpen, - airconditionStatus.temperature, - airconditionStatus.pattert, - airconditionStatus.windSpeed - ) - }else{ - mView?.setAirconditionHeaterView( - airconditionStatus.isOpen, - heaterIsOpen, - airconditionStatus.temperature, - 0, - 0 - ) - } - } - } - /** - * 暖风机状态变化 - */ - override fun onHeaterStatusCallback(airconditionIsOpen:Boolean, heaterStatue: HeaterStatue, isFirst: Boolean) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, - "回写--暖风机开关:${heaterStatue.isOpen}、" + - "风速:${heaterStatue.windSpeed}") - UiThreadHandler.post { - if(heaterStatue.isOpen) { - mView?.setAirconditionHeaterView( - airconditionIsOpen, - heaterStatue.isOpen, - 0, - 0, - heaterStatue.windSpeed - ) - }else{ - mView?.setAirconditionHeaterView( - airconditionIsOpen, - heaterStatue.isOpen, - 0, - 0, - 0 - ) - } - } - } - /** - * 灯状态变化 - */ - override fun onLightTop1Callback(lightStatus: LightStatus, isFirst: Boolean) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, - "回写--顶灯1开关:${lightStatus.isOpenLight1}、" + - "顶灯2开关:${lightStatus.isOpenLight2}、" + - "氛围灯开关:${lightStatus.isOpenatmosphere}、") - UiThreadHandler.post { - mView?.setLightTop1View(lightStatus.isOpenLight1,isFirst) - } - } - /** - * 灯状态变化 - */ - override fun onLightTop2Callback(lightStatus: LightStatus, isFirst: Boolean) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, - "回写--顶灯1开关:${lightStatus.isOpenLight1}、" + - "顶灯2开关:${lightStatus.isOpenLight2}、" + - "氛围灯开关:${lightStatus.isOpenatmosphere}、") - UiThreadHandler.post { - mView?.setLightTop2View(lightStatus.isOpenLight2,isFirst) - mView?.setLightView(lightStatus.isOpenLight1,lightStatus.isOpenLight2) - } - } - /** - * 灯状态变化 - */ - override fun onLightAtmosphereCallback(lightStatus: LightStatus, isFirst: Boolean) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, - "回写--顶灯1开关:${lightStatus.isOpenLight1}、" + - "顶灯2开关:${lightStatus.isOpenLight2}、" + - "氛围灯开关:${lightStatus.isOpenatmosphere}、") - UiThreadHandler.post { - mView?.setLightAtmosphereView(lightStatus.isOpenatmosphere,isFirst) - } - } - - /** - * 设置空调 - */ - fun openAndSetAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "" + - "打开空调,模式$modeCmd--档位${windSpeedCmd}--温度:$temperatureCmd") - CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(1,modeCmd,windSpeedCmd,temperatureCmd) - disposeSubscribe(airconditionDisposable) - airconditionDisposable = createSubscribe(10000){ - if (!LightAirconditionDoorStatusManager.airconditionStatus.isOpen&& - LightAirconditionDoorStatusManager.airconditionStatus.windSpeed!=windSpeedCmd&& - LightAirconditionDoorStatusManager.airconditionStatus.temperature!=temperatureCmd&& - LightAirconditionDoorStatusManager.airconditionStatus.pattert!=modeCmd) { - ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") - } - } - } - fun closeAircondition(modeCmd: Int, windSpeedCmd: Int, temperatureCmd: Int) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭空调") - CallerAutoPilotControlManager.sendRoboBusJinlvM1AirConditionerCmd(2,modeCmd,windSpeedCmd,temperatureCmd) - disposeSubscribe(airconditionDisposable) - airconditionDisposable = createSubscribe(10000){ - if (LightAirconditionDoorStatusManager.airconditionStatus.isOpen) { - ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") - } - } - } - /** - * 设置暖风 - */ - fun openAndSetHeader(windSpeedCmd: Int) { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风机、档位${windSpeedCmd}") - CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(1,windSpeedCmd) - disposeSubscribe(heaterDisposable) - heaterDisposable = createSubscribe(10000){ - if (!LightAirconditionDoorStatusManager.heaterStatue.isOpen&& - LightAirconditionDoorStatusManager.heaterStatue.windSpeed!=windSpeedCmd) { - ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~") - } - } - } - - fun closeHeader(){ - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风机") - CallerAutoPilotControlManager.sendRoboBusJinlvM1HeaderCmd(2,0) - disposeSubscribe(heaterDisposable) - heaterDisposable = createSubscribe(10000){ - if (LightAirconditionDoorStatusManager.heaterStatue.isOpen) { - ToastCharterUtils.showShort("暖风机操作未生效,请稍后重试吧~")//还是开着的 - } - } - } - - fun setLightData1(leftLight: Boolean){ - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "顶灯2:$leftLight") - disposeSubscribe(subscribeLightTop1) - if(leftLight){ - CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(1) - subscribeLightTop1 = createSubscribe{ - if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { - ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") - } - } - }else{ - CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp1Cmd(2) - subscribeLightTop1 = createSubscribe{ - if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight1) { - ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") - } - } - } - } - fun setLightData2(rightLight: Boolean){ - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "顶灯1:$rightLight") - disposeSubscribe(subscribeLightTop2) - if(rightLight){ - CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(1) - subscribeLightTop2 = createSubscribe{ - if (!LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { - ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") - } - } - }else{ - CallerAutoPilotControlManager.sendRoboBusJinlvM1MainLamp2Cmd(2) - subscribeLightTop2 = createSubscribe{ - if (LightAirconditionDoorStatusManager.lightStatus.isOpenLight2) { - ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") - } - } - } - } - fun setAtmosphereLightData2(atmosphereLight: Boolean){ - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "氛围灯:$atmosphereLight") - disposeSubscribe(subscribeLightAtmosphere) - if (atmosphereLight) { - CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(1) - subscribeLightAtmosphere = createSubscribe{ - if (!LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { - ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") - } - } - } else { - CallerAutoPilotControlManager.sendRoboBusJinlvM1SmallLampCmd(2) - subscribeLightAtmosphere = createSubscribe{ - if (LightAirconditionDoorStatusManager.lightStatus.isOpenatmosphere) { - ToastCharterUtils.showShort("控制系统繁忙,请稍后再试") - } - } - } - } -} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionVideoPresenter.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionVideoPresenter.kt deleted file mode 100644 index 48a1e275b9..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/BusPassengerFunctionVideoPresenter.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import com.mogo.och.bus.passenger.ui.video.M1VideoFragment - -class BusPassengerFunctionVideoPresenter(view: M1VideoFragment?) : - BusBasePassengerFunctionDevicePresenter(view) \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt index c29775333b..da3e5d9d26 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/CharterPassengerNoviceGuidancePresenter.kt @@ -1,10 +1,8 @@ package com.mogo.och.bus.passenger.presenter import androidx.lifecycle.LifecycleOwner -import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse 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 diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt deleted file mode 100644 index b17d1dd43d..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/presenter/OrderInfoPresenter.kt +++ /dev/null @@ -1,79 +0,0 @@ -package com.mogo.och.bus.passenger.presenter - -import androidx.lifecycle.LifecycleOwner -import com.mogo.eagle.core.data.BaseData -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager -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.GsonUtils -import com.mogo.och.bus.passenger.utils.ToastCharterUtils -import com.mogo.och.bus.passenger.callback.ITimeCallback -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.ui.orderinfo.OrderInfoFragment -import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg -import com.mogo.och.common.module.bean.dpmsg.EndOrderMsg -import com.mogo.och.common.module.biz.constant.OchCommonConst -import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -import com.mogo.och.common.module.utils.DateTimeUtil - -class OrderInfoPresenter(view: OrderInfoFragment?) : - BusBasePassengerFunctionDevicePresenter(view), ITimeCallback { - companion object{ - private const val TAG = "OrderInfoPresenter" - } - override fun onCreate(owner: LifecycleOwner) { - super.onCreate(owner) - CharterPassengerModel.setOrderLeftTimeListeners(TAG,this) - getDataInfo() - } - - private fun getDataInfo() { - val currentOrderInfo = CharterPassengerModel.getCurrentOrderInfo() - currentOrderInfo?.let { - mView?.setPhone(it.passengerPhone?:"") - try { - mView?.setStartTimeAndEndTime( - DateTimeUtil.formatLongToString(it.startTime!!, DateTimeUtil.HH_mm), - DateTimeUtil.formatLongToString(it.endTime!!, DateTimeUtil.HH_mm)) - }catch (e:Exception){ - e.printStackTrace() - } - } - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - CharterPassengerModel.setOrderLeftTimeListeners(TAG,null) - } - - override fun setOrderTimeCallBack(timeInSecond: Long) { - val leftTime = DateTimeUtil.second2Time(timeInSecond) - mView?.setLeftTime(leftTime) - } - - fun endOrder() { - CharterPassengerModel.endOrder(object : OchCommonServiceCallback { - override fun onSuccess(data: BaseData?) { - if (null != data && 0 == data.code) { - ToastCharterUtils.showShort("结束成功") - CharterPassengerModel.setEndOrderStatus() - mView?.closeDialogContaion() - val msg = EndOrderMsg( - CharterPassengerModel.getCurrentOrderInfo()?.orderNo?:"", - ) - CallerTelematicManager.sendMsgToServer( - OchCommonConst.BUSINESS_STRING, - GsonUtils.toJson(msg).toByteArray() - ) - CallerLogger.d(M_BUS_P + BaseDPMsg.TAG, "发送数据:结束订单${msg}") - } - } - - override fun onFail(code: Int, msg: String) { - ToastCharterUtils.showShort("$code:$msg") - } - }) - } - - -} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/provider/StatusViewManager.java b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/provider/StatusViewManager.java index 34a11778aa..90f569d3af 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/provider/StatusViewManager.java +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/provider/StatusViewManager.java @@ -20,15 +20,16 @@ import com.mogo.eagle.core.function.api.hmi.view.IStatusViewLayout; @Route( path = MogoServicePaths.PATH_STATUS_VIEW_MANAGER ) public class StatusViewManager implements IStatusViewLayout { + private StatusBarView statusBarView; @NonNull @Override public View getStatusView(Context context) { - return new StatusBarView(context); + return statusBarView; } @Override public void init(Context context) { - + statusBarView = new StatusBarView(context); } } diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt index 3d81be6386..c4078a6ecf 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/MainFragment.kt @@ -5,16 +5,21 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import com.alibaba.android.arouter.launcher.ARouter import com.amap.api.maps.model.LatLng import com.mogo.commons.AbsMogoApplication import com.mogo.commons.mvp.MvpFragment import com.mogo.eagle.core.data.config.HdMapBuildConfig +import com.mogo.eagle.core.data.constants.MogoServicePaths +import com.mogo.eagle.core.function.api.hmi.view.IStatusViewLayout import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController import com.mogo.eagle.core.function.hmi.ui.msgbox.MMsgBoxButtonView import com.mogo.eagle.core.function.view.SiteMarkerBean 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.UiThreadHandler +import com.mogo.map.listener.IMogoMapListener +import com.mogo.map.listener.MogoMapListenerHandler import com.mogo.map.uicontroller.VisualAngleMode import com.mogo.och.bus.passenger.R import com.mogo.och.bus.passenger.bean.event.EventLineSites @@ -23,8 +28,8 @@ import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter import com.mogo.och.bus.passenger.ui.bottom.BottomBar import com.mogo.och.bus.passenger.ui.bottom.BottomClickView import com.mogo.och.bus.passenger.ui.dialogfragment.M1CarUserNoOrderFragment -import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment import com.mogo.och.bus.passenger.ui.dialogfragment.NoviceGuidanceFragment +import com.mogo.och.bus.passenger.ui.statusbar.StatusBarView import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.common.module.biz.constant.LoginStatusManager import kotlinx.android.synthetic.main.m1_main_fragment.* @@ -37,10 +42,8 @@ import java.lang.ref.WeakReference * @author: wangmingjun * @date: 2022/4/12 */ -class MainFragment : - MvpFragment() { +class MainFragment : MvpFragment(), IMogoMapListener { - private var bpFunctionGroupDialogFragment: WeakReference? = null private var m1CarUserNoOrderFragment: WeakReference? = null private var noviceGuidanceFragment: WeakReference? = null @@ -61,7 +64,16 @@ class MainFragment : } } + private var statusBarView: StatusBarView? = null + override fun getLayoutId(): Int { + (ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_VIEW_MANAGER) + .navigation() as? IStatusViewLayout)?.apply { + val statusView = getStatusView(requireContext()) + if (statusView is StatusBarView) { + statusBarView = statusView + } + } return R.layout.m1_main_fragment } @@ -117,6 +129,7 @@ class MainFragment : BottomBar.SelectView.VIDEO -> showBizView(showVideo = true) else -> { showBizView() + statusBarView?.setBackgroudColor(R.color.bus_p_m1_80ffffff) } } return false @@ -145,6 +158,7 @@ class MainFragment : controller.changeZoom2(0.8f) } } + MogoMapListenerHandler.mogoMapListenerHandler.registerHostMapListener(TAG, this) } fun setCarMode(type: Int) { @@ -159,39 +173,30 @@ class MainFragment : ) { if (orderinfo) { biz_orderinfo.visibility = View.VISIBLE + statusBarView?.setBackgroudColor(R.color.bus_p_m1_80ffffff) } else { biz_orderinfo.visibility = View.GONE } if (softControl) { biz_softcontrol.visibility = View.VISIBLE + statusBarView?.setBackgroudColor(R.color.bus_p_m1_40ffffff) } else { biz_softcontrol.visibility = View.GONE } if (selectLine) { biz_selectline.visibility = View.VISIBLE + statusBarView?.setBackgroudColor(R.color.bus_p_m1_80ffffff) } else { biz_selectline.visibility = View.GONE } if (showVideo) { biz_video.visibility = View.VISIBLE + statusBarView?.setBackgroudColor(R.color.bus_p_m1_40ffffff) } else { biz_video.visibility = View.GONE } } - private fun openSettingPage(tab: String) { - if (bpFunctionGroupDialogFragment?.get() == null) { - bpFunctionGroupDialogFragment = WeakReference(M1ContainFragment.newInstance()) - } - val bpFunctionGroup = bpFunctionGroupDialogFragment?.get() - M1ContainFragment.openSettingPage( - childFragmentManager, - parentFragmentManager, - bpFunctionGroup, - tab - ) - } - fun setCarModle(rawInfo: Int) { getMapUIController()?.changeCurrentIcon(rawInfo) HdMapBuildConfig.currentCarVrIconRes = rawInfo @@ -221,9 +226,6 @@ class MainFragment : super.onResume() mapBizView.onResume() omvOverMap.onResume() - UiThreadHandler.postDelayed({ - getMapUIController()?.setAllGesturesEnabled(false) - },200) } override fun onSaveInstanceState(outState: Bundle) { @@ -249,9 +251,12 @@ class MainFragment : EventBus.getDefault().unregister(this) } + override fun onMapLoaded() { + super.onMapLoaded() + getMapUIController()?.setAllGesturesEnabled(false) + } + fun showOpenAndCloseDoor() { - val bpFunctionGroup = bpFunctionGroupDialogFragment?.get() - bpFunctionGroup?.dismissAllowingStateLoss() val noviceGuidanceFragment = noviceGuidanceFragment?.get() noviceGuidanceFragment?.dismissAllowingStateLoss() diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt deleted file mode 100644 index 08d9af1fe0..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/dialogfragment/M1ContainFragment.kt +++ /dev/null @@ -1,322 +0,0 @@ -package com.mogo.och.bus.passenger.ui.dialogfragment - -import android.content.DialogInterface -import android.os.Bundle -import android.util.Log -import android.view.View -import android.view.WindowManager -import androidx.fragment.app.DialogFragment -import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentManager -import androidx.fragment.app.FragmentTransaction -import com.mogo.commons.AbsMogoApplication -import com.mogo.commons.mvp.MvpDialogFragment -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.bean.event.EventLineSites -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionPresenter -import com.mogo.och.bus.passenger.ui.selectline.M1OrderLineFragment -import com.mogo.och.bus.passenger.ui.softcontrol.M1SoftFragment -import com.mogo.och.bus.passenger.ui.video.M1VideoFragment -import com.mogo.och.bus.passenger.ui.orderinfo.OrderInfoFragment -import com.mogo.och.bus.passenger.ui.bottom.BottomBar -import com.mogo.och.bus.passenger.ui.bottom.BottomClickView -import com.mogo.och.bus.passenger.utils.ToastCharterUtils -import com.mogo.och.common.module.biz.constant.LoginStatusManager -import com.mogo.och.common.module.manager.debug.DebugViewWatchDogFragment -import kotlinx.android.synthetic.main.m1_contain_fragment.* -import org.greenrobot.eventbus.EventBus - -/** - * @author: yangyakun - * @date: 2023/1/28 - */ -class M1ContainFragment : - MvpDialogFragment() { - - var tab: String = VIDEOTAB - var fragmentTag: String = M1VideoFragment.TAG - var fragment: Fragment? = null - - var closeThis:ContainDismiss = object :ContainDismiss{ - override fun closeDialog() { - dismissAllowingStateLoss() - } - } - - override fun onCreate(savedInstanceState: Bundle?) { - CallerLogger.d(M_BUS_P+ TAG, "onCreate") - super.onCreate(savedInstanceState) - arguments?.let { - tab = it.getString(SELECTTAB, VIDEOTAB) - } - savedInstanceState?.let { - tab = it.getString(SELECTTAB, tab) - } - setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏 - } - - private fun setCheckView() { //todo yakun 优化 - CallerLogger.d(M_BUS_P+ TAG, "setCheckView") - when (tab) { - VIDEOTAB -> { - fragment =childFragmentManager.findFragmentByTag(M1VideoFragment.TAG) - ?: M1VideoFragment.newInstance() - bb_bottom_bar.setCheckIndex(BottomBar.SelectView.VIDEO) - cl_container.setBackgroundResource(R.drawable.m1_function_bg) - fragmentTag = M1VideoFragment.TAG - } - SETTINGSOFTTAB -> { - fragment =childFragmentManager.findFragmentByTag(M1SoftFragment.TAG) - ?: M1SoftFragment.newInstance() - bb_bottom_bar.setCheckIndex(BottomBar.SelectView.SETTING) - cl_container.setBackgroundResource(R.drawable.m1_function_bg) - fragmentTag = M1SoftFragment.TAG - } - ORDERINFO -> { - fragment =childFragmentManager.findFragmentByTag(OrderInfoFragment.TAG) - ?: OrderInfoFragment.newInstance(closeThis) - bb_bottom_bar.setCheckIndex(BottomBar.SelectView.ORDERINFO) - cl_container.background = null - fragmentTag = OrderInfoFragment.TAG - } - SELECTLINE ->{ - fragment =childFragmentManager.findFragmentByTag(M1OrderLineFragment.TAG) - ?: M1OrderLineFragment.newInstance(closeThis) - bb_bottom_bar.setCheckIndex(BottomBar.SelectView.LINE) - cl_container.background = null - fragmentTag = M1OrderLineFragment.TAG - } - else -> {} - } - CallerLogger.d(M_BUS_P+ TAG, "fragment:$fragment") - - fragment?.let { - val beginTransaction = childFragmentManager.beginTransaction() - beginTransaction - .replace(R.id.fl_function_group, it, fragmentTag) - .commitNow() - } - - } - - override fun getLayoutId(): Int = R.layout.m1_contain_fragment - - override fun getTagName(): String = TAG - - override fun initViews() { - - //dialog?.setCancelable(false) - CallerLogger.d(M_BUS_P+ TAG, "initViews") - setCheckView() - cl_container.setOnClickListener { - dismissAllowingStateLoss() - } -// bb_bottom_bar.setSettingClickListener{ -// CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab") -// if(tab==SETTINGSOFTTAB) { -// dismissAllowingStateLoss() -// }else{ -// tab = SETTINGSOFTTAB -// setCheckView() -// } -// } -// bb_bottom_bar.setLineClickListener{ -// CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab") -// if(tab==SELECTLINE) { -// dismissAllowingStateLoss() -// }else{ -// tab = SELECTLINE -// setCheckView() -// } -// } -// bb_bottom_bar.setOrderInfoClickListener{ -// if (LoginStatusManager.isLogin()) { -// if(mPresenter?.haveOrder()==true){ -// -// }else{ -// ToastCharterUtils.showShort("请确认订单") -// return@setOrderInfoClickListener -// } -// }else{ -// ToastCharterUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver)) -// return@setOrderInfoClickListener -// } -// -// CallerLogger.d(M_BUS_P+ TAG, "initViews---$tab") -// if(tab==ORDERINFO) { -// dismissAllowingStateLoss() -// }else{ -// tab = ORDERINFO -// setCheckView() -// } -// } - bb_bottom_bar.setApplyClickListener(object : BottomClickView.ApplyClickLintener{ - override fun onApplyClick() { - dismissAllowingStateLoss() - } - }) - } - - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - CallerLogger.d(M_BUS_P+ TAG, "onViewCreated") - dialog?.window?.let { - BarUtils.hideStatusBarAndSticky(it) - it.addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) - dialog?.setOnShowListener { _ -> - it.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) - BarUtils.hideStatusBarAndSticky(it) - } - } - } - - override fun onDismiss(dialog: DialogInterface) { - super.onDismiss(dialog) - EventBus.getDefault().post(EventLineSites(null,null,true)) - } - - override fun onSaveInstanceState(outState: Bundle) { - super.onSaveInstanceState(outState) - CallerLogger.d(M_BUS_P+ TAG, "onSaveInstanceState") - context?.let { - SharedPrefs.getInstance(it).putString(SELECTTAB, tab) - } - } - - override fun createPresenter(): BusPassengerFunctionPresenter = - BusPassengerFunctionPresenter(this) - - /** - * 重写父类show()方法 - * 避免出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState - */ - override fun show(manager: FragmentManager, tag: String?) { - try { - var cls = this.javaClass.superclass ?: return - while (true) { - if (cls.name == "java.lang.Object") { - break - } - cls = cls.superclass!! - if (cls == DialogFragment::class.java) { - break - } - } - val mDismissed = cls.getDeclaredField("mDismissed") - val mShownByMe = cls.getDeclaredField("mShownByMe") - mDismissed.isAccessible = true - mShownByMe.isAccessible = true - mDismissed.setBoolean(this, false) - mShownByMe.setBoolean(this, true) - if (isAdded) { - return - } - val ft: FragmentTransaction = manager.beginTransaction() - ft.add(this, tag) - ft.commitAllowingStateLoss() - } catch (e: Exception) { - Log.e("DialogFragment", "show", e.fillInStackTrace()) - } - } - - override fun onViewStateRestored(savedInstanceState: Bundle?) { - CallerLogger.d(M_BUS_P+ TAG, "onViewStateRestored") - when (tab) { - VIDEOTAB -> { - - } - SETTINGSOFTTAB -> {} - ORDERINFO -> {} - SELECTLINE -> {} - else -> {} - } - super.onViewStateRestored(savedInstanceState) - } - - companion object { - const val TAG = "M1ContainFragment" - - /** - * 娱乐视频 - */ - const val VIDEOTAB = "VideoTab" - - /** - * 空调、暖风、灯和剩余设置 - */ - const val SETTINGSOFTTAB = "SettingSoftTab" - - /** - * 订单信息 - */ - const val ORDERINFO = "OrderInfo" - - /** - * 选择线路 - */ - const val SELECTLINE = "SelectLine" - - - - const val SELECTTAB = "SELECTTAB" - - @JvmStatic - fun newInstance(): M1ContainFragment { - val args = Bundle() - val fragment = M1ContainFragment() - CallerLogger.d(M_BUS_P + TAG, "创建新的Fragment") - fragment.arguments = args - return fragment - } - - - fun openSettingPage( - childFragmentManager: FragmentManager, - parentFragmentManager: FragmentManager, - bpFunctionGroup: M1ContainFragment?, - tab: String - ) { - val fragmentByTag: Fragment? = childFragmentManager.findFragmentByTag(TAG) - if (fragmentByTag is DialogFragment) { - if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) { - CallerLogger.d(M_BUS_P + TAG, "正在展示") - return - } - if (fragmentByTag.dialog != null && fragmentByTag.isAdded) { - if (AppStateManager.currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用 - CallerLogger.d(M_BUS_P + TAG, "权限验证") - return - } - } - } - bpFunctionGroup?.arguments?.putString(SELECTTAB, tab) - if (bpFunctionGroup != null) { - if (bpFunctionGroup.dialog != null && bpFunctionGroup.dialog!!.isShowing) { - CallerLogger.d(M_BUS_P + DebugViewWatchDogFragment.TAG, "正在展示") - return - } - if (ClickUtils.isFastClick()) { - if (bpFunctionGroup.isAdded) { - CallerLogger.d(M_BUS_P + DebugViewWatchDogFragment.TAG, "已经添加") - return - } - bpFunctionGroup.show(parentFragmentManager, TAG) - CallerLogger.d(M_BUS_P + TAG, "展示$tab---$bpFunctionGroup") - } else { - CallerLogger.d(M_BUS_P + TAG, "dialog 1s内执行一次") - } - } - } - } - - interface ContainDismiss{ - fun closeDialog() - } - interface ChangeCheck{ - fun changeChange() - } -} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockAndUnlockView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockAndUnlockView.kt index 3a7d6b7612..dd259ae25e 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockAndUnlockView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockAndUnlockView.kt @@ -11,7 +11,7 @@ import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.och.bus.passenger.R -import com.mogo.och.taxi.passenger.widget.animutils.AnimationsContainer +import com.mogo.och.common.module.utils.FrameAnimatorContainer import kotlinx.android.synthetic.main.m1_devices_lock_unlock.view.aciv_screen_lock import kotlinx.android.synthetic.main.m1_devices_lock_unlock.view.aciv_screen_lock_bg import kotlinx.android.synthetic.main.m1_devices_lock_unlock.view.aciv_screen_unlock_ani @@ -30,7 +30,7 @@ class LockAndUnlockView : ConstraintLayout, LockManager.LockStatusCallback { val TAG = "UnLockView" - private var animations: AnimationsContainer? = null + private var animations: FrameAnimatorContainer? = null private var downType: DownType = DownType.NONE private var handler: Handler?=null @@ -55,9 +55,9 @@ class LockAndUnlockView : ConstraintLayout, LockManager.LockStatusCallback { super.onAttachedToWindow() LockManager.setAutoStatusCallback(TAG, this) aciv_screen_unlock_ani?.let { - animations = AnimationsContainer(R.array.openlock, 24, it) + animations = FrameAnimatorContainer(R.array.openlock, 24, it,initFirstFrame = false) animations!!.setOnAnimStopListener(object : - AnimationsContainer.OnAnimationStoppedListener { + FrameAnimatorContainer.OnAnimationStoppedListener { override fun AnimationStopped() { it.setImageDrawable(null) } diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/orderinfo/OrderInfoFragment.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/orderinfo/OrderInfoFragment.kt deleted file mode 100644 index 6985d281ee..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/orderinfo/OrderInfoFragment.kt +++ /dev/null @@ -1,82 +0,0 @@ -package com.mogo.och.bus.passenger.ui.orderinfo - -import android.os.Bundle -import android.view.View -import com.mogo.commons.mvp.MvpFragment -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.presenter.OrderInfoPresenter -import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment -import kotlinx.android.synthetic.main.m1_devices_fragment.* - -/** - * @author: yangyakun - * @date: 2023/1/28 - */ -class OrderInfoFragment : - MvpFragment() { - - private var dismiss: M1ContainFragment.ContainDismiss?=null - - override fun getLayoutId(): Int = R.layout.m1_devices_fragment - - override fun getTagName(): String = TAG - - override fun initViews() { - initListener() - } - - private fun initListener() { - actv_end_order_submit.setOnClickListener { - mPresenter?.endOrder() - } - actv_contain_order.setOnClickListener { - this.dismiss?.closeDialog() - } - actv_end_order.setOnClickListener { - cl_order_info.visibility = View.GONE - cl_order_info_endorder_comfit.visibility = View.VISIBLE - } - } - - fun setStartTimeAndEndTime(startTime:String,endTime:String){ - actv_order_times.text = "$startTime-$endTime" - } - fun setPhone(phone:String){ - if(phone.length>8) { - //截取电话号码前三位 - val phoneNumPre = phone.substring(0, 3); - //截取电话号码后四位 - val phoneNumFix = phone.substring(7); - actv_order_phone.text = "$phoneNumPre****$phoneNumFix" - }else{ - actv_order_phone.text = phone - } - } - - fun setLeftTime(leftTime:String){ - actv_left_time.text = "剩余时间 $leftTime" - } - - fun setContainDismiss(dismiss: M1ContainFragment.ContainDismiss) { - this.dismiss = dismiss - } - - fun closeDialogContaion(){ - this.dismiss?.closeDialog() - } - - override fun createPresenter(): OrderInfoPresenter = - OrderInfoPresenter(this) - - companion object { - const val TAG = "OrderInfoFragment" - @JvmStatic - fun newInstance(dismiss: M1ContainFragment.ContainDismiss): OrderInfoFragment { - val args = Bundle() - val fragment = OrderInfoFragment() - fragment.arguments = args - fragment.setContainDismiss(dismiss) - return fragment - } - } -} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/selectline/M1OrderLineFragment.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/selectline/M1OrderLineFragment.kt deleted file mode 100644 index 31a90cb044..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/selectline/M1OrderLineFragment.kt +++ /dev/null @@ -1,268 +0,0 @@ -package com.mogo.och.bus.passenger.ui.selectline - -import android.animation.ObjectAnimator -import android.graphics.drawable.AnimationDrawable -import android.os.Bundle -import android.view.View -import android.view.animation.LinearInterpolator -import androidx.recyclerview.widget.LinearLayoutManager -import com.elegant.utils.UiThreadHandler -import com.mogo.commons.mvp.MvpFragment -import com.mogo.eagle.core.utilcode.kotlin.onClick -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.och.bus.passenger.utils.ToastCharterUtils -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.bean.response.LineInfoResponse -import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse -import com.mogo.och.bus.passenger.model.CharterPassengerModel -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter -import com.mogo.och.bus.passenger.ui.selectline.adapter.OrderLineItemAdapter -import com.mogo.och.bus.passenger.ui.selectline.adapter.OrderSiteItemAdapter -import com.mogo.och.bus.passenger.ui.dialogfragment.M1ContainFragment -import com.mogo.och.bus.passenger.ui.selectline.layoutmanage.BottomDecoration -import com.mogo.och.common.module.utils.RxUtils -import io.reactivex.disposables.Disposable -import kotlinx.android.synthetic.main.m1_order_fragment.* -import kotlinx.android.synthetic.main.m1_order_loading.iv_loading_wait_ent -import me.jessyan.autosize.utils.AutoSizeUtils - -/** - * @author: yangyakun - * @date: 2023/1/28 - */ -class M1OrderLineFragment : - MvpFragment() { - - private var dismiss: M1ContainFragment.ContainDismiss? = null - - - private lateinit var lineAdapter: OrderLineItemAdapter - private lateinit var siteAdapter: OrderSiteItemAdapter - - val lineList = mutableListOf() - val siteList = mutableListOf() - - private var subscribeDirverAgree: Disposable? = null - private var subscribeDirverRefuse: Disposable? = null - - private val loadingAni = - ObjectAnimator.ofFloat(iv_loading_wait_ent, "rotation", 0f, 90f, 180f, 270f, 360f) - .apply { - repeatCount = -1 - interpolator = LinearInterpolator() - duration = 1000 - } - - - override fun getLayoutId(): Int { - return R.layout.m1_order_fragment - } - - override fun getTagName(): String { - return TAG - } - - override fun initViews() { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "initViews") - lineAdapter = OrderLineItemAdapter(requireContext(), lineList) - siteAdapter = OrderSiteItemAdapter(requireContext(), siteList) - loadingAni.target = iv_loading_wait_ent - rlv_line_list.layoutManager = - LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) - rlv_line_list.addItemDecoration( - BottomDecoration( - AutoSizeUtils.dp2px(context, 60f) - ) - ) - rlv_line_list.adapter = lineAdapter - - rv_site_list.layoutManager = - LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) - rv_site_list.addItemDecoration( - BottomDecoration( - AutoSizeUtils.dp2px(context, 90f) - ) - ) - rv_site_list.adapter = siteAdapter - - initListener() - - } - - private fun initListener() { - lineAdapter.checkChangeListener = object : OrderLineItemAdapter.CheckListener { - override fun canSwitchLine(): Boolean { - return true - } - - override fun onCheckListener(lineInfo: LineInfoResponse.LineInfo) { - mPresenter?.checkLineClick(lineInfo) - siteAdapter.clearCheck() - } - } - siteAdapter.checkChangeListener = object : OrderSiteItemAdapter.CheckListener { - override fun canSwitchLine(): Boolean { - return mPresenter?.canSwitchLine()?:true - } - - override fun onCheckListener(siteInfo: SiteInfoResponse.SiteInfo?) { - // 设置临时选中的 - mPresenter?.checkSiteClick(siteInfo) - } - - } - tv_site_cancle.onClick { - mPresenter?.resetData() - } - tv_site_submit.onClick { - mPresenter?.changeSites(siteList) - } - - } - - - /** - * 设置是否可用选择站点 - */ - fun setEnableSiteStatus(cancleAndSubmit: Boolean) { - if (cancleAndSubmit) { - g_side_cancle_submit_group?.visibility = View.VISIBLE - } else { - g_side_cancle_submit_group?.visibility = View.GONE - } - } - - fun hideDataWaitDriverMsg() { - g_lines_sites_data?.visibility = View.GONE - g_loading_group?.visibility = View.VISIBLE - iv_loading_wait_driver?.let { - val animationDrawable = it.drawable as AnimationDrawable - animationDrawable.start() - } - } - - fun showSelectData() { - UiThreadHandler.post { - g_lines_sites_data?.visibility = View.VISIBLE - g_loading_group?.visibility = View.GONE - group_driver_agrenn_line?.visibility = View.GONE - aciv_driver_refuse_group?.visibility = View.GONE - } - } - - fun hideDataDriverAgree(){ - group_driver_agrenn_line?.visibility = View.VISIBLE - aciv_driver_refuse_group?.visibility = View.GONE - g_loading_group?.visibility = View.GONE - g_lines_sites_data?.let { - it.visibility = View.GONE - subscribeDirverAgree = RxUtils.createSubscribe(3_000) { - dismiss?.closeDialog() - } - } - } - fun hideDataDriverRefuse(){ - group_driver_agrenn_line?.visibility = View.GONE - aciv_driver_refuse_group?.visibility = View.VISIBLE - g_loading_group?.visibility = View.GONE - g_lines_sites_data?.let { - it.visibility = View.GONE - subscribeDirverRefuse = RxUtils.createSubscribe(3_000) { - showSelectData() - } - } - } - - fun setVisableByTrun( - showBiz: Boolean = false, - showNetError: Boolean = false, - showNorOrder: Boolean = false, - showLoading: Boolean = false - ) { - if(showBiz){ - // 选择线路页面 - m1_order_noorder?.visibility = View.GONE - m1_order_neterror?.visibility = View.GONE - lsv_line_site?.visibility = View.VISIBLE - m1_order_loading?.visibility = View.GONE - return - } - if(showNetError){ - m1_order_noorder?.visibility = View.GONE - m1_order_neterror?.visibility = View.VISIBLE - lsv_line_site?.visibility = View.GONE - m1_order_loading?.visibility = View.GONE - return - } - if(showNorOrder){ - m1_order_noorder?.visibility = View.VISIBLE - m1_order_neterror?.visibility = View.GONE - lsv_line_site?.visibility = View.GONE - m1_order_loading?.visibility = View.GONE - return - } - if(showLoading){ - m1_order_noorder?.visibility = View.GONE - m1_order_neterror?.visibility = View.GONE - lsv_line_site?.visibility = View.GONE - m1_order_loading?.visibility = View.VISIBLE - if (!loadingAni.isRunning) { - loadingAni.start() - } - } - } - - - fun go2StartCar() { - dismiss?.closeDialog() - } - - override fun createPresenter(): BusPassengerFunctionOrderPresenter { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "createPresenter") - return BusPassengerFunctionOrderPresenter(this) - } - - override fun onDestroyView() { - super.onDestroyView() - loadingAni.cancel() - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "onDestroyView") - RxUtils.disposeSubscribe(subscribeDirverAgree) - RxUtils.disposeSubscribe(subscribeDirverRefuse) - } - - fun lineAdapterSubmit(lineInfo: LineInfoResponse.LineInfo) { - lineAdapter.submitLine(lineInfo) - } - - fun lineAdapterSetData( - lineInfo: List, - checkLine: LineInfoResponse.LineInfo? - ) { - lineAdapter.setDataList(lineInfo,checkLine) - } - - fun siteAdapterSetData(siteInfo: List) { - siteAdapter.setDataList(siteInfo) - } - fun siteAdapterEnableIndex(index: Int) { - siteAdapter.setEnableIndex(index) - } - - fun setContainDismiss(dismiss: M1ContainFragment.ContainDismiss) { - this.dismiss = dismiss - } - - companion object { - const val TAG = "M1OrderLineFragment" - - @JvmStatic - fun newInstance(dismiss: M1ContainFragment.ContainDismiss): M1OrderLineFragment { - val args = Bundle() - val fragment = M1OrderLineFragment() - fragment.arguments = args - fragment.setContainDismiss(dismiss) - return fragment - } - } -} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/selectline/SelectLineViewModel.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/selectline/SelectLineViewModel.kt index 54024fc9d1..c6c318859e 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/selectline/SelectLineViewModel.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/selectline/SelectLineViewModel.kt @@ -3,7 +3,6 @@ package com.mogo.och.bus.passenger.ui.selectline import androidx.lifecycle.ViewModel import com.elegant.utils.UiThreadHandler import com.mogo.commons.AbsMogoApplication -import com.mogo.eagle.core.data.BaseData 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 @@ -17,24 +16,20 @@ import com.mogo.och.bus.passenger.bean.event.EventLineSites import com.mogo.och.bus.passenger.bean.response.LineInfoListResponse import com.mogo.och.bus.passenger.bean.response.LineInfoResponse import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse -import com.mogo.och.bus.passenger.callback.ITimeCallback import com.mogo.och.bus.passenger.model.CharterPassengerModel import com.mogo.och.bus.passenger.model.IOrderStatusChangeListener import com.mogo.och.bus.passenger.model.OrderStatusEnum import com.mogo.och.bus.passenger.net.BusPassengerServiceManager -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionOrderPresenter import com.mogo.och.bus.passenger.utils.ToastCharterUtils import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg import com.mogo.och.common.module.bean.dpmsg.DPMsgType -import com.mogo.och.common.module.bean.dpmsg.EndOrderMsg import com.mogo.och.common.module.bean.dpmsg.LineSite import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.manager.StopSideStatusManager import com.mogo.och.common.module.manager.loopmanager.BizLoopManager import com.mogo.och.common.module.manager.loopmanager.LoopInfo -import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.RxUtils import io.reactivex.disposables.Disposable import org.greenrobot.eventbus.EventBus diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/softcontrol/M1SoftFragment.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/softcontrol/M1SoftFragment.kt deleted file mode 100644 index 29b352dc9e..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/softcontrol/M1SoftFragment.kt +++ /dev/null @@ -1,735 +0,0 @@ -package com.mogo.och.bus.passenger.ui.softcontrol - -import android.animation.ObjectAnimator -import android.animation.ValueAnimator -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.BitmapFactory -import android.graphics.drawable.ClipDrawable -import android.graphics.drawable.LayerDrawable -import android.media.AudioManager -import android.os.Bundle -import android.view.Gravity -import android.view.View -import android.view.animation.LinearInterpolator -import android.widget.RadioButton -import android.widget.SeekBar -import android.widget.SeekBar.OnSeekBarChangeListener -import android.widget.TextView -import androidx.core.content.ContextCompat -import com.mogo.commons.mvp.MvpFragment -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.mogo.storage.SharedPrefsMgr -import com.mogo.eagle.core.utilcode.util.ClickUtils -import com.mogo.och.bus.passenger.utils.ToastCharterUtils -import com.mogo.eagle.core.utilcode.util.UiThreadHandler -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.bean.Temperature -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionSoftPresenter -import com.mogo.och.bus.passenger.ui.softcontrol.adapter.TemperatureAdapter -import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.PagerCenterSnapHelper -import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.HorizontalDecoration -import com.mogo.och.bus.passenger.ui.selectline.layoutmanage.PickerLayoutManager -import com.mogo.och.common.module.utils.SoundPoolHelper -import com.mogo.och.common.module.wigets.MineGradientDrawable -import io.reactivex.Observable -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.disposables.Disposable -import kotlinx.android.synthetic.main.m1_soft_fragment.* -import me.jessyan.autosize.utils.AutoSizeUtils -import java.util.concurrent.TimeUnit - - -/** - * @author: yangyakun - * @date: 2023/1/28 - */ -class M1SoftFragment : - MvpFragment() { - - override fun getLayoutId(): Int = R.layout.m1_soft_fragment - - override fun getTagName(): String = TAG - - private var currentTemperature: Temperature? = null - - private var subscribeAir: Disposable? = null - private var subscribeLightTop1: Disposable? = null - private var subscribeLightTop2: Disposable? = null - private var subscribeAtmosphere: Disposable? = null - private var subscribeAnimator: Disposable? = null - - private var animator1: ObjectAnimator? = null - private val loadingAni = ObjectAnimator.ofFloat(iv_loading, "rotation", 0f, 90f ,180f, 270f, 360f).apply { - repeatCount = -1 - interpolator = LinearInterpolator() - duration = 1000 - } - - - override fun initViews() { - rg_select_function.setOnCheckedChangeListener { group, checkedId -> - when (checkedId) { - R.id.tv_setting_aircondition -> { - g_light_setting.visibility = View.GONE - g_voice_setting.visibility = View.GONE - if(loadingAni.isRunning){ - iv_loading.visibility = View.VISIBLE - g_aircondition_setting.visibility = View.GONE - }else{ - g_aircondition_setting.visibility = View.VISIBLE - } - } - R.id.tv_setting_lighting -> { - g_light_setting.visibility = View.VISIBLE - g_voice_setting.visibility = View.GONE - g_aircondition_setting.visibility = View.GONE - iv_loading.visibility = View.GONE - } - R.id.tv_setting_voice -> { - g_voice_setting.visibility = View.VISIBLE - g_aircondition_setting.visibility = View.GONE - g_light_setting.visibility = View.GONE - iv_loading.visibility = View.GONE - } - else -> {} - } - if(rb_pattern_heating.isChecked){ - iv_temperature_select.visibility = View.GONE - } - } - rg_select_function.check(R.id.tv_setting_aircondition) - setAirconditionListener() - setAirConditionAni() - setLightListener() - setVoiceInfo() - } - - private fun setAirConditionAni() { - dbv_wind.post { - dbv_wind?.let { - val measuredHeight = it.measuredHeight - animator1 = ObjectAnimator.ofInt(it, "showHeight", 0, measuredHeight).apply { - duration = 1000 - repeatCount = ValueAnimator.INFINITE - if(rg_setting_windspeed.checkedRadioButtonId!=0&&tv_aircondition_switch.isChecked){ - start() - } - } - } - } - } - - fun showAni(){ - iv_loading.visibility = View.VISIBLE - loadingAni.target = iv_loading - loadingAni.start() - g_aircondition_setting.visibility = View.GONE - subscribeAnimator = Observable.timer(10000, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - loadingAni.cancel() - iv_loading.visibility = View.GONE - if(tv_setting_aircondition.isChecked){ - g_aircondition_setting.visibility = View.VISIBLE - if(rb_pattern_heating.isChecked){ - iv_temperature_select.visibility = View.GONE - } - } - } - } - private fun setAirconditionListener() { - // 开关空调或暖风机 - tv_aircondition_switch.setOnCheckedChangeListener { buttonView, isChecked -> - if(!buttonView.isPressed){ - return@setOnCheckedChangeListener - } - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - if(isChecked){//打开 - tv_aircondition_switch.setText("关闭空调") - if (rg_setting_pattern.checkedRadioButtonId == R.id.rb_pattern_heating) { - openHeater()// 打开暖风机 - } else { - openAircondition()// 打开空调 - } - showAni() - }else{// 关闭 - tv_aircondition_switch.setText("打开空调") - closeHeater()// 关闭暖风机 - closeAircondition()//关闭空调 - } - } - // 模式调节 - rg_setting_pattern.setOnCheckedChangeListener { group, checkedId -> - 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) - openHeater() - } - R.id.rb_pattern_automatic->{ - if(!rb_pattern_automatic.isPressed){ - return@setOnCheckedChangeListener - } - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - openAircondition() - } - R.id.rb_pattern_refrigeration->{ - if(!rb_pattern_refrigeration.isPressed){ - return@setOnCheckedChangeListener - } - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - openAircondition() - } - R.id.rb_pattern_ventilate->{ - if(!rb_pattern_ventilate.isPressed){ - return@setOnCheckedChangeListener - } - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - openAircondition() - } - else -> { - openAircondition() - } - } - if(tv_aircondition_switch.isChecked) { - showAni() - } - } - - // 风速调节 - rg_setting_windspeed.setOnCheckedChangeListener { group, checkedId -> - when (checkedId) { - R.id.rb_wind_speed_low-> { - if(!rb_wind_speed_low.isPressed){ - return@setOnCheckedChangeListener - } - } - R.id.rb_wind_speed_middle-> { - if(!rb_wind_speed_middle.isPressed){ - return@setOnCheckedChangeListener - } - } - R.id.rb_wind_speed_high-> { - if(!rb_wind_speed_high.isPressed){ - return@setOnCheckedChangeListener - } - } - else -> {} - } - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - if (rg_setting_pattern.checkedRadioButtonId == R.id.rb_pattern_heating) {//暖风机 - openHeater() - } else { - openAircondition() - } - } - val pickerLayoutManager = - PickerLayoutManager( - requireContext(), - PickerLayoutManager.HORIZONTAL, - false - ) - pickerLayoutManager.isChangeAlpha = true - pickerLayoutManager.scaleDownBy = 0.29f - pickerLayoutManager.scaleDownDistance = 0.8f - - val data = getData() - val adapter = TemperatureAdapter(requireContext(), data, rv_aircondition_temperature) - val snapHelper = PagerCenterSnapHelper() - snapHelper.attachToRecyclerView(rv_aircondition_temperature) - rv_aircondition_temperature.layoutManager = pickerLayoutManager - rv_aircondition_temperature.adapter = adapter - HorizontalDecoration.distance = SharedPrefsMgr.getInstance(requireContext()).getInt( - HorizontalDecoration.distancekey,0) - val space = AutoSizeUtils.dp2px(context, 15f) - rv_aircondition_temperature.addItemDecoration( - HorizontalDecoration( - space, - data.size - 1 - ) - ) - - pickerLayoutManager.setOnScrollStopListener { view -> - if (view is TextView) { - // 未拖到中点、自动滚动到中点会短时间触发两次 - val tag = view.tag - if (tag is Temperature) { - mPresenter?.disposeSubscribe(subscribeAir) - if(tag.index==0||tag.index==adapter.data.size-1){ - subscribeAir = Observable.timer(200, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - setCheckAir(adapter,tag) - } - }else { - if (ClickUtils.isClickTooFrequent(rv_aircondition_temperature)) { - return@setOnScrollStopListener - } - setCheckAir(adapter,tag) - } - } - - } - } - if(HorizontalDecoration.distance!=0){ - rv_aircondition_temperature.scrollToPosition(data.size-1) - adapter.setCheckIndex(data.size-1) - } - } - - private fun setCheckAir(adapter: TemperatureAdapter, tag:Temperature){ - adapter.setCheckIndex(tag.index) - currentTemperature = tag - if (rv_aircondition_temperature.tag == touchTag) { - rv_aircondition_temperature.tag = null - return - } else { - SoundPoolHelper.getSoundPoolHelper() - .playSoundWithRedId(context, R.raw.bus_di) - } - openAircondition() - } - - private fun getData(): MutableList { - val mutableListOf = mutableListOf() - mutableListOf.add(Temperature(0, 16, "16°")) - mutableListOf.add(Temperature(1, 17, "17°")) - mutableListOf.add(Temperature(2, 18, "18°")) - mutableListOf.add(Temperature(3, 19, "19°")) - mutableListOf.add(Temperature(4, 20, "20°")) - mutableListOf.add(Temperature(5, 21, "21°")) - mutableListOf.add(Temperature(6, 22, "22°")) - mutableListOf.add(Temperature(7, 23, "23°")) - mutableListOf.add(Temperature(8, 24, "24°")) - mutableListOf.add(Temperature(9, 25, "25°")) - mutableListOf.add(Temperature(10, 26, "26°")) - return mutableListOf - } - - /** - * 关闭空调 - */ - private fun closeAircondition() { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭空调") - var modeCmd = 0 - var windSpeedCmd = 0 - val temperatureCmd = currentTemperature?.value ?: 26 - closeHeater()//关闭暖风 - when (rg_setting_pattern.checkedRadioButtonId) { - R.id.rb_pattern_automatic -> modeCmd = 1 // 自动 - R.id.rb_pattern_refrigeration -> modeCmd = 2 // 制冷 - R.id.rb_pattern_ventilate -> modeCmd = 3 // 通风 - else -> {} - } - when (rg_setting_windspeed.checkedRadioButtonId) { - R.id.rb_wind_speed_low -> windSpeedCmd = 1 // 1档 - R.id.rb_wind_speed_middle -> windSpeedCmd = 2 // 2档 - R.id.rb_wind_speed_high -> windSpeedCmd = 3 // 3档 - else -> {} - } - mPresenter?.closeAircondition(modeCmd, windSpeedCmd, temperatureCmd) - } - - /** - * 开启空调 - */ - private fun openAircondition() { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开空调") - var modeCmd = 0 - var windSpeedCmd = 0 - val temperatureCmd = currentTemperature?.value ?: 26 - closeHeater()//关闭暖风 - when (rg_setting_pattern.checkedRadioButtonId) { - R.id.rb_pattern_automatic -> modeCmd = 1 // 自动 - R.id.rb_pattern_refrigeration -> modeCmd = 2 // 制冷 - R.id.rb_pattern_ventilate -> modeCmd = 3 // 通风 - else -> {} - } - when (rg_setting_windspeed.checkedRadioButtonId) { - R.id.rb_wind_speed_low -> windSpeedCmd = 1 // 1档 - R.id.rb_wind_speed_middle -> windSpeedCmd = 2 // 2档 - R.id.rb_wind_speed_high -> windSpeedCmd = 3 // 3档 - else -> {} - } - if (!tv_aircondition_switch.isChecked) { - return - } - mPresenter?.openAndSetAircondition(modeCmd, windSpeedCmd, temperatureCmd) - } - - /** - * 根据车的状态会写页面状态 - */ - fun setAirconditionHeaterView( - airIsOpen: Boolean, - heaterIsOpen: Boolean, - temperatureCmd: Int, - pattern: Int, - windSpeed: Int - ) { - tv_aircondition_switch?.let { - if (!airIsOpen && !heaterIsOpen) { - tv_aircondition_switch.text = "打开空调" - tv_aircondition_switch.isChecked = false - dbv_wind.visibility = View.GONE - } else { - tv_aircondition_switch.text = "关闭空调" - tv_aircondition_switch.isChecked = true - dbv_wind.visibility = View.VISIBLE - } - if (airIsOpen) { - val adapter = rv_aircondition_temperature.adapter - if (adapter is TemperatureAdapter) { - adapter.data.forEach { - if (it.value == temperatureCmd) { - rv_aircondition_temperature.tag = touchTag - UiThreadHandler.postDelayed({ - rv_aircondition_temperature?.smoothScrollToPosition(it.index) - },500) - } - } - } - when (pattern) {//1: 自动模式, 2: 制冷模式, 3: 通风模式(仅送风,无温度) - 1 -> {rb_pattern_automatic.isChecked = true} - 2 -> {rb_pattern_refrigeration.isChecked = true} - 3 -> {rb_pattern_ventilate.isChecked = true} - else -> {} - } - heaterAirEnable(true) - when (windSpeed) {//1: 1档,2: 2档,3:3档 - 1 -> { - setWind(rb_wind_speed_low,R.drawable.bus_pm1_aircondition_wind_low) - } - 2 -> { - setWind(rb_wind_speed_middle,R.drawable.bus_pm1_aircondition_wind_middle) - } - 3 -> { - setWind(rb_wind_speed_high,R.drawable.bus_pm1_aircondition_wind_high) - } - else -> {} - } - } - if (heaterIsOpen) { - rb_pattern_heating.isChecked = true - heaterAirEnable(false) - when (windSpeed) {//1: 1档,2: 2档 - 1 -> { - setWind(rb_wind_speed_middle,R.drawable.bus_pm1_warm_wind_middle) - } - 2 -> { - setWind(rb_wind_speed_high,R.drawable.bus_pm1_warm_wind_high) - } - else -> {} - } - } - } - } - fun setWind(check: RadioButton,resource:Int){ - check.isChecked = true - dbv_wind.setDrawableImage(BitmapFactory.decodeResource(resources,resource)) - } - - /** - * 关闭暖风机 - */ - private fun closeHeater() { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风") - heaterAirEnable(true) - mPresenter?.closeHeader() - } - - private fun heaterAirEnable(enable: Boolean) { - tv_temperature_title.isEnabled = enable - rv_aircondition_temperature.isEnabled = enable - val layoutManager = rv_aircondition_temperature.layoutManager - if (layoutManager is PickerLayoutManager) { - layoutManager.setHorizontallyScroll(enable) - } - val adapter = rv_aircondition_temperature.adapter as TemperatureAdapter - if(enable){ - adapter.setEnable(true) - if(tv_setting_aircondition.isChecked) { - if(iv_loading.visibility==View.GONE){ - iv_temperature_select.visibility = View.VISIBLE - } - } - rb_wind_speed_low.setTextColor(ContextCompat.getColorStateList(requireContext(),R.color.bus_p_function_airconditon_pattern_text_color_selector)) - }else{ - adapter.setEnable(false) - iv_temperature_select.visibility = View.GONE - rb_wind_speed_low.setTextColor(ContextCompat.getColor(requireContext(),R.color.bus_p_m1_6647576e)) - } - } - - /** - * 开启暖风机 - */ - private fun openHeater() { - CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风") - heaterAirEnable(false) - closeAircondition()//关闭空调 - val switch: Int - when (rg_setting_windspeed.checkedRadioButtonId) { - R.id.rb_wind_speed_low -> { - rb_wind_speed_middle.tag = touchTag - rb_wind_speed_middle.toggle() - switch = 1 - } - R.id.rb_wind_speed_middle -> { - switch = 1 - } - R.id.rb_wind_speed_high -> { - switch = 2 - } - else -> { - rb_wind_speed_middle.tag = touchTag - rb_wind_speed_middle.toggle() - switch = 1 - } - } - if (!tv_aircondition_switch.isChecked) { - return - } - mPresenter?.openAndSetHeader(switch) - } - - - // region 灯 - private fun setLightListener() { - tv_light_top_01.setOnCheckedChangeListener { buttonView, isChecked -> - if(!buttonView.isPressed){ - return@setOnCheckedChangeListener - } - tv_light_top_01.isEnabled = false - subscribeLightTop1 = Observable.timer(2000, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - tv_light_top_01.isEnabled = true - } - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - mPresenter?.setLightData1(isChecked) - setLightTop1View(isChecked,true) - setLightView(isChecked,tv_light_top_02.isChecked) - } - tv_light_top_02.setOnCheckedChangeListener { buttonView, isChecked -> - if(!buttonView.isPressed){ - return@setOnCheckedChangeListener - } - tv_light_top_02.isEnabled = false - subscribeLightTop2 = Observable.timer(2000, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - tv_light_top_02.isEnabled = true - } - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - mPresenter?.setLightData2(isChecked) - setLightTop2View(isChecked,true) - setLightView(tv_light_top_01.isChecked,isChecked) - } - tv_light_atmosphere.setOnCheckedChangeListener { buttonView, isChecked -> - if(!buttonView.isPressed){ - return@setOnCheckedChangeListener - } - tv_light_atmosphere.isEnabled = false - subscribeAtmosphere = Observable.timer(2000, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - tv_light_atmosphere.isEnabled = true - } - SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(context, R.raw.bus_di) - mPresenter?.setAtmosphereLightData2(isChecked) - setLightAtmosphereView(isChecked,true) - } - } - - fun setLightTop1View(leftLight: Boolean, isFirst: Boolean){ - tv_light_top_01?.let { - if (leftLight) { - tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_close_light1) - tv_light_top_01.isChecked = true - if(!isFirst) ToastCharterUtils.showShort("打开顶灯1") - } else { - tv_light_top_01.text = requireContext().getString(R.string.bus_p_m1_open_light1) - tv_light_top_01.isChecked = false - if(!isFirst) ToastCharterUtils.showShort("关闭顶灯1") - } - } - } - fun setLightTop2View(rightLight: Boolean, isFirst: Boolean){ - tv_light_top_02?.let { - if (rightLight) { - tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_close_light2) - tv_light_top_02.isChecked = true - if(!isFirst) ToastCharterUtils.showShort("打开顶灯2") - } else { - tv_light_top_02.text = requireContext().getString(R.string.bus_p_m1_open_light2) - tv_light_top_02.isChecked = false - if(!isFirst) ToastCharterUtils.showShort("关闭顶灯2") - } - } - } - fun setLightAtmosphereView(atmosphereLight: Boolean, isFirst: Boolean){ - tv_light_atmosphere?.let { - if (atmosphereLight) { - tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_close_atmosphere) - tv_light_atmosphere.isChecked = true - iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_select) - if(!isFirst) ToastCharterUtils.showShort("打开氛围灯") - } else { - tv_light_atmosphere.text = requireContext().getString(R.string.bus_p_m1_open_atmosphere) - tv_light_atmosphere.isChecked = false - iv_bottom_light_setting.setImageResource(R.drawable.bus_p_function_atmosphere_nor) - if(!isFirst) ToastCharterUtils.showShort("关闭氛围灯") - } - } - } - - /** - * 灯的UI发生变化 - */ - fun setLightView(leftLight: Boolean, rightLight: Boolean) { - iv_top_light_setting?.let { - if (leftLight && rightLight) { - iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_middle_selected)// 都打开 - } else if (!leftLight && !rightLight) { - iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_nor)// 都关闭 - } else { - if (leftLight) { - iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_left)// 左面开 - } - if (rightLight) { - iv_top_light_setting.setImageResource(R.drawable.bus_p_function_light_select_right)// 左面开 - } - } - } - } - // endregion - - // region 声音 - private var mAudioManager: AudioManager? = null - private var mMaxVolume: Int? = 100 - - - @SuppressLint("NewApi") - private fun setVoiceInfo() { - val dp2px = AutoSizeUtils.dp2px(context, 26f)//进度条高度 - val color2CBFFC = ContextCompat.getColor(requireContext(), R.color.bus_p_m1_2cbffc) - val color1060FF = ContextCompat.getColor(requireContext(), R.color.bus_p_m1_1060ff) - val color96A5C2 = ContextCompat.getColor(requireContext(), R.color.bus_p_m1_96a5c2) - val temp03 = MineGradientDrawable(color2CBFFC, color1060FF, dp2px) - val scaleDrawable3 = ClipDrawable(temp03, Gravity.START, ClipDrawable.HORIZONTAL) - val temp01 = MineGradientDrawable(color96A5C2, color96A5C2, dp2px) - val arr = arrayOf(temp01, scaleDrawable3) - val ld = LayerDrawable(arr) - ld.setDrawableByLayerId(android.R.id.background, temp01) - ld.setDrawableByLayerId(android.R.id.progress, scaleDrawable3) - sb_voice_bar.setProgressDrawableTiled(ld) - sb_voice_bar.max = 100 - sb_voice_bar.min = 5 - sb_voice_bar.setOnSeekBarChangeListener(object : OnSeekBarChangeListener { - override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { - tv_current_voice_value.text = "$progress%" - if (fromUser) { - mMaxVolume?.let { - var currnetValue = ((progress.toFloat() / 100) * it).toInt() - if (currnetValue <= 0) { - currnetValue = 1 - } - mAudioManager?.setStreamVolume( - AudioManager.STREAM_MUSIC, - currnetValue, - AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE - ) - } - } - if (progress == 0) { - iv_voice.setImageResource(R.drawable.bus_p_function_voice_middle_select) - iv_end_voice.setImageResource(R.drawable.bus_p_function_voice_min) - } else { - iv_voice.setImageResource(R.drawable.bus_p_function_voice_middle_selected) - iv_end_voice.setImageResource(R.drawable.bus_p_function_voice_max) - } - - } - - override fun onStartTrackingTouch(seekBar: SeekBar?) {} - override fun onStopTrackingTouch(seekBar: SeekBar?) {} - }) - - context?.let { - mAudioManager = it.getSystemService(Context.AUDIO_SERVICE) as AudioManager - mMaxVolume = mAudioManager?.getStreamMaxVolume(AudioManager.STREAM_MUSIC) - val mCurrentVolume = mAudioManager?.getStreamVolume(AudioManager.STREAM_MUSIC) - mMaxVolume?.let { max -> - mCurrentVolume?.let { current -> - if (current == 1) { - sb_voice_bar.progress = 5 - tv_current_voice_value.text = "5%" - } else { - val fl = current.toFloat() / max * 100 - sb_voice_bar.progress = fl.toInt() - tv_current_voice_value.text = "${fl.toInt()}%" - } - } - } - - } - } - // endregion - - override fun createPresenter(): BusPassengerFunctionSoftPresenter = - BusPassengerFunctionSoftPresenter(this) - - override fun onDestroy() { - mPresenter?.disposeSubscribe(subscribeLightTop1) - mPresenter?.disposeSubscribe(subscribeLightTop2) - mPresenter?.disposeSubscribe(subscribeAtmosphere) - mPresenter?.disposeSubscribe(subscribeAnimator) - - super.onDestroy() - } - - override fun onResume() { - super.onResume() - if(rg_setting_windspeed.checkedRadioButtonId!=0&&tv_aircondition_switch.isChecked){ - animator1?.start() - } - } - - override fun onPause() { - super.onPause() - animator1?.let { - if(it.isRunning){ - it.pause() - } - } - } - - override fun onDetach() { - super.onDetach() - animator1?.let { - if(it.isRunning){ - it.end() - } - } - } - - companion object { - const val TAG = "M1SoftFragment" - const val touchTagKey = 2 - const val touchTag = 2 - - @JvmStatic - fun newInstance(): M1SoftFragment { - val args = Bundle() - val fragment = M1SoftFragment() - fragment.arguments = args - return fragment - } - } -} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/softcontrol/SoftControlView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/softcontrol/SoftControlView.kt index bd297fb31b..2cde65d6b2 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/softcontrol/SoftControlView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/softcontrol/SoftControlView.kt @@ -76,6 +76,8 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba private val TAG = "OrderInfoView" + private val touchTag = 2 + private var viewModel: SoftControlViewModel? = null constructor(context: Context) : super(context) @@ -177,7 +179,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba * 关闭暖风机 */ private fun closeHeater() { - CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "关闭暖风") + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭暖风") heaterAirEnable(true) viewModel?.closeHeader() } @@ -219,13 +221,13 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba * 开启暖风机 */ private fun openHeater() { - CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "打开暖风") + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开暖风") heaterAirEnable(false) closeAircondition()//关闭空调 val switch: Int when (rg_setting_windspeed.checkedRadioButtonId) { R.id.rb_wind_speed_low -> { - rb_wind_speed_middle.tag = M1SoftFragment.touchTag + rb_wind_speed_middle.tag = touchTag rb_wind_speed_middle.toggle() switch = 1 } @@ -239,7 +241,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba } else -> { - rb_wind_speed_middle.tag = M1SoftFragment.touchTag + rb_wind_speed_middle.tag = touchTag rb_wind_speed_middle.toggle() switch = 1 } @@ -254,7 +256,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba * 关闭空调 */ private fun closeAircondition() { - CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "关闭空调") + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "关闭空调") var modeCmd = 0 var windSpeedCmd = 0 val temperatureCmd = currentTemperature?.value ?: 26 @@ -297,7 +299,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba * 开启空调 */ private fun openAircondition() { - CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "打开空调") + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "打开空调") var modeCmd = 0 var windSpeedCmd = 0 val temperatureCmd = currentTemperature?.value ?: 26 @@ -323,7 +325,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba private fun setCheckAir(adapter: TemperatureAdapter, tag: Temperature) { adapter.setCheckIndex(tag.index) currentTemperature = tag - if (rv_aircondition_temperature.tag == M1SoftFragment.touchTag) { + if (rv_aircondition_temperature.tag == touchTag) { rv_aircondition_temperature.tag = null return } else { @@ -554,7 +556,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba } // 模式调节 rg_setting_pattern.setOnCheckedChangeListener { group, checkedId -> - CallerLogger.d(SceneConstant.M_BUS_P + M1SoftFragment.TAG, "调节模式") + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "调节模式") when (checkedId) { R.id.rb_pattern_heating -> { if (!rb_pattern_heating.isPressed) { @@ -723,7 +725,7 @@ class SoftControlView : ConstraintLayout, SoftControlViewModel.SoftControlCallba if (adapter is TemperatureAdapter) { adapter.data.forEach { if (it.value == temperatureCmd) { - rv_aircondition_temperature.tag = M1SoftFragment.touchTag + rv_aircondition_temperature.tag = touchTag UiThreadHandler.postDelayed({ rv_aircondition_temperature?.smoothScrollToPosition(it.index) }, 500) diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/statusbar/StatusBarView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/statusbar/StatusBarView.kt index 3da32a8467..633bbf8290 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/statusbar/StatusBarView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/statusbar/StatusBarView.kt @@ -6,6 +6,7 @@ import android.os.SystemClock import android.util.AttributeSet import android.view.LayoutInflater import android.view.ViewGroup +import androidx.annotation.ColorRes import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import chassis.ChassisStatesOuterClass @@ -64,6 +65,10 @@ class StatusBarView @JvmOverloads constructor( isFocusable = true } + fun setBackgroudColor(@ColorRes color:Int){ + setBackgroundColor(ContextCompat.getColor(context,color)) + } + override fun onAttachedToWindow() { super.onAttachedToWindow() post { diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/video/M1VideoFragment.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/video/M1VideoFragment.kt deleted file mode 100644 index 746548ad23..0000000000 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/video/M1VideoFragment.kt +++ /dev/null @@ -1,163 +0,0 @@ -package com.mogo.och.bus.passenger.ui.video - -import android.os.Bundle -import android.view.View -import androidx.recyclerview.widget.RecyclerView -import com.mogo.commons.mvp.MvpFragment -import com.mogo.och.bus.passenger.R -import com.mogo.och.bus.passenger.bean.TaxiPassengerVideoPlay -import com.mogo.och.bus.passenger.presenter.BusPassengerFunctionVideoPresenter -import com.mogo.och.bus.passenger.ui.video.adapter.RecyclerVideoAdapter -import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.CarouselLayoutManager -import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.CarouselZoomPostLayoutListener -import com.mogo.och.bus.passenger.ui.softcontrol.layoutmanage.CenterScrollListener -import com.shuyu.gsyvideoplayer.video.base.GSYVideoView -import kotlinx.android.synthetic.main.m1_video_fragment.* -import kotlin.math.floor - -/** - * @author: yangyakun - * @date: 2023/1/28 - */ -class M1VideoFragment : - MvpFragment() { - - private val arrayListOf = ArrayList() - - override fun getLayoutId(): Int { - return R.layout.m1_video_fragment - } - - override fun getTagName(): String { - return TAG - } - - override fun initViews() { - initConsultData() - val carouselLayoutManager = - CarouselLayoutManager( - CarouselLayoutManager.HORIZONTAL, - true - ) - carouselLayoutManager.setPostLayoutListener(CarouselZoomPostLayoutListener()) - carouselLayoutManager.maxVisibleItems = 1 - rvVideoPlaylist.addOnScrollListener(object : CenterScrollListener() { - var prePlayerPosition = 0 - override fun pageSelect(recyclerView: RecyclerView?, newState: Int) { - //播放视频 - val (centerItemPosition: kotlin.Int, player) = getPlayer(carouselLayoutManager) - if (player is ConsultVideoPlayer) { - if (prePlayerPosition != centerItemPosition) { - if (player.currentState == GSYVideoView.CURRENT_STATE_PAUSE) { - player.onVideoReset() - } - val playerHolder = - carouselLayoutManager.findViewByPosition(prePlayerPosition) - val prePlayer = - playerHolder?.findViewById(R.id.video_item_player) - prePlayer?.onVideoReset() - val taxiPassengerVideoPlay = arrayListOf[centerItemPosition] - setBackageAndPlayNext(taxiPassengerVideoPlay) - } else { - player.onVideoResume(false) - } - } - prePlayerPosition = centerItemPosition - } - - override fun pageStop() { - val (_, player) = getPlayer(carouselLayoutManager) - if (player is ConsultVideoPlayer) { - player.onVideoPause() - } - } - - }) - carouselLayoutManager.addOnDargAutoDiffListener { adapterPosition, currentPosition -> - val fl = adapterPosition - floor(adapterPosition) - var currentIndex = currentPosition - if (fl > 0.5) { - if (currentPosition == 0) { - currentIndex = rvVideoPlaylist?.adapter!!.itemCount - 1 - } else { - currentIndex -= 1 - } - } - } - val recyclerVideoAdapter = - RecyclerVideoAdapter( - requireContext(), - arrayListOf, - rvVideoPlaylist - ) - recyclerVideoAdapter.setOnThumbImageClilckListener { - val (_, player) = getPlayer(carouselLayoutManager) - if (player is ConsultVideoPlayer) { - player.onVideoReset() - player.thumbImageViewLayout.visibility = View.VISIBLE - } - rvVideoPlaylist?.smoothScrollToPosition(it) - } - rvVideoPlaylist?.layoutManager = carouselLayoutManager - rvVideoPlaylist?.setHasFixedSize(true) - rvVideoPlaylist?.adapter = recyclerVideoAdapter - } - - private fun getPlayer(carouselLayoutManager: CarouselLayoutManager): Pair { - val centerItemPosition: Int = carouselLayoutManager.centerItemPosition - val playerHolder = carouselLayoutManager.findViewByPosition(centerItemPosition) - val player = playerHolder?.findViewById(R.id.video_item_player) - return Pair(centerItemPosition, player) - } - - private fun setBackageAndPlayNext(taxiPassengerVideoPlay: TaxiPassengerVideoPlay) { - // 设置背景图片 - } - - private fun initConsultData() { - arrayListOf.clear() - arrayListOf.add( - TaxiPassengerVideoPlay( - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708596763/全车型混剪增加红旗车队.m4v", - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969511280/车队.png", - "蘑菇车联覆盖生活的方方面面" - ) - ) - arrayListOf.add( - TaxiPassengerVideoPlay( - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708554279/红旗车队.m4v", - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969553174/红旗重新排版.png", - "蘑菇车联之红旗车队" - ) - ) - arrayListOf.add( - TaxiPassengerVideoPlay( - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708499497/大运会合作解说版.m4v", - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969536177/大运会.png", - "蘑菇车联牵手成都大运会" - ) - ) - arrayListOf.add( - TaxiPassengerVideoPlay( - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655708409810/20210610重新排版3屏.m4v", - "https://img.zhidaohulian.com/fileServer/online_car_hailing/1655969579713/三屏.png", - "多视角体验蘑菇车联自动驾驶" - ) - ) - } - - override fun createPresenter(): BusPassengerFunctionVideoPresenter { - return BusPassengerFunctionVideoPresenter(this) - } - - companion object { - const val TAG = "M1VideoFragment" - @JvmStatic - fun newInstance(): M1VideoFragment { - val args = Bundle() - val fragment = M1VideoFragment() - fragment.arguments = args - return fragment - } - } -} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_car_light.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_car_light.png new file mode 100644 index 0000000000..3d4acc9951 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_car_light.png differ diff --git a/OCH/charter/passenger/src/main/res/layout/m1_devices_lock_unlock.xml b/OCH/charter/passenger/src/main/res/layout/m1_devices_lock_unlock.xml index e93bed67c9..6fcb95f3fe 100644 --- a/OCH/charter/passenger/src/main/res/layout/m1_devices_lock_unlock.xml +++ b/OCH/charter/passenger/src/main/res/layout/m1_devices_lock_unlock.xml @@ -32,6 +32,7 @@ android:id="@+id/aciv_screen_unlock_ani" android:layout_width="@dimen/dp_90" android:layout_height="@dimen/dp_90" + android:src="@drawable/open_lock_000" app:layout_constraintTop_toTopOf="@+id/aciv_screen_lock_bg" app:layout_constraintBottom_toBottomOf="@+id/aciv_screen_lock_bg" app:layout_constraintStart_toStartOf="@+id/aciv_screen_lock_bg" 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 34c8d162de..e3fcc1ec3a 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 @@ -19,6 +19,7 @@ android:layout_height="match_parent" app:bottomPadding="200" app:carDrawable="@drawable/bug_p_overmap_car_model" + app:compassDrawable="@drawable/charter_p_car_light" app:isClearArrived="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/OCH/charter/passenger/src/main/res/values/color.xml b/OCH/charter/passenger/src/main/res/values/color.xml index c0a5c39c1e..cbf9937b31 100644 --- a/OCH/charter/passenger/src/main/res/values/color.xml +++ b/OCH/charter/passenger/src/main/res/values/color.xml @@ -50,6 +50,7 @@ #91EFF6FF #CCFFFFFF #80FFFFFF + #40FFFFFF #F0E0EFFF #66000000 \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml index 4d066ea65d..2c0db1f901 100644 --- a/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml +++ b/OCH/mogo-och-bus/src/main/res/layout/bus_base_fragment.xml @@ -151,16 +151,6 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - - - - + + + + \ No newline at end of file diff --git a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml index 8cb712a588..70e98f5895 100644 --- a/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml +++ b/OCH/mogo-och-noop/src/main/res/layout/och_noop_fragment_hmi.xml @@ -131,16 +131,6 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" /> - - - - - - ?) //轨迹路线集合 : BaseData() { diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt index acdb82c09f..af7fff7577 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiModel.kt @@ -65,6 +65,7 @@ import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.bean.ContrailListRespBean import com.mogo.och.taxi.bean.OrderDetail import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean +import com.mogo.och.taxi.bean.Site import com.mogo.och.taxi.bean.StartServiceRespBean import com.mogo.och.taxi.callback.IOCHTaxiAutopilotPlanningCallback import com.mogo.och.taxi.callback.ITaxiADASStatusCallback @@ -271,6 +272,11 @@ object TaxiModel { return valueOf(order.orderStatus) } + fun getCurTaskStatus(): Int? { + if (mCurrentTaskAndOrder == null) TaskStatusEnum.None + return mCurrentTaskAndOrder?.currentStatus + } + fun getCurTaskAndOrder(): QueryCurrentTaskRespBean.Result? { return mCurrentTaskAndOrder } @@ -371,7 +377,7 @@ object TaxiModel { } } - //检测当前订单 + //检测当前任务 fun checkCurrentTask(): Boolean { return mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.startSite != null && mCurrentTaskAndOrder!!.endSite != null @@ -477,10 +483,10 @@ object TaxiModel { val parameters = AutopilotControlParameters() - val startWgsLon = mCurrentTaskAndOrder!!.startSite!!.gcjLon - val startWgsLat = mCurrentTaskAndOrder!!.startSite!!.gcjLat - val endWgsLon = mCurrentTaskAndOrder!!.endSite!!.gcjLon - val endWgsLat = mCurrentTaskAndOrder!!.endSite!!.gcjLat + val startWgsLon = mCurrentTaskAndOrder!!.startSite!!.wgs84Lon + val startWgsLat = mCurrentTaskAndOrder!!.startSite!!.wgs84Lat + val endWgsLon = mCurrentTaskAndOrder!!.endSite!!.wgs84Lon + val endWgsLat = mCurrentTaskAndOrder!!.endSite!!.wgs84Lat parameters.vehicleType = BUSINESSTYPE parameters.startName = mCurrentTaskAndOrder!!.startSite!!.siteName // 8.10 拼音首字母大写 改为直接传中文 parameters.endName = mCurrentTaskAndOrder!!.endSite!!.siteName // 8.10 拼音首字母大写 改为直接传中文 @@ -679,10 +685,10 @@ object TaxiModel { //3、刚过站且过站距离在15m内, 提交到站 if (stationAngle > 90 && distance <= TaxiUnmannedConst.ARRIVE_AT_START_STATION_DISTANCE) { - if ((!checkCurrentOrder() - || (getCurOrderStatus() === TaxiOrderStatusEnum.ArriveAtEnd)) + if ((!checkCurrentTask() + || (getCurTaskStatus() == TaskStatusEnum.StartTask.code)) ) { - i(SceneConstant.M_TAXI + TAG, "order exception or order ArriveAtEnd") + i(SceneConstant.M_TAXI + TAG, "task null or TaskStatus = ${getCurTaskStatus()}") return } i(SceneConstant.M_TAXI + TAG, "judgeEndStation() = 刚过站且在15m内") @@ -720,16 +726,6 @@ object TaxiModel { } arriveSite(mUntruthTask!!.siteId, false) } - /** - * 订单流转debug START - */ - fun setArriveAtStartStation() { - if (!checkCurrentTask()) { - ToastUtils.showShort("订单状态不匹配该操作!") - return - } - arriveSite(mCurrentTaskAndOrder?.startSite!!.siteId, false) - } fun setArriveAtEndStation() { if (!checkCurrentTask()) { @@ -744,7 +740,14 @@ object TaxiModel { ToastUtils.showShort("无任务!") return } - mCurrentTaskAndOrder?.lineId?.let { startTask(it) } + + //当前订单状态若为20 , 则使用的lineId为订单信息的 + mCurrentTaskAndOrder?.let { startTask( + if (it.order != null && it.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code) + it.order!!.orderLine + else + it.lineId + ) } } /** diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt index 2e1621aaf4..aec65e3446 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/model/TaxiUnmannedViewModel.kt @@ -13,6 +13,7 @@ import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.common.module.biz.constant.LoginStatusManager +import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.utils.ToastUtilsOch import com.mogo.och.common.module.voice.VoiceNotice @@ -29,6 +30,7 @@ import com.mogo.och.taxi.constant.TaskTypeEnum import com.mogo.och.taxi.constant.TaxiOrderStatusEnum import com.mogo.och.taxi.constant.TaxiUnmannedConst import com.mogo.och.taxi.constant.TaxtServingStatusManager +import com.mogo.och.taxi.constant.TaxtServingStatusManager.isOpeningOrderStatus import com.mogo.och.taxi.network.CarServiceManager import com.mogo.och.taxi.network.CarServiceManager.cancelOrder import com.mogo.och.taxi.network.CarServiceManager.contrailList @@ -270,6 +272,7 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } private fun queryCurrentTaskOnce(){ + if (!LoginStatusManager.isLogin()) return // 未登陆则不去查询 CarServiceManager.queryCurrentTask(AbsMogoApplication.getApp().applicationContext, object : OchCommonServiceCallback { override fun onSuccess(data: QueryCurrentTaskRespBean?) { @@ -287,13 +290,14 @@ class TaxiUnmannedViewModel : BaseViewModel(){ if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.order!= null && result != null && result.order == null) { //本地根据订单 orderNo 去查询下(乘客取消订单) + d(TAG, "queryCurrentTaskOnce1 = result order is empty, query order by orderNo!") queryCurrentOrderStatusByNo(mCurrentTaskAndOrder!!.order!!.orderNo) return } //订单或者伪任务更新, 都去刷新下界面 if (mCurrentTaskAndOrder == null || !mCurrentTaskAndOrder!!.equals(result)){ - + d(TAG, "queryCurrentTaskOnce1 = mCurrentTaskAndOrder update " ) if (result == null) return if (result.endSite == null && result.order == null){ @@ -302,32 +306,45 @@ class TaxiUnmannedViewModel : BaseViewModel(){ TaxiModel.updateCurrentTaskAndOrder(null) } + //当前任务完成且订单状态到达乘客上车点, 则立马去拉取任务 不再等30s,否则送驾任务要等30s后才能去执行 if (result.currentStatus == TaskStatusEnum.CompleteTask.code){ - startPrepareTask(result.endSite!!.siteId) + if (result.order != null && result.order!!.orderStatus + == TaxiOrderStatusEnum.ArriveAtStart.code){ + pullTask(result.endSite!!.siteId) + d(TAG, "queryCurrentTaskOnce1 = pullTask" ) + + }else{ + startPrepareTask30S(result.endSite!!.siteId) + d(TAG, "queryCurrentTaskOnce1 = startPrepareTask30S" ) + + } } mCurrentTaskAndOrder = result TaxiModel.updateCurrentTaskAndOrder(result) TaxiModel.updateStation() updateTaskAndOrderUi() - if (result.order != null && result.order!!.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){ - queryCurrentOrderStatusByNo(mCurrentTaskAndOrder!!.order!!.orderNo) //查询全程里程和用时,更新 + d(TAG, "queryCurrentTaskOnce1 = ArriveAtEnd query mileage and duration") + queryCurrentOrderStatusByNo(result.order!!.orderNo) //查询全程里程和用时,更新 } //根据lineId集合去查轨迹集合, 返回的只是接驾任务的line集合,没有送驾任务 if (result.order != null && result.order!!.orderStatus <= TaxiOrderStatusEnum.OnTheWayToEnd.code){ var lines = result.order!!.planningLines - lines[lines.size] = result.order!!.orderLine + lines = lines.plus(result.order!!.orderLine) + d(TAG, "queryCurrentTaskOnce1 = by lineIds query Contrails" ) queryOrderPickUpContrails(lines) } if (result.currentStatus <= TaskStatusEnum.StartTask.code){//任务执行中, 去加载下轨迹 + d(TAG, "queryCurrentTaskOnce1 = by lineId query Contrail" ) TaxiModel.queryTaskContrail(Array(1) {result.lineId}) } if (result.taskType <= TaskTypeEnum.ToOrderStartTask.code && result.currentStatus == TaskStatusEnum.GetTask.code){//自动去启动自驾 + d(TAG, "queryCurrentTaskOnce1 = autoStartDriving" ) TaxiModel.autoStartDriving() } } @@ -367,21 +384,25 @@ class TaxiUnmannedViewModel : BaseViewModel(){ queryCarOrderByOrderNo(mContext,orderNo, object : OchCommonServiceCallback{ override fun onSuccess(data: QueryCarOrderByNoRespBean?) { - if (data != null && data.code != 0) return - if (data!!.orderStatus == TaxiOrderStatusEnum.Cancel.code){ + d(SceneConstant.M_TAXI + TAG, "queryCurrentOrderStatusByNo data = " + + GsonUtil.jsonFromObject(data)) + if (data == null || data.code != 0) return + if (data.data.orderStatus == TaxiOrderStatusEnum.Cancel.code){ VoiceNotice.showNotice("乘客已经取消") mCurrentTaskAndOrder = null - updateTaskAndOrderUi() + updateNoTaskAndOrderUi() + TaxiModel.cancelAutopilot() return } - if (data.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){//到站 - updateOrderMileAndDur(data.mileage,data.duration) + if (data.data.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code){//到站 + //结束导航 + updateOrderMileAndDur(data.data.mileage,data.data.duration.toInt()) return } - if (data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code){//完成 + if (data.data.orderStatus == TaxiOrderStatusEnum.JourneyCompleted.code){//完成 //获取新的任务 if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.endSite != null){ - startPrepareTask(mCurrentTaskAndOrder!!.endSite!!.siteId) + startPrepareTask30S(mCurrentTaskAndOrder!!.endSite!!.siteId) } mCurrentTaskAndOrder = null updateNoTaskAndOrderUi() @@ -407,28 +428,37 @@ class TaxiUnmannedViewModel : BaseViewModel(){ } } - private fun startPrepareTask(siteId: Long) { + private fun startPrepareTask30S(siteId: Long) { UiThreadHandler.postDelayed({ - CarServiceManager.prepareTask( - mContext, - siteId, - object : OchCommonServiceCallback { - override fun onSuccess(data: PrepareTaskRespBean?) { - d(SceneConstant.M_TAXI + TAG, "prepareTask = " + GsonUtil.jsonFromObject(data)) - if (data == null || data.code != 0) return - //去下载轨迹, 下发给工控机下载 - TaxiModel.queryTaskContrail(Array(1) {data.data.lineId}) - } - - override fun onFail(code: Int, msg: String?) { - d(SceneConstant.M_TAXI + TAG, "$code $msg") - startPrepareTask(siteId) //失败后30s再次调用获取下一任务 - } - - }) + if (isLogin() && isOpeningOrderStatus()){ + pullTask(siteId) + } }, TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL) } + private fun pullTask(siteId: Long) { + CarServiceManager.prepareTask( + mContext, + siteId, + object : OchCommonServiceCallback { + override fun onSuccess(data: PrepareTaskRespBean?) { + d(SceneConstant.M_TAXI + TAG, "prepareTask = " + GsonUtil.jsonFromObject(data) + + ", isOpeningOrderStatus = ${isOpeningOrderStatus()}") + if (data?.data == null || data.code != 0) return + //去下载轨迹, 下发给工控机下载 + TaxiModel.queryTaskContrail(Array(1) {data.data!!.lineId}) + } + + override fun onFail(code: Int, msg: String?) { + d(SceneConstant.M_TAXI + TAG, "$code $msg") + if (isLogin() && isOpeningOrderStatus()){ + startPrepareTask30S(siteId) //失败后30s再次调用获取下一任务 + } + } + + }) + } + private fun startInAndWaitCurrentTaskLoop() { if (mInAndWaitServiceDisposable != null && !mInAndWaitServiceDisposable!!.isDisposed) { diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt index eb0a4e845e..b4f332339f 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/network/CarServiceManager.kt @@ -128,7 +128,7 @@ object CarServiceManager { mOCHTaxiServiceApi.queryCarOrderByOrderNo( data = QueryCarOrderByNoReqBean(MoGoAiCloudClientConfig.getInstance().sn, orderNo) ).transformTry() - .subscribe(OchCommonSubscribeImpl(context, callback, "jumpPassengerCheck")) + .subscribe(OchCommonSubscribeImpl(context, callback, "queryCarOrderByOrderNo")) } /** diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt index 16cf6736db..2329599eb3 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiBeingTaskFragment.kt @@ -9,7 +9,6 @@ import android.os.Bundle import android.text.Html import android.view.View import androidx.annotation.RequiresApi -import androidx.core.text.HtmlCompat import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.amap.api.navi.model.NaviLatLng @@ -19,8 +18,10 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02 import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getOverlayManager +import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI import com.mogo.eagle.core.utilcode.util.DateTimeUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.UiThreadHandler @@ -35,7 +36,6 @@ import com.mogo.och.common.module.voice.VoiceNotice.showNotice import com.mogo.och.common.module.wigets.OCHCommitDialog import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.OrderDetail -import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.bean.StartServiceRespBean import com.mogo.och.taxi.constant.TaskStatusEnum @@ -51,12 +51,14 @@ import com.mogo.och.taxi.ui.unmanned.TaskAndOrderUiState import com.mogo.och.taxi.ui.unmanned.UnmannedIntent import kotlinx.android.synthetic.main.taxi_no_data_common_view.noOrderDataTv import kotlinx.android.synthetic.main.unmanned_being_order.cancelOrder +import kotlinx.android.synthetic.main.unmanned_being_order.endPoint import kotlinx.android.synthetic.main.unmanned_being_order.endStationName import kotlinx.android.synthetic.main.unmanned_being_order.mBeingOrderLayout import kotlinx.android.synthetic.main.unmanned_being_order.naviToEnd import kotlinx.android.synthetic.main.unmanned_being_order.naviToStart import kotlinx.android.synthetic.main.unmanned_being_order.noTaskData import kotlinx.android.synthetic.main.unmanned_being_order.orderPhoneAndNum +import kotlinx.android.synthetic.main.unmanned_being_order.startPoint import kotlinx.android.synthetic.main.unmanned_being_order.startStationName import kotlinx.android.synthetic.main.unmanned_being_order.taskClickBtn import kotlinx.android.synthetic.main.unmanned_being_order.taskOtherInfo @@ -135,7 +137,7 @@ class TaxiBeingTaskFragment : BaseFragment(), updateUntruthTask(taskAndOrderUiState.untruthTask) }else{ updateReserveOrderChanged(taskAndOrderUiState.taskAndOrder) - updateCurrentOrderStatusChanged(taskAndOrderUiState.taskAndOrder) + updateCurrentTaskAndOrderStatusChanged(taskAndOrderUiState.taskAndOrder) } } @@ -150,7 +152,7 @@ class TaxiBeingTaskFragment : BaseFragment(), @RequiresApi(Build.VERSION_CODES.N) private fun updateOrderTotalMilAndDur(mileage: Float, duration: Int) { val strHtml2 = - ("总里程 " + " $mileage " + " 公里 " + ("全程 " + " $mileage " + " 公里 " + ",总用时 " + " $duration " + " 分钟") taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY) } @@ -185,6 +187,17 @@ class TaxiBeingTaskFragment : BaseFragment(), taskStatus.text = resources.getString(R.string.task_start_to_virtual_site) startStationName.text = resources.getString(R.string.task_current_loc) endStationName.text = siteName + setPointBlueGreen() + } + + private fun setPointBlueGreen(){ + startPoint.setImageResource(R.drawable.taxi_driver_circle_blue_big) + endPoint.setImageResource(R.drawable.taxi_driver_circle_green_big) + } + + private fun setPointGreenBlue(){ + startPoint.setImageResource(R.drawable.taxi_driver_circle_green_big) + endPoint.setImageResource(R.drawable.taxi_driver_circle_blue_big) } private fun updateUntruthTaskView() { @@ -236,7 +249,7 @@ class TaxiBeingTaskFragment : BaseFragment(), */ @RequiresApi(Build.VERSION_CODES.N) @SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables") - fun updateCurrentOrderStatusChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) { + fun updateCurrentTaskAndOrderStatusChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) { if (taskAndOrder == null) return if (taskAndOrder.endSite == null && taskAndOrder.order == null){ isHaveBeingOrder(false) @@ -265,6 +278,7 @@ class TaxiBeingTaskFragment : BaseFragment(), updateUIShowStatus(taskType,currentStatus,order) when (taskType) { + TaskTypeEnum.VirtualTask.code -> {// 演练任务 if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code){ updateOrderUI(order) @@ -277,6 +291,7 @@ class TaxiBeingTaskFragment : BaseFragment(), taskTypeTv.text = resources.getString(R.string.task_exercise) startStationName.text = startSite.siteName endStationName.text = endSite.siteName + setPointBlueGreen() } TaskTypeEnum.ToOrderEndTask.code,TaskTypeEnum.ToOrderStartTask.code -> {// 送驾/接驾任务任务 if (order == null) return @@ -289,16 +304,81 @@ class TaxiBeingTaskFragment : BaseFragment(), } } + updateMapMarkers() + updateRemainDistanceAndTime(false) } + private fun updateMapMarkers() { + if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.startSite != null + && mCurrentTaskAndOrder!!.endSite != null ) { + when(mCurrentTaskAndOrder!!.currentStatus){ + TaskStatusEnum.GetTask.code -> { + setOrRemoveMapMaker( + true, + TAXI_START_MAP_MAKER, + mCurrentTaskAndOrder!!.startSite!!.wgs84Lat, + mCurrentTaskAndOrder!!.startSite!!.wgs84Lon, + R.raw.star_marker + ) + setOrRemoveMapMaker( + true, + TAXI_END_MAP_MAKER, + mCurrentTaskAndOrder!!.endSite!!.wgs84Lat, + mCurrentTaskAndOrder!!.endSite!!.wgs84Lon, + R.raw.end_marker + ) + } + + TaskStatusEnum.StartTask.code -> { + setOrRemoveMapMaker( + false, + TAXI_START_MAP_MAKER, + mCurrentTaskAndOrder!!.startSite!!.wgs84Lat, + mCurrentTaskAndOrder!!.startSite!!.wgs84Lon, + R.raw.star_marker + ) + setOrRemoveMapMaker( + true, + TAXI_END_MAP_MAKER, + mCurrentTaskAndOrder!!.endSite!!.wgs84Lat, + mCurrentTaskAndOrder!!.endSite!!.wgs84Lon, + R.raw.end_marker + ) + } + + TaskStatusEnum.CompleteTask.code -> { + setOrRemoveMapMaker( + false, + TAXI_START_MAP_MAKER, + mCurrentTaskAndOrder!!.startSite!!.wgs84Lat, + mCurrentTaskAndOrder!!.startSite!!.wgs84Lon, + R.raw.star_marker + ) + setOrRemoveMapMaker( + false, + TAXI_END_MAP_MAKER, + mCurrentTaskAndOrder!!.endSite!!.wgs84Lat, + mCurrentTaskAndOrder!!.endSite!!.wgs84Lon, + R.raw.end_marker + ) + } + + } + + + }else{ + d(M_TAXI + TAG,"CurrentTaskAndOrder == "+GsonUtil.jsonFromObject(mCurrentTaskAndOrder)) + } + } + @RequiresApi(Build.VERSION_CODES.N) private fun updateOrderUI(order: OrderDetail) { taskTypeTv.text = resources.getString(R.string.task_order) taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg,null) orderPhoneAndNum.text = Html.fromHtml(" " + order.bookingUserPhone + "" + - " | " + + " | " + "" + order.passengerSize + "人" + "",Html.FROM_HTML_MODE_LEGACY) startStationName.text = order.orderStartSite?.siteName endStationName.text = order.orderEndSite?.siteName @@ -309,81 +389,32 @@ class TaxiBeingTaskFragment : BaseFragment(), isHaveBeingOrder(false) } - TaxiOrderStatusEnum.Cancel.code -> { //取消 - updateOrderBottomBtn( - taskClickBtn.text.toString(), - Color.parseColor("#4DFFFFFF"), - Color.parseColor("#4D1D5EF3"), - false - ) - taskTypeTv.background = resources.getDrawable(R.drawable.task_cancel_type_btn_bg,null) - taskTypeTv.text = resources.getString(R.string.passenger_cancel_order) - onCurrentOrderCancelDone() - hideNavi() - } - TaxiOrderStatusEnum.ArriveAtEnd.code -> { //到达目的地 taskStatus.text = resources.getString(R.string.task_start_end_site) - + setPointBlueGreen() updateOrderBottomBtn( getString(R.string.module_och_taxi_order_server_end), Color.parseColor("#FFFFFF"), Color.parseColor("#FF1D5EF3"), true ) - - order.orderStartSite?.let { - setOrRemoveMapMaker( - false, - TAXI_START_MAP_MAKER, - it.gcjLat, - it.gcjLon, - R.raw.star_marker - ) - } - order.orderEndSite?.let { - setOrRemoveMapMaker( - false, - TAXI_END_MAP_MAKER, - it.gcjLat, - it.gcjLon, - R.raw.end_marker - ) - } hideNavi() } + TaxiOrderStatusEnum.OnTheWayToEnd.code -> { //送驾中 taskStatus.text = resources.getString(R.string.task_start_end_site) + setPointBlueGreen() updateOrderBottomBtn( getString(R.string.module_och_taxi_order_close), Color.parseColor("#FFFFFF"), Color.parseColor("#FF1D5EF3"), true ) - - order.orderStartSite?.let { - setOrRemoveMapMaker( - false, - TAXI_START_MAP_MAKER, - it.gcjLat, - it.gcjLon, - R.raw.star_marker - ) - } - order.orderEndSite?.let { - setOrRemoveMapMaker( - true, - TAXI_END_MAP_MAKER, - it.gcjLat, - it.gcjLon, - R.raw.end_marker - ) - } - } + TaxiOrderStatusEnum.UserArriveAtStart.code,TaxiOrderStatusEnum.ArriveAtStart.code -> { //乘客到达上车点,验证成功 ; 到达乘客上车点 - + setPointGreenBlue() taskStatus.text = resources.getString(R.string.arrived_start_site) updateOrderBottomBtn( if (order.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.code) @@ -395,54 +426,18 @@ class TaxiBeingTaskFragment : BaseFragment(), ) updateOtherInfo() - - order.orderStartSite?.let { - setOrRemoveMapMaker( - true, - TAXI_START_MAP_MAKER, - it.gcjLat, - it.gcjLon, - R.raw.star_marker - ) - } - order.orderEndSite?.let { - setOrRemoveMapMaker( - true, - TAXI_END_MAP_MAKER, - it.gcjLat, - it.gcjLon, - R.raw.end_marker - ) - } hideNavi() } TaxiOrderStatusEnum.OnTheWayToStart.code -> { //前往上车地点 taskStatus.text = resources.getString(R.string.task_start_start_site) + setPointGreenBlue() updateOrderBottomBtn( getString(R.string.module_och_taxi_order_server_start), Color.parseColor("#4DFFFFFF"), Color.parseColor("#4D1D5EF3"), false ) - order.orderStartSite?.let { - setOrRemoveMapMaker( - true, - TAXI_START_MAP_MAKER, - it.gcjLat, - it.gcjLon, - R.raw.star_marker - ) - } - order.orderEndSite?.let { - setOrRemoveMapMaker( - true, - TAXI_END_MAP_MAKER, - it.gcjLat, - it.gcjLon, - R.raw.end_marker - ) - } } } @@ -540,21 +535,15 @@ class TaxiBeingTaskFragment : BaseFragment(), AmapNaviToDestinationModel.getInstance(context).setOCHTaciNaviChangedCallback(this) } - private fun showOrHideNavi() { - naviToStart.visibility = View.GONE - naviToEnd.visibility = View.GONE - AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() - mTaxiFragment?.showAmapNaviToStationFragment(false) - mTaxiFragment?.showRoutingToStationFragment(false) - } - /** * 剩余里程和剩余时间 * @param meters m * @param timeInSecond 秒 */ + @RequiresApi(Build.VERSION_CODES.N) fun updateDistanceAndTime(meters: Long, timeInSecond: Long) { // CallerLogger.INSTANCE.d(M_TAXI + TAG,"meters = "+meters+"timeInSecond ="+timeInSecond); + if (mCurrentTaskAndOrder == null) return if (mCurrentTaskAndOrder!!.endSite == null && mCurrentUntruthTask == null) return var dis = "0" @@ -573,7 +562,7 @@ class TaxiBeingTaskFragment : BaseFragment(), ("里程 " + "" + dis + "" + " " + disUnit + "" + ",剩余 " + "" + min + "" + " 分钟") - taskOtherInfo.text = HtmlCompat.fromHtml(strHtml2, HtmlCompat.FROM_HTML_MODE_LEGACY) + taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY) } private fun speekVoice200mTipsOnce() { @@ -581,25 +570,6 @@ class TaxiBeingTaskFragment : BaseFragment(), showNotice(resources.getString(R.string.module_och_taxi_order_arrive_end_200m_tip)) } - @RequiresApi(Build.VERSION_CODES.N) - fun onCurrentOrderRouteInfoGot(routeInfo: OrderQueryRouteInfoRespBean.Result?) { // 单位 米, 秒 - if (routeInfo == null) return - d(SceneConstant.M_TAXI + TAG, "durationToEnd = " + routeInfo.durationToEnd) - var dis = "0" - val distance = routeInfo.distanceToEnd - val duration = routeInfo.durationToEnd - if (routeInfo.distanceToEnd > 0) { - dis = NumberFormatUtil.formatLong(distance.toDouble() / 1000) - } - val strHtml2 = - ("全程 " + "" + dis + "" + " 公里" - + ",总用时 " + "" + ceil( - duration.toDouble() / 60 - ).toInt() + "" + " 分钟") - - taskOtherInfo.text = Html.fromHtml(strHtml2,Html.FROM_HTML_MODE_LEGACY) - } - override fun onDestroyView() { super.onDestroyView() AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() @@ -646,10 +616,6 @@ class TaxiBeingTaskFragment : BaseFragment(), closeOrderDialog.show() } - private fun clearOrderTag() { - taskOtherInfo.text = "距离 - - 公里,用时 - - 分" - } - /** * 是否有正在进行的订单,进行UI显示 * @@ -669,6 +635,7 @@ class TaxiBeingTaskFragment : BaseFragment(), noOrderDataTv.text = "暂无进行中订单" mBeingOrderLayout.visibility = View.GONE } + } catch (e: NullPointerException) { //可能会出现订单信息已经轮询回来,但进行中页面控件还未初始化完成的情况 TaxiModel.clearCurrentOCHOrder() } @@ -700,33 +667,6 @@ class TaxiBeingTaskFragment : BaseFragment(), mTaxiFragment?.startNaviToEndStation(isShow) } - private fun onCurrentOrderCancelDone() { - //去除起终点 - if (mCurrentTaskAndOrder != null && mCurrentTaskAndOrder!!.startSite != null - && mCurrentTaskAndOrder!!.endSite != null) { - setOrRemoveMapMaker( - false, - TAXI_START_MAP_MAKER, - mCurrentTaskAndOrder!!.startSite!!.gcjLat, - mCurrentTaskAndOrder!!.startSite!!.gcjLon, - R.raw.star_marker - ) - setOrRemoveMapMaker( - false, - TAXI_END_MAP_MAKER, - mCurrentTaskAndOrder!!.endSite!!.gcjLat, - mCurrentTaskAndOrder!!.endSite!!.gcjLon, - R.raw.end_marker - ) - } - //提交取消订单后的回调 -// ToastUtils.showShort("订单取消成功") - //更新界面 - isHaveBeingOrder(false) - showOrHideNavi() - clearOrderTag() - } - /** * 订单流转debug START */ diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt index 1f5b49a3b2..e725ac4ac4 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/TaxiReserveOrderFragment.kt @@ -74,7 +74,7 @@ class TaxiReserveOrderFragment : BaseFragment() { naviToEnd.visibility = View.GONE orderPhoneAndNum.text = Html.fromHtml(" " + order.bookingUserPhone + "" + - " | " + + " | " + "" + order.passengerSize + "人" + "",Html.FROM_HTML_MODE_LEGACY) diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt index faeade5965..47cf5d0a0f 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt @@ -205,8 +205,6 @@ abstract class BaseTaxiTabFragment> : MvpFragment orderContrails = TaxiModel.INSTANCE.getCurOrderContrails(); - final OrderDetail orderDetail = taskAndOrder.getOrder(); - ContrailListRespBean.Result preloadContrail = null; //预加载的轨迹 if (mAutoPilotLine == null) { mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(curTaskContrail.getLineId(), curTaskContrail.getLineName(), @@ -144,7 +141,7 @@ public class TaxiTrajectoryManager { curTaskContrail.getCsvFileUrlDPQP(), curTaskContrail.getCsvFileMd5DPQP(), curTaskContrail.getTxtFileUrlDPQP(), curTaskContrail.getTxtFileMd5DPQP(), curTaskContrail.getContrailSaveTimeDPQP()); } else { - mAutoPilotLine.setLineId(taskAndOrder.getLineId()); + mAutoPilotLine.setLineId(curTaskContrail.getLineId()); mAutoPilotLine.setLineName(curTaskContrail.getLineName()); mAutoPilotLine.setTrajUrl(curTaskContrail.getCsvFileUrl()); mAutoPilotLine.setTrajMd5(curTaskContrail.getCsvFileMd5()); @@ -159,13 +156,21 @@ public class TaxiTrajectoryManager { mAutoPilotLine.setTimestamp_dpqp(curTaskContrail.getContrailSaveTimeDPQP()); } + final OrderDetail orderDetail = taskAndOrder.getOrder(); + ContrailListRespBean.Result preloadContrail = null; //预加载的轨迹 + final List orderContrails = TaxiModel.INSTANCE.getCurOrderContrails(); + if (orderDetail != null && orderContrails != null && orderContrails.size() != 0 ){ - if (orderContrails.contains(curLineId)){ //预加载轨迹是curLineId索引的下一个 - int index = orderContrails.indexOf(curLineId); - if (orderContrails.size()-1 >= index){ - preloadContrail = orderContrails.get(index); + for (int i = 0; i< orderContrails.size() ; i++){ + if (orderContrails.get(i).getLineId() == curLineId){ //预加载轨迹是curLineId索引的下一个 + int index = i + 1; + if (orderContrails.size()-1 >= index){ + preloadContrail = orderContrails.get(index); + } } - }else {//预加载轨迹直接是集合第一个 + } + if (preloadContrail == null){ + //不包含预加载轨迹直接是集合第一个 preloadContrail = orderContrails.get(0); } } @@ -179,7 +184,7 @@ public class TaxiTrajectoryManager { preloadContrail.getCsvFileUrlDPQP(), preloadContrail.getCsvFileMd5DPQP(), preloadContrail.getTxtFileUrlDPQP(), preloadContrail.getTxtFileMd5DPQP(), preloadContrail.getContrailSaveTimeDPQP()); } else { - mPreAutoPilotLine.setLineId(taskAndOrder.getLineId()); + mPreAutoPilotLine.setLineId(preloadContrail.getLineId()); mPreAutoPilotLine.setLineName(preloadContrail.getLineName()); mPreAutoPilotLine.setTrajUrl(preloadContrail.getCsvFileUrl()); mPreAutoPilotLine.setTrajMd5(preloadContrail.getCsvFileMd5()); @@ -275,6 +280,6 @@ public class TaxiTrajectoryManager { } CallerLogger.INSTANCE.d(M_TAXI + TAG, "sendTrajectoryReq(): common_load = " - + GsonUtils.toJson(mAutoPilotLine) + "pre_load" + GsonUtils.toJson(mPreAutoPilotLine)); + + GsonUtils.toJson(mAutoPilotLine) + ", pre_load" + GsonUtils.toJson(mPreAutoPilotLine)); } } diff --git a/OCH/taxi/mogo-och-taxi-unmanned/src/main/res/layout/taxi_base_fragment.xml b/OCH/taxi/mogo-och-taxi-unmanned/src/main/res/layout/taxi_base_fragment.xml index ff841b0b75..da088b55b4 100644 --- a/OCH/taxi/mogo-och-taxi-unmanned/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/taxi/mogo-och-taxi-unmanned/src/main/res/layout/taxi_base_fragment.xml @@ -5,12 +5,21 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="@dimen/dp_72"> - + + + - - - - - - + app:layout_constraintTop_toBottomOf="@+id/startPoint" + app:layout_constraintBottom_toTopOf="@+id/endPoint" + app:layout_constraintLeft_toLeftOf="@+id/startPoint" + app:layout_constraintRight_toRightOf="@+id/startPoint"/> - + - 自动驾驶状态为0不可用 - 司机端未确认可以开启自动驾驶 网络异常,请稍后重试 请求出现异常,请稍后重试 diff --git a/OCH/taxi/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml b/OCH/taxi/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml index 7eee534d3c..6e58362b02 100644 --- a/OCH/taxi/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/taxi/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml @@ -205,14 +205,6 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - imp @Override public void init(V2XMessageEntity v2XMessageEntity) { try { - V2XBizTrace.Companion.onAck("v2XMessageEntity",GsonUtil.jsonFromObject(v2XMessageEntity)); + V2XBizTrace.Companion.onAck("v2XMessageEntity",v2XMessageEntity); V2XRoadEventEntity v2XRoadEventEntity = v2XMessageEntity.getContent(); if (v2XRoadEventEntity != null) { if (!isSameScenario(v2XMessageEntity)) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/provider/MoGoUpgradeProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/provider/MoGoUpgradeProviderImpl.kt index 483e2a083c..5f9bff95c3 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/provider/MoGoUpgradeProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/provider/MoGoUpgradeProviderImpl.kt @@ -28,7 +28,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = Record(AppUtils.getAppVersionName(), sn, mac, type, isSupportPatch, time = System.currentTimeMillis()) UpgradeDbHelper.insertRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_start" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_start" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -38,7 +38,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = CheckRecord(AppUtils.getAppVersionName(), START, time = System.currentTimeMillis()) UpgradeDbHelper.insertCheckRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_request_start" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_request_start" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -48,7 +48,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = CheckRecord(AppUtils.getAppVersionName(), SUCCESS, response, time = System.currentTimeMillis()) UpgradeDbHelper.insertCheckRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_request_success" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_request_success" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -67,7 +67,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = UpgradeRecord(fromVersionName = AppUtils.getAppVersionName(), toVersionName = newVersionName, fromMd5 = AppUtils.getAppApkMd5(), toMD5 = newMd5, type = getType(type), time = System.currentTimeMillis()) UpgradeDbHelper.insertUpgradeRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_record" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_record" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -77,7 +77,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadStart, downloadUrl = downloadUrl, time = System.currentTimeMillis()) UpgradeDbHelper.insertDownloadRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_download_start" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_download_start" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -87,7 +87,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadPause, downloadUrl = downloadUrl, time = System.currentTimeMillis()) UpgradeDbHelper.insertDownloadRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_download_pause" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_download_pause" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -97,7 +97,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadFailed, failReason = error, downloadUrl = downloadUrl, time = System.currentTimeMillis()) UpgradeDbHelper.insertDownloadRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_download_failed" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_download_failed" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -107,7 +107,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadComplete, downloadUrl = downloadUrl, time = System.currentTimeMillis()) UpgradeDbHelper.insertDownloadRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_download_success" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_download_success" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -117,7 +117,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = InstallStart, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_install_start" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_install_start" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -127,7 +127,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckStart, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_start" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_start" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -137,7 +137,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckFailed, failReason = error, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_failed" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_failed" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -147,7 +147,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckSuccess, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_success" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_check_source_md5_success" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -157,7 +157,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchStart, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_start" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_start" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -167,7 +167,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchFailed, failReason = error, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_failed" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_failed" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -177,7 +177,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchSuccess, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_success" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_apply_patch_success" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -187,7 +187,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckStart, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_start" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_start" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -197,7 +197,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckFailed, failReason = error, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_failed" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_failed" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -207,7 +207,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckSuccess, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_success" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_check_target_md5_success" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -217,7 +217,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { val record = InstallRecord(version = AppUtils.getAppVersionName(), status = InstallFailed, code = code, failReason = error, time = System.currentTimeMillis()) UpgradeDbHelper.insertInstallRecord(record) try { - onUpgradeRecordLinkLog(mapOf("upgrade_install_failed" to GsonUtils.toJson(record))) + onUpgradeRecordLinkLog(mapOf("upgrade_install_failed" to record)) } catch (t: Throwable) { t.printStackTrace() } @@ -249,7 +249,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { itx["step_3"] = all.downloads?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList() itx["step_4"] = all.installs?.let { ArrayList(it) + InstallRecord(success.versionName, InstallSuccess, 0) }?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList() try { - onUpgradeRecordLinkLog(mapOf("upgrade_success" to GsonUtils.toJson(all))) + onUpgradeRecordLinkLog(mapOf("upgrade_success" to all)) } catch (t: Throwable) { t.printStackTrace() } @@ -265,7 +265,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { itx["step_3"] = all.downloads?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList() itx["step_4"] = all.installs?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList() try { - onUpgradeRecordLinkLog(mapOf("upgrade_failed" to GsonUtils.toJson(all))) + onUpgradeRecordLinkLog(mapOf("upgrade_failed" to all)) } catch (t: Throwable) { t.printStackTrace() } @@ -301,5 +301,5 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider { nodeAliasCode = ChainConstant.CHAIN_CODE_UPGRADE_APP, paramIndexes = [0] ) - private fun onUpgradeRecordLinkLog(extra: Map) {} + private fun onUpgradeRecordLinkLog(extra: Map) {} } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 45b4c2e80b..0122f7417c 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -89,6 +89,7 @@ import kotlin.collections.component3 import kotlin.collections.component4 import kotlin.collections.set import kotlin.math.abs +import kotlin.system.exitProcess /** @@ -745,6 +746,9 @@ internal class DebugSettingView @JvmOverloads constructor( CallerAutoPilotControlManager.sendIpcReboot() ToastUtils.showLong("重启命令已发送") } + btnAppReboot.onClick { + killApp() + } //只在司机端设置工控机节点重启功能 if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { btnIpcReboot.visibility = View.GONE @@ -2035,6 +2039,17 @@ internal class DebugSettingView @JvmOverloads constructor( } } + private fun killApp() { + Intent(Intent.ACTION_MAIN).apply { + addCategory(Intent.CATEGORY_HOME) + flags = Intent.FLAG_ACTIVITY_NEW_TASK + context.startActivity(this) + Process.killProcess(Process.myPid()) + exitProcess(0) + } + } + + /** * 初始化上报 */ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index f5cefbfa4e..c377837ecb 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -333,6 +333,16 @@ android:padding="@dimen/dp_20" android:textSize="@dimen/dp_24" /> +